Frp简单游戏联机

目录
摘要

放假回家想和朋友联机,但是双方网络都是对称型NAT,只能通过FRP 中转流量。

NAT 检测

可以使用NAT Checker这个网站查看自己和朋友的NAT类型。

打洞成功的最重要的一点是,其中一方不是 对称型NAT。如果能打洞自然是打洞更好。 /images/remote/20260114114329842_2967652507055239358.webp

如果双方都是 对称型NAT ,就只能通过 VPS中转流量了。这就用到了FRP。

FRP

frp 是什么?

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

服务端

服务器选择和设置

最好选择国内的 VPS ,看了下论坛,推荐的有 腾讯云的锐驰。

一开始我用的 新加坡的VPS。虽然我和朋友都是移动的宽带,这个新加坡的VPS 国内移动延迟才50 左右,但是使用下来有严重的丢包问题,联机起来经常掉线。 然后就找了另一个朋友借了台阿里云深圳的VPS,使用起来就没问题了。

国内面板有防火墙需要设置下规则 入站允许:

  • 7000/tcp and udp
  • 6000/tcp and udp

出站允许:

  • 允许所有 TCP出站
  • 允许所有 UDP 出站

基础配置

  • 下载:wget 对应的链接:Releases · fatedier/frp。一般是 Linux amd64 版本。
  • 解压:tar -zxvf <fielname>。

进入解压后的文件夹,编辑 frps.toml。

auth.token 换复杂一点。

不需要 web面板 可以把最后四行删掉。

如果使用我的配置需要使用端口转发访问。 如果嫌麻烦可以修改webServer.addr = "127.0.0.1" 这一行为webServer.addr = "0.0.0.0",但是需要最好将 webServer.password 设置成强口令。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# frps.toml
bindPort = 7000
kcpBindPort = 7000

auth.method = "token"
auth.token = ""

webServer.addr = "127.0.0.1"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

运行 ./frps -c ./frps.toml,显示以下信息则启动成功。

1
2
3
4
5
2026-01-13 22:14:03.576 [I] [frps/root.go:115] frps uses config file: ./frps.toml
2026-01-13 22:14:03.675 [I] [server/service.go:241] frps tcp listen on 0.0.0.0:7000
2026-01-13 22:14:03.676 [I] [server/service.go:250] frps kcp listen on udp 0.0.0.0:7000
2026-01-13 22:14:03.676 [I] [frps/root.go:124] frps started successfully
2026-01-13 22:14:03.676 [I] [server/service.go:358] dashboard listen on 127.0.0.1:7500

设置systemd 自启动

1
vim /etc/systemd/system/frps.service

写入以下信息并保存

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[Unit]
Description=FRP Server Service
After=network.target

[Service]
Type=simple
DynamicUser=yes
Restart=always
RestartSec=5s
ExecStart=/opt/frp_0.66.0_linux_amd64/frps -c /opt/frp_0.66.0_linux_amd64/frps.toml
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

为了安全这里不使用 User=nobody,而是 DynamicUser=yes。

重新加载系统配置

1
systemctl daemon-reload

启动 frps 并设置开机自启

1
systemctl enable --now frps

查看运行状态

1
systemctl status frps

实时滚动查看 frps 的日志

1
journalctl -u frps -f

客户端

下载对应的链接:Releases · fatedier/frp。一般是 window amd64 版本。

提示

下载前关闭 Windows defender,Windows defender 会识别反向连接的特征并删除下载的 frp。下载后将 frp 文件夹加入排除项,然后再开启 Windows defender。

进入对应文件夹,编辑 frpc.toml 文件。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# frpc.toml
serverAddr = "<VPS的IP>"
serverPort = 7000

auth.method = "token"
auth.token = "<与前文设置对应的token>"

[transport]
protocol = "kcp"
proxyURL = ""
tcpMux = true
heartbeatInterval = 10
heartbeatTimeout = 30

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = <游戏联机端口>
remotePort = 6000

[[proxies]]
name = "test-udp"
type = "udp"
localIP = "127.0.0.1"
localPort = <游戏联机端口>
remotePort = 6000

这里用的是 KCP 协议,而不是TCP协议。 AI的解答,二者区别如下:

KCP 模式TCP 模式
稳定性极强。在丢包 10% 以上的环境下表现更优。易受网络波动影响,握手严格。
延迟更低。采用了更激进的重传算法。正常环境下较低。
流量消耗偏高。会额外消耗约 10%~20% 流量。正常。
防火墙友好度一般。部分地区运营商会干扰 UDP/KCP 流量。极好。

PowerShell 运行连接:frpc -c frpc.toml,如果信息显示 success 则成功。

警告

使用前需要将 shell 的代理环境关掉,否则会启动失败。

参考

  1. frp