FRP是什么? frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
一、运行FRP的说明
- 你需要有一台固定IP的公网服务器,建议使用固定带宽,因为内网穿透(非P2P模式)走的是公网流量,如果用按流量计费的服务器,内网服务器做网盘等应用会非常浪费流量。
- 一台本地服务器,可以是windows、linux、macOS。
- 公网服务器与本地服务器要打开相应的端口,才能使服务生效。
二、下载FRP
目前可以在 Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。
我们这里公网服务器本地服务器都是CentOS7的环境,所以我们要下载linux的安装文件【frp_0.38.0_linux_amd64.tar.gz】
三、FRP服务端配置
3.1 将FRP放到公网服务器中
解压缩下载的压缩包,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。
3.2 配置公网服务器的FRP文件
只需要配置一个文件 【frps.ini】
[common] bind_port = 7000 token = sdfsfsdfsdfsdfsdfsdf dashboard_port = 7001 dashboard_user = admin dashboard_pwd = admin
参数说明:
bind_port:用于服务器用户接收客户端连接的端口
token:基于 Token 的身份验证方式比较简单,需要在 frpc 和 frps 的 [common]
段落中配置上相同的 token
参数即可。
dashboard_port:启用 Dashboard 监听的本地端口
dashboard_user:HTTP BasicAuth 用户名 (随意设置)
dashboard_pwd: HTTP BasicAuth 密码(随意设置)
dashboard 是用于监控FRP端口运行状态以及流量,设置好 dashboard 后可以通过 指定IP xx.xx.xx.xx:7001访问FRP的服务端仪表盘来查看运行状况。
3.2 启动frps
配置文件编写好后,进入FRP所在目录通过 ./frps -c ./frps.ini 启动服务端
四、FRP客户端配置
将解压缩的文件中的 frpc 拷贝到内网服务所在的机器上
4.1 将FRP放到本地服务器中
4.2 配置公网服务器的FRP文件
只需要配置一个文件 【frpc.ini】
[common] server_addr = xx.xx.xx.xx server_port = 7000 token = sdfsfsdfsdfsdfsdfsdf admin_addr = 192.168.31.3 admin_port = 7002 admin_user = admin admin_pwd = admin [frp-admin] type = tcp local_ip = 192.168.31.3 local_port = 7002 remote_port = 7002 [btPanel] type = tcp local_ip = 127.0.0.1 local_port = 8892 remote_port = 6002
参数说明:
server_addr:连接服务端的地址
server_port:连接服务端的端口
token:鉴权使用的 token 值,需要和服务端设置一样的值才能鉴权通过
admin_addr:启用 AdminUI 监听的本地地址(本地服务器IP地址)
admin_port:启用 AdminUI 监听的本地端口
admin_user:HTTP BasicAuth 用户名
admin_pwd:HTTP BasicAuth 密码
以上的admin_*是开启本地服务器的管理web界面以及设置用户密码
[frp-admin]:仅在 frpc 中使用,用于配置单个代理的参数。代理名称必须唯一,不能重复(配置本地服务器管理 web界面 )
type = tcp:代理类型
local_ip = 192.168.31.3 :需要被代理的本地服务的 IP 地址,可以为所在 frpc 能访问到的任意 IP 地址
local_port = 7002 :本地服务端口,配合 local_ip
remote_port = 7002 :远程访问端口,用户访问此端口的请求会被转发到 local_ip:local_port
[btPanel]:做一个宝塔面板的远程管理
type = tcp : 代理类型
local_ip = 127.0.0.1 :需要被代理的本地服务的 IP 地址,可以为所在 frpc 能访问到的任意 IP 地址
local_port = 8892 : 本地服务端口,配合 local_ip
remote_port = 6002 : 远程访问端口,用户访问此端口的请求会被转发到 local_ip:local_port
4.2 启动frpc
配置文件编写好后,进入FRP所在目录通过 ./frpc -c ./frpc.ini 启动客户端
五、FRP自动启动配置
如果需要在后台长期运行,建议结合其他工具使用,我们这里用 systemd,让FRP自动启动。
5.1 配置服务端自动启动
5.1.1 配置服务端自动启动文件
新建一个服务端配置文件【frps.service】放在/lib/systemd/system/frps.service
[Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=nobody Restart=on-failure RestartSec=5s ExecStart=/frp/frps -c /frp/frps.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target
注意:
ExecStart 这一项根据自己的服务器端FRP实际路径填写即可,我们是放在根目录下的frp文件夹的。
5.1.2 启动服务
systemctl start frps
5.1.3 让服务自动启动
systemctl enable frps
5.1.3 重启服务
systemctl restart frps
注意:每次配置新的代理或者修改代理都需要重启FRPS服务
5.2 配置客户端自动启动
5.2.1 配置服务端自动启动文件
新建一个服务端配置文件【frpc.service】放在/lib/systemd/system/frpc.service
[Unit] Description=Frp Client Service After=network.target [Service] Type=simple User=nobody Restart=on-failure RestartSec=5s ExecStart=/frp/frpc -c /frp/frpc.ini ExecReload=/frp/frpc reload -c /frp/frpc.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target
注意:
ExecStart 与 ExecReload 根据自己的服务器端FRP实际路径填写即可,我们是放在根目录下的frp文件夹的。
5.2.2 启动服务
systemctl start frpc
5.2.3 让服务自动启动
systemctl enable frpc
5.2.3 重启服务
systemctl restart frpc
注意:每次配置新的代理或者修改代表都需要重启FRPC服务
5.3 查看FRP服务是否自动启动
重启公网服务器与本地服务器,重启后运行【ps auxw】查看运行情况
服务端进程包含以下内容说明自动启动服务正常运行
客户端进程包含以下内容说明自动启动服务正常运行
原文链接:https://zhuanlan.zhihu.com/p/433853803?utm_id=0&wd=&eqid=a775561f000abbad0000000464747bca