杂记 | 使用FRP搭建内网穿透服务(新版toml配置文件,搭配反向代理食用)

文章目录

  • 01 需求与回顾
  • 02 下载程序包
  • 03 编辑.toml文件
    • 3.1 编辑frps.toml
    • 3.2 编辑frpc.toml
  • 04 启动服务
    • 4.1 启动服务端
    • 4.2 启动客户端
  • 05 配置反向代理(可选)
  • 06 windows设置为默认启动(可选)
    • 6.1 创建启动脚本
    • 6.2 设置为开机自启


01 需求与回顾

数月前我写过一篇《使用FRP搭建内网穿透服务》的博客,当时用的frp版本为0.49.0,如今随着版本升级,配置方式发生了变化。官网文档地址也发生了变化。

  • 需求场景
    1、有一台云服务器,Linux系统
    2、云服务器有公网ip,公网可以访问
    3、本地电脑是家用笔记本,Windows操作系统
    4、本地电脑没有公网ip,公网无法访问
    需求:将云服务器搭建为一台内网穿透服务器,实现通过外网访问家用电脑(网页)的功能。且即使没有域名也可通过公网ip访问。

  • 项目地址
    GitHub:https://github.com/fatedier/frp
    releases页面:https://github.com/fatedier/frp/releases
    官方文档:https://gofrp.org/zh-cn/

02 下载程序包

前往GitHub Releases页面下载:

在这里插入图片描述
根据自己实际情况选择,我的是x64的windows系统,服务器也是x64架构。选择图中两项。

解压后,在windows端保存frpcfrpc.toml文件,在Linux端保存frpsfrps.toml文件。

03 编辑.toml文件

3.1 编辑frps.toml

服务器端,编辑frps.toml文件:

# frp服务的特定端口,防火墙也需放开该端口
bindPort = 7000
# 自定义的监听的端口,所有对服务器该端口访问将被转发到本地内网,做了反向代理可不处理防火墙放行
vhostHTTPPort = 86

3.2 编辑frpc.toml

客户端,编辑frpc.toml文件:

# 服务器的公网ip
serverAddr = "xxx.xxx.xxx.xxx"
# 7000端口 与frps.toml一致
serverPort = 7000

[[proxies]]
# 自定义名称
name = "web"
# type这里写http
type = "http"
# 本地端口,例如本地启动的服务需要使用8000端口访问,这里就写8000
localPort = 8000
# 服务器的监听端口,与frps.toml一致
remotePort = 86
# 域名或服务器的公网ip,我做了反向代理,这里写的域名
customDomains = ["xxx.xxx.xxx.xxx"]

04 启动服务

4.1 启动服务端

  • 直接启动

    服务器端,传统的启动方式是直接敲命令:

    # 先cd到frps所在目录
    ./frps -c ./frps.toml &
    

    这么写,比较麻烦,而且如果要停止进程也比较麻烦,建议采用构建成服务的方式。

  • 以服务方式启动(推荐)

    安装systemd,通常情况下系统都带得有,没有的情况下使用如下命令安装。

    # 使用 yum 安装 systemd(CentOS/RHEL)
    yum install systemd
    
    # 使用 apt 安装 systemd(Debian/Ubuntu)
    apt install systemd
    

    创建frps.service服务

    # 创建并编辑该文件
    sudo vim /etc/systemd/system/frps.service
    

    写入内容

    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target syslog.target
    Wants = network.target
    
    [Service]
    Type = simple
    # 启动命令,改为实际存放frps的路径
    ExecStart = /path/to/frps -c /path/to/frps.toml
    
    [Install]
    WantedBy = multi-user.target
    

    以服务的方式管理frps

    # 启动frp
    sudo systemctl start frps
    # 停止frp
    sudo systemctl stop frps
    # 重启frp
    sudo systemctl restart frps
    # 查看frp状态
    sudo systemctl status frps
    # 设置为开机自启
    sudo systemctl enable frps
    

4.2 启动客户端

服务端启动之后,在windows客户端的frpc所在目录下,打开cmd命令行,输入命令:

./frpc.exe -c ./frpc.toml

即可启动客户端服务,此时就实现了内网穿透。
假设本地有一个服务需要使用http://127.0.0.1:8000访问,经过内网穿透后,访问http://xxx.xxx.xxx.xxx:86即可。

05 配置反向代理(可选)

使用npm做的反向代理,其他情况的反代参考即可。
在这里插入图片描述
修改图中红框处,此外,还需要做一些额外的设置才能访问。

在这里插入图片描述

 location / {
    # 内网ip及端口
    proxy_pass http://10.0.8.16:86;
    # 这里写frpc.toml中配置的域名或公网ip,即配置内容最下面那行,我写的域名
    proxy_set_header Host xxx.xxx.xxx.xxx;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

06 windows设置为默认启动(可选)

6.1 创建启动脚本

在frpc所在目录下新建一个run.cmd脚本,并写入以下内容:

:@echo off
:%1(start /min cmd.exe /c %0 :&exit)
cd "C:\Users\xxx\Desktop\frp"
ping -n 10 127.1>nul
frpc.exe -c frpc.toml

其中第3行需要替换成自己的frpc所在目录的绝对路径。
第3行是做了一个延时执行,避免刚开机时网络不稳定时连接失败造成脚本退出。

6.2 设置为开机自启

Win+Q搜索“任务计划程序”

打开“任务计划程序”。

  1. 在“操作”菜单中,选择“创建基本任务…”。
  2. 按照向导设置任务。在“触发器”步骤中,选择“当计算机启动时”。
  3. 在“操作”步骤中,选择“启动程序”,然后浏览选择您的批处理文件。
  4. 在“完成”步骤之前,勾选“打开属性对话框以进行进一步编辑”。
    在属性对话框中,可以选择更多选项,比如“不管用户是否登录都要运行”和“以最高权限运行”。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/136899.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java 进阶篇】Java与JQuery选择器:解锁前端开发的魔法大门

在前端开发的世界中,选择器是我们与HTML文档进行互动的钥匙,而Java和JQuery则为我们提供了强大的工具,使得前端开发不再是一个艰深的谜题。本篇博客将围绕Java与JQuery选择器展开,深入解析选择器的奥秘,为你打开前端开…

你一定要学会的Java语法 -- 【继承】

书接上回,我们已经学完了类和对象,今天内容可能有一点难,相信自己能跨过这道坎。 目录 一. 继承 1.什么是继承 2. 继承的概念 3. 继承的语法 4.父类成员访问 子类和父类成员变量同名 子类和父类成员方法同名 5.super关键字 6.子类构…

003、Nvidia Jetson Nano Developer KIT(b01)-深度学习环境配置

之——深度学习环境 杂谈 网上到处淘金,pytorch、opencv、torchvision。 正文 1.各种依赖库 1.1 pytorch的底层依赖库 sudo apt install build-essential make cmake cmake-curses-gui -ysudo apt install git g pkg-config curl -ysudo apt install libatlas-ba…

Java图像编程之:Graphics

一、概念介绍 1、Java图像编程的核心类 Java图像编程的核心类包括: BufferedImage:用于表示图像的类,可以进行像素级的操作。Image:表示图像的抽象类,是所有图像类的基类。ImageIcon:用于显示图像的类&a…

计算机中丢失msvcr120.dll文件怎么修复?找不到msvcr120.dll五种完美修复方案

今天我想和大家分享的是关于“msvcr120.dll丢失的问题的5个解决方法”。在我们日常的工作生活中,或许大家都曾遇到过这样的问题,那么,了解它的解决方法是非常必要的。 首先,让我们来了解一下msvcr120.dll是什么文件。简单来说&am…

“艾迪-东软杯”第六届武汉理工大学新生程序设计竞赛

A.Capoos Acronym Zero 题目描述 yz 和他的朋友 ea 和 zech 一起养了一群 Capoo。 这些 Capoo 非常聪明,但不知道为什么,它们并没有从三人那里学到怎么写算法题,而是出于某种原因开始研究语言学,并发明了一套自己的暗语。这门暗语…

二分图判定和二分图最大匹配

1.二分图的定义 二分图是一种特殊的无向图,它的节点可以被划分为两个互不相交的集合,使得同一集合中的任意两个节点之间没有边相连,而不同集合中的节点之间都有边相连。 换句话说,如果一个无向图可以被划分为两个集合&#xff0…

Keil文本对齐

摘要:通常我们写代码的时候,尤其是缩进和{}的使用,很多都需要自己手动去调整,如果有一个自动格式化代码的工具,每次编辑完代码,然后一键给将代码格式化,即省时又美观。为了解决这个问题&#xf…

面向对象高级

本期对应知识库:(持续更新中!) 面向对象高级 (yuque.com) ​​​​​​​尚硅谷_宋红康_对象内存解析.pptx static 适用于公用变量 开发中,变量 经常把一些常量设置为静态static 例如 PI 方法 经常把工具类中的方…

Deepsort项目详解

一、目标追踪整体代码 代码目录如下图所示: 、 追踪相关代码: 检测相关代码和权重 调用 检测 和 追踪的代码: 首先代码分为三个部分: 目标追踪的相关代码和权重目标检测相关代码和权重,这里用的是yolov5.5目标检…

Thinkphp8 - 连接多个数据库

// 数据库连接配置信息connections > [mysql > [// 数据库类型type > mysql,// 服务器地址hostname > 127.0.0.1,// 数据库名database > thinkphp,// 用户名username > env(DB_USER, root),// 密码password >…

layui 表格(table)合计 取整数

第一步 开启合计行 是否开启合计行区域 table.render({elem: #myTable, url: ../baidui/, page: true, cellMinWidth: 100,totalRow:true,cols: [[ //表头//{ type: checkbox },{ type: checkbox,totalRowText: "合计" },//合计行区域{ field: id, align: center,…

【0基础学Java第九课】-- 抽象类和接口

9. 抽象类和接口 9.1 抽象类9.1.1 抽象类概念9.1.2 抽象类语法9.1.3 抽象类的特性9.1.4 抽象类的作用 9.2 接口9.2.1 接口的概念9.2.2 语法规则9.2.3 接口使用9.2.4 接口特性9.2.5 实现多个接口9.2.6 接口的继承9.2.9 抽象类和接口的区别 9.3 Object类9.3.1 获取对象方法9.3.1 …

基于springboot实现驾校管理系统项目【项目源码】计算机毕业设计

基于springboot实现驾校管理系统演示 JAVA简介 JavaScript是一种网络脚本语言,广泛运用于web应用开发,可以用来添加网页的格式动态效果,该语言不用进行预编译就直接运行,可以直接嵌入HTML语言中,写成js语言&#xff0…

小H靶场学习笔记:DC-2

DC-2 Created: November 10, 2023 3:01 PM Tags: WordPress, git提权, rbash逃逸 Owner: 只会摸鱼 靶场过程 信息收集 扫描存活主机,找到靶机ip:192.168.199.131(本机是192.168.199.129) 扫描端口开放协议 发现有80端口和77…

电路设计之36V 自动断电和防浪涌电路

1. 电路图纸 2. 解释防浪涌功能怎么实现的 1. 首先当电源上电的一瞬间是 电容C1 是相当于短路的。 (电容的充电状态。电容充电相当于短路状态) 2. 当上电的一瞬间是有 浪涌的。 3.当上电的瞬间有浪涌的,此时电容C1 相当于短路,所…

Java学习_对象

对象在计算机中的执行原理 类和对象的一些注意事项 this关键字 构造器 构造器是一种特殊的方法 : 特殊之处在于,名字必须与所在类的名字一样,而且不能写返回值类型 封装 封装的设计规范:合理隐藏、合理暴露 实体类 成员变量和局部变量的区别 …

有源RS低通滤波

常用的滤波电路有无源滤波和有源滤波两大类。若滤波电路元件仅由无源元件(电阻、电容、电感)组成,则称为无源滤波电路。无源滤波的主要形式有电容滤波、电感滤波和复式滤波(包括倒L型、LC滤波、LCπ型滤波和RCπ型滤波等)。若滤波电路不仅有无…

【Redis】list列表

上一篇: String 类型 https://blog.csdn.net/m0_67930426/article/details/134362606?spm1001.2014.3001.5501 目录 Lpush LRange Rpush Lpop Rpop Lindex Ltrim Lset 列表不存在的情况 如果列表存在 Linsert ​编辑 在………之前插入 在……后面插入…

UE地形系统材质混合实现和Shader生成分析(UE5 5.2)

前言 随着电脑和手机硬件性能越来越高,游戏越来越追求大世界,而大世界非常核心的一环是地形系统,地形系统两大构成因素:高度和多材质混合,此篇文章介绍下UE4/UE5 地形的材质混合方案----基于WeightMap混合。 材质层 …