[内网穿透]FRP部署方式和步骤说明

背景

当设备处于无公网IP的内网环境时,实现外网访问需要借助特定工具。当前主流解决方案可分为两大类:

一、内网穿透类工具

​代表方案​​:FRP、NPS

通过建立中继通道将内网服务暴露到公网,需部署服务端(可自建或使用第三方)和客户端程序,但访问端无需特殊配置。

二、虚拟局域网类工具

​代表方案​​:ZeroTier、Tailscale

将分散设备组建逻辑上的虚拟局域网,理论上访问内网设备如同局域网互联。但该方案存在两个显著缺陷:

1.全链路软件依赖​

完整使用需在服务端(公共/自建)、客户端及访问端同时部署软件服务。任何需要访问内网的终端都必须安装专用组网软件,不仅操作繁琐,更无法适配禁止安装第三方软件的封闭设备场景(如企业级IoT设备或公共终端)。

2.​中继传输性能瓶颈​

​当P2P直连打洞失败时,流量将被迫通过服务器中转。此类工具的免费公共服务器普遍存在严重带宽限制(通常仅提供1-10Mbps低速通道),而自建中继服务器的成本与复杂度,反而与直接采用内网穿透方案相当——后者本就支持灵活的自托管服务端部署,且天然具备更可控的传输质量保障。

 

内网穿透类工具的部署也不算复杂:只需准备一台带宽充足的公网服务器,在服务端和客户端分别安装对应软件即可,访问端设备无需任何额外配置。

其中,FRP 是内网穿透工具里较为轻量且易用的代表。接下来将详细介绍 FRP 的具体部署流程与操作步骤。

 

下面将讲解FRP部署方式和步骤。

 

准备工作

1,一台云服务器

建议优先选用高带宽云服务器——当传输数据量较大时,更大的带宽能有效减少数据重新同步的耗时。

我推荐 雨云  (邀请链接 https://www.rainyun.com/wifilu_),本站服务器就是雨云家的湖北十堰高防云服务器。访问速度嘎嘎快。

雨云的服务器带宽大,例如在宁波节点提供起步带宽100Mbps的云服务器,即使在网络高峰时段也能稳定跑满带宽。

如果你通过我的邀请(邀请链接 https://www.rainyun.com/wifilu_  ,邀请码:wifilu )购买云服务器。那么你在部署的过程遇到问题,可以加群咨询我。

目前雨云 有首月半价活动,宁波的 2核2G100M云服务器 首月只需要30元。年付7折。100M带宽对于内网穿透完全够用了。

如果你只是想尝试一下,雨云 也支持1元试用24小时。

 

2,准备一个域名(可选)

如果你希望使用域名访问,那么准备一个域名,并解析到云服务器IP

 

3,了解基本概念

FRP分为服务端(FRPS)和客户端(FRPC),需要你分别搭建。

 

 

服务端搭建

下面只介绍三种常用的搭建方式,其他方式自行探索。

1,直接部署FRPS服务端

适用于空白服务器。

1.1,准备工作

系统请选择Debian12 或者Ubuntu24.04。

请前往 https://github.com/fatedier/frp/releases 下载最新的frp服务端。

绝大部分服务器选择 frp_0.64.0_linux_amd64.tar.gz 这种amd64架构即可。

1.2,上传服务端到服务器并解压

利用ftp或者sftp工具上传文件到服务器并解压。

我上传的目录是  /usr , 解压后的的目录是 /usr/frp_0.64.0_linux_amd64

root@hbgfk2yNjih:/usr/frp_0.64.0_linux_amd64# ls
frpc frpc.toml frps frps.toml LICENSE

1.3,编辑服务端配置文件-frps.toml

使用nano或者vim工具编辑frps.toml 配置文件

bindAddr = "0.0.0.0"
#  FRP 服务端监听所有网卡IP,等待客户端连接
bindPort = 7000 
#  服务端和客户端通信端口-自定义
auth.method = "token" 
#  通信模式
auth.token = "tongxinlingpai" 
#  通信令牌-自定义
vhostHTTPPort = 7001 
#  服务端HTTP端口-自定义
vhostHTTPSPort = 7002 
#  服务端HTTPS端口-自定义

webServer.addr = "0.0.0.0" 
#  监控面板可访问的地址,"0.0.0.0" 表示所有IP均可访问
webServer.port = 7500
# 监控面板服务端口-自定义
webServer.user = "admin" 
# 监控面板服务访问用户名-自定义
webServer.password = "admin20252025" 
# 监控面板服务访问密码-自定义

log.maxDays = 7 
# 日志保存天数-自定义
log.level = "info" 
# 日志级别,可选值为 trace, debug, info, warn, error,默认级别为 info 
log.to = "/usr/frp_0.64.0_linux_amd64/info.log"
# 日志输出文件路径 (根据自己的实际目录填写) 

 

特别说明下http和https端口,大多数情况下你的服务器也是需要架设网站的,所以建议将默认的80和443端口留给Nginx使用,当然你也可以直接把80和443给frp使用

vhostHTTPPort = 80
# 服务端HTTP端口-自定义 
vhostHTTPSPort = 443
# 服务端HTTPS端口-自定义

 

1.4,创建系统服务

使用nano或者vim工具创建frps.service配置文件

nano /etc/systemd/system/frps.service

配置文件如下:

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/frp_0.64.0_linux_amd64/frps -c /usr/frp_0.64.0_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target

管理命令如下

# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps

设置 frps 开机自启动

sudo systemctl enable frps

启动后查看状态如下,表示启动成功

 

1.5,防火墙放行相关端口

ssh中先安装ufw防火墙

apt install ufw -y

再放行以下端口

sudo ufw allow 7000
sudo ufw allow 7001
sudo ufw allow 7002
sudo ufw allow 7500

1.6,查看面板

面板只是用来查看一些统计信息,无法进行任何操作。浏览器访问ip:7500 即可查看。

 

 

2,宝塔面板部署(基于docker)

2.1,准备工作

安装宝塔面板,安装宝塔Docker模块

2.2,安装FRP 服务端应用

2.3,填写frps安装配置

这个配置和直接安装frps大同小异,不过这里不能直接设置通信令牌。

 

2.4,修改通信令牌

安装完成之后需要修改通信令牌,因为宝塔所有的frps通信令牌一样。

进入安装目录

进入data目录,找到frps.toml文件

编辑frps.toml文件

宝塔的FRPS所有的auth.token 通信令牌一样,都是 60d8a83c544e6168db,所以一定要修改

 

修改之后记得重启frps容器

2.5,防火墙

宝塔会帮你自动放行刚才设置中的几个端口。如果没有放行,请参照上文中的 1.5,防火墙放行相关端口 手动放行。

 

2.6,查看面板

面板只是用来查看一些统计信息,无法进行任何操作。浏览器访问ip:7500 即可查看。

 

3,1Panel面板部署(基于docker)

3.1,准备工作

安装1Panel面板,安装好Docker模块

3.2,安装FRP 服务端应用

 

3.3,填写frps安装配置

这个配置和直接安装frps大同小异,不过这里不能直接设置http和https端口。

 

 

3.4,修改HTTP和HTTPS端口

进入安装目录

 

进入data目录,找到frps.toml文件

编辑找到frps.toml文件,设置http和https端口。

在frps.toml文件中,添加如下代码

vhostHTTPPort = 7001 
#  服务端HTTP端口-自定义
vhostHTTPSPort = 7002 
#  服务端HTTPS端口-自定义

 

修改之后记得重启frps容器

 

3.5,防火墙放行相关端口

ssh中先安装ufw防火墙

apt install ufw -y

再放行以下端口

sudo ufw allow 7000
sudo ufw allow 7001
sudo ufw allow 7002
sudo ufw allow 7500

3.6,查看面板

面板只是用来查看一些统计信息,无法进行任何操作。浏览器访问ip:7500 即可查看。

 

 

客户端搭建

下面三种常用的搭建方式,其他方式自行探索。

1,iStoreOS(Openwrt)

这里以iStoreOS系统为例。

普通Openwrt上的设置参数和iStoreOS一样,只是UI排布略有不同,固不作另外说明。

1.1,iStore安装frpc客户端

安装好之后frpc客户端在 服务 菜单中

 

1.2,配置基础信息

打开frpc客户端,基础配置只需要设置3个参数即可

服务器地址:你服务器的IPV4地址,比如:1.1.11.111

服务器端口:你设置的服务端配置文件的bindPort 参数,本文使用的是 7000

令牌:你设置的服务端配置文件的 auth.token 参数,本文使用的是 tongxinlingpai

其他设置参数可以不用填写或者修改。

 

1.3,添加代理项目

在代理设置中点击添加新代理,下面会添加一个TCP和一个HTTP代理作为示例。

 

1.3.1,添加http代理

这里添加一个 远程访问路由器的HTTP代理作为示例。

访问方式是 http://域名:7001  (7001是本文设置的默认http端口)

1.3.1.1,常规设置中设置如下:

代理名称:随意

代理类型:http

本地IP:因为是访问路由器本身,路由器的内网IP是192.168.100.1,所以这里是127.0.0.1

本地端口:因为是访问路由器本身,所以这里是80

1.3.1.2,http选项设置

只需要设置你想要访问的域名即可 。

注意:这个域名需要你DNS解析到云服务器的IP上。

 

设置好之后保存并应用即可。

 

1.3.1.2,http远程访问

浏览器访问 http://域名:7001  (7001是本文设置的默认http端口),就可以访问路由器的管理页面了

如果把80端口留给了frp,那么你直接 http://域名 即可访问。

 

1.3.2,添加tcp代理

这里添加一个 远程访问路由器的tcp代理作为示例。

远程访问方式是 ip:端口

1.3.2.1,常规设置中设置如下:

代理名称:随意

代理类型:tcp

本地IP:因为是访问路由器本身,路由器的内网IP是192.168.100.1,所以这里是127.0.0.1

本地端口:因为是访问路由器本身,所以这里是80

远程端口:这是远程访问的端口,选一个不常用的端口即可,我随机选了个10081

设置好之后保存并应用即可。

1.3.2.2,云服务器放行10080端口

云服务器的ssh中执行

ufw allow 10081

 

1.3.2.3,远程访问

浏览器访问 http://ip:10081,就可以访问路由器的管理页面了

 

用域名访问可以节约端口,因为子域名理论上是无限的,如果你的云服务是共享IP端口较少,可以考虑。

用于端口访问可以省略域名,因为国内服务器域名访问很多时候需要备案。

各有优略根据自己的实际情况选择。

 

 

 

2,飞牛OS或者群晖

这里以飞牛OS为例,群晖和飞牛设置基本一致。

2.1,飞牛的应用中心安装Frpc客户端

 

2.2,桌面打开Frpc图标,编辑配置文件

serverAddr = "1.1.11.111"
# 你的服务器地址,请根据实际情况填写
serverPort = 7000
# 服务端配置文件的bindPort 参数,本文使用的是 7000

auth.method = "token"
auth.token = "tongxinlingpai"
# 服务端配置文件的 auth.token 参数,本文使用的是 tongxinlingpai

loginFailExit=false
#不能删除, 否则连接不上会闪退


# 这是一个http代理的示例,用于访问飞牛
[[proxies]]
name = "飞牛-HTTP"
type = "http"
localIP = "127.0.0.1"
localPort = 5666
# 飞牛的默认HTTP端口,请根据实际情况填写
customDomains = ["fn.wifilu.com"]
# 自定义的域名,需要你做好解析


# 这是一个tcp代理的示例,用于访问飞牛的WebDav服务
[[proxies]]
name = "飞牛_WebDav"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5005
# WebDav的端口,请根据实际情况填写
remotePort = 5005
# 远程WebDav的端口,请根据实际情况填写

需要注意,飞牛代理也可以使用tcp,示例如下

# 这是一个tcp代理的示例,用于访问飞牛
[[proxies]]
name = "飞牛-HTTP"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5666
# 飞牛的默认HTTP端口,请根据实际情况填写
remotePort = 5666
# 远程的访问端口,请根据实际情况填写

 

 

2.3,远程访问测试

浏览器访问 http://域名:7001  (7001是本文设置的默认http端口),就可以访问飞牛的管理页面了

3,Windows

3.1,下载软件

请前往 https://github.com/fatedier/frp/releases 下载最新的frp软件。

绝大部分Windows选择frp_0.64.0_windows_amd64.zip这种amd64架构即可。

需要注意某些防护软件会报风险,请自行判断是否继续。

下载后记得解压。

 

3.2,修改配置文件

修改客户端配置文件 frpc.toml

修改内容请直接参考 飞牛OS的配置文件,完全一致。

 

THE END