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[common] bind_port = 7000 token = sdfsfsdfsdfsdfsdfsdf dashboard_port = 7001 dashboard_user = admin dashboard_pwd = admin
[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[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
[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[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
[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 systemctl start frps
systemctl start frps
5.1.3 让服务自动启动
systemctl enable frpssystemctl enable frps
systemctl enable frps
5.1.3 重启服务
systemctl restart frpssystemctl restart frps
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 [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
[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 systemctl start frpc
systemctl start frpc
5.2.3 让服务自动启动
systemctl enable frpcsystemctl enable frpc
systemctl enable frpc
5.2.3 重启服务
systemctl restart frpc systemctl restart frpc
systemctl restart frpc
注意:每次配置新的代理或者修改代表都需要重启FRPC服务
5.3 查看FRP服务是否自动启动
重启公网服务器与本地服务器,重启后运行【ps auxw】查看运行情况
服务端进程包含以下内容说明自动启动服务正常运行
客户端进程包含以下内容说明自动启动服务正常运行
原文链接:https://zhuanlan.zhihu.com/p/433853803?utm_id=0&wd=&eqid=a775561f000abbad0000000464747bca