背景
放假在家,感觉用了 zt 延迟很高,根本没法玩,配 moon 的时候 zt 又遇到了奇怪的问题,listpeers 看不到我的公网服务器。于是干脆改用 frp 试试。
原理介绍
我的饥荒服务器在校园网下,我在家没办法直接连接。但是我找出了饥荒的游戏端口(可以通过这里面的第二种方法):
https://www.bilibili.com/read/cv6682974/
让你的一个朋友先 zt 加进游戏,然后你看看端口号,我看到的服务器端口显示的是 11000,于是我知道主世界是 udp 11000。洞穴世界默认是主世界端口号减一,于是推出洞穴世界端口 udp 10999。
公网服务器用 frps (frp server),然后饥荒服务器用 frpc (frp client),配置这两个端口的流量映射即可。配好之后相当于访问公网服务器的这两个端口就是在访问饥荒服务器的对应端口。
操作
公网服务器端
wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz
tar -xzvf frp_0.45.0_linux_amd64.tar.gz
cd frp_0.45.0_linux_amd64
编辑 frps.ini
:
[common]
bind_port = 7000(被占了就换个端口)
token = [相当于你设定的密码]
然后运行 nohup ./frps -c frps.ini &
即可在后台运行。
饥荒服务器端
wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz
tar -xzvf frp_0.45.0_linux_amd64.tar.gz
cd frp_0.45.0_linux_amd64
编辑 frpc.ini
:
[common]
server_addr = [你公网服务器的公网ip]
server_port = 7000(和你服务器写的端口一致)
token = [和你之前写的密码一致]
[dst_master_udp]
type = udp
local_ip = 127.0.0.1
local_port = 11000(和你前面看到的饥荒服务器的主世界端口号一致)
remote_port = 11000
[dst_cave_udp]
type = udp
local_ip = 127.0.0.1
local_port = 10999(一般是主世界端口号减一)
remote_port = 10999
然后运行 nohup ./frpc -c frpc.ini &
即可在后台运行。
如何连接
1、登录进入游戏主页面
2、切换英文输入法,按波浪键“~”调出控制台命令框
3、复制粘贴直连代码,回车
直连代码结构为:c_connect(ip, port, password)
例如: c_connect(“ip”,11000,“password”)
结果
测试感觉比 zt 快多了,延迟属于是不影响玩的水平。
题外话
如果你觉得用 nohup
在后台运行很逊,可以把 frp 配置成 systemd 服务,配置文件示例如下:
[Unit]
Description = frp sclient
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /usr/bin/frpc -c /etc/frpc/frpc.ini
[Install]
WantedBy = multi-user.target