这次frp的搭建的起因是这样的,元旦假期和朋友玩星露谷,使用steam自带的联机,掉线很频繁,玩一会必掉线,之后换用游侠对战平台,联机效果也不理想,会存在卡顿等情况,之后还遇到了报错;想到自己还有一台公网服务器,所以一怒之下搭建frp内网穿透进行联机。
下载
需要根据自己的实际情况自行下载,网址为https://github.com/fatedier/frp/releases。
我的服务器为Linux,客户端是Windows,就需要同时下载Linux和Windows的压缩包(在本篇文章发布时,frp版本更新到0.38.0)。
配置
在进行配置之前先看一下frp的目录结构,以Windows为例。
frp_0.38.0_windows_amd64/
├── LICENSE
├── frpc.exe
├── frpc.ini
├── frpc_full.ini
├── frps.exe
├── frps.ini
├── frps_full.ini
└── systemd
├── frpc.service
├── frpc@.service
├── frps.service
└── frps@.service
类似上面结构,Linux与Windows程序中不同的仅为可执行文件的不同。
服务器端
修改frps.ini文件,修改如下:
[common]
bind_udp_port = 8001 # 设置服务器监听UDP端口为8001,可根据需要进行修改
privilege_token = test # 鉴权使用的token值,可根据需要进行修改(客户端与服务端的privilege_token相同才能进行连接,实际环境一定要设置为一个复杂值,此处为方便填入test)
dashboard_port = 8002 # 启用Dashboard监听的端口
dashboard_pwd = test # HTTP BasicAuth 用户名,登录Dashboard时的用户名
dashboard_user = admin # HTTP BasicAuth 密码,登录Dashboard时的密码
enable_prometheus = true # 是否提供 Prometheus 监控接口,需要同时启用了 Dashboard 才会生效
未对服务器监听端口进行设置,默认为7000
,可添加bind_port
参数进行设置端口。
配置完成,运行frps,命令为./frps -c frps.ini
。
客户端
修改frpc.ini,如下:
[common]
server_addr = 服务器IP,根据实际情况修改
bind_udp_port = 8001 # 连接服务端UDP的端口
privilege_token = test # 与服务器中相同
[udp]
type = udp # 设置协议类型为UDP
local_ip = 127.0.0.1 # 设置本机IP
local_port = 24642 # 设置需要进行转发的端口,可根据需求进行修改
remote_port = 8888 # 设置转发到服务器的端口,可根据需求进行修改
其中bind_udp_port
的设置可能不生效,实际还是需要连接到7000端口(不进行配置为默认7000端口),local_port
的24642端口为星露谷联机端口,udp部分的内容为将24642端口UDP协议的数据转发到服务器的8888端口,联机时输入xxx.xxx.xxx.xxx:8888就可以与本机建立连接(xxx.xxx.xxx.xxx为服务器的公网IP或域名)。
配置完成,打开cmd,进入到frp目录下,使用.\frpc.exe -c frpc.ini
运行与服务器建立连接。
ps:如果服务器是阿里云、腾讯云的云服务器,需要在安全组或者是防火墙中将涉及到的服务器端口开放,同时主机的防火墙策略也要设置允许,这里开放的端口为7000、8001、8002、8888,且8888端口允许的协议为UDP。