饥荒联机版内网穿透方法
饥荒联机版内网穿透方法及常见问题解答
最近在用内网穿透搞局域网联机,记录一下过程和踩的坑。
饥荒本身是支持局域网联机的,所以只要映射好端口,就可以使用很低的服务器代价来实现一个很流畅的联机体验。
内网穿透方案
内网穿透的方法有很多,比如可以使用现有的软件或者自己租一台云服务器部署一下frp
现有软件
使用现有软件相比之下比较简单,这里就不多说了,可以自己随便搜一款软件,付费或者免费都行,只要能实现内网穿透。
比如 SAKURA FRP (之前用过目前不知道怎么样了)
创建一个 主世界 一个地穴 的udp隧道,默认端口应该是 10999 和 10998。
租云服务器
- 这里只要是一台云服务器就行,预计能有1C1G 带宽3M 基本上就可以轻松跑好内网穿透。
- 也可以考虑不同运营商的试用,就可以免费白嫖了,不过租一个阿里云的ECS低配服务器一年也才99元,还是挺划算的。
租好自己的服务器之后,在服务器上从frp的github网站上下载一下release包比如
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
这样就能拿到0.62.1版本包了,或者在windows电脑上把这个包下下来,然后通过scp把这个包上传到服务器上,scp命令格式是:
scp [源文件] [目标路径]
比如在下载路径下面使用
scp frp_0.62.1_linux_amd64.tar.gz root@host:/root/
把host换成自己的云服务器公网ip,就可以把文件上传到root用户的root根目录下面了。
然后输入
tar -zvxf frp_0.62.1_linux_amd64.tar.gz
解压这个包 就可以在服务器上面看到frp_0.62.1_linux_amd64这个文件夹,
cd frp_0.62.1_linux_amd64
到这个文件目录,接下来就是服务器frp这边的配置了,下面会详细讲解。
接着是,这里还需要下载一个windows版本的安装包在你玩饥荒的那台电脑上运行,比如 frp_0.62.1_windows_amd64.zip 这个安装包,下载解压出来。
注:压缩包要下载和自己 系统_处理器 对应的的版本
服务器frp配置
服务器主要运行的是frps这个frp的服务端程序,默认带有的配置文件是 frps.toml,可以使用 vim frps.toml 打开这个文件,或者使用其他的方法(比如vscode ssh连上服务器直接修改都行),
推荐将配置改为如下样子,即添加一个token认证,密码自己填(不改也可以,只是为了安全考虑)
# frps.toml # 服务端监听的端口 bindPort = 7000 # token认证 [auth] method = "token" token = "123456"
然后使用
nohup ./frps -c frps.toml > frps.log 2>&1 &
命令后台执行frps并将日志文件写到frps.log中。
使用
tail -f frps.log 查看出现日志 [I] [frps/root.go:114] frps started successfully就代表着启动成功了。
服务器防火墙配置
服务器这边需要开启对应端口的权限,如果是阿里云服务器则是在 网络与安全 中添加入方向规则。 需要添加的规则是
开启 udp 10888/11000 的端口 用于饥荒联机版的内网穿透使用。
另外推荐也直接开放 tcp/udp 6000/7000 之间的端口给其他游戏用。
至此,服务器这边配置全部结束。
客户端配置
从pc上解压那个压缩包,然后将frpc.toml配置文件
serverAddr = "xxx" # 你的frp服务器ip serverPort = 7000 # frp服务器的端口号 # 之前推荐的token ,不加就省略这两行 # 写法和之前保持一样也可以 都可以识别正确 auth.method = "token" auth.token = "123456" # 地表世界的节点配置 [[proxies]] name = "DST-MASTER" type = "udp" # 一定要是udp localIP = "127.0.0.1" localPort = 10999 # 填地表世界的端口号 默认10999 remotePort = 10999 # localPort 和 remotePort 请务必保持一致且和饥荒存档中提供的端口一致! # 详细原因见后 # 地穴的节点配置 [[proxies]] name = "DST-CAVES" type = "udp" localIP = "127.0.0.1" localPort = 10998 # 填地穴的端口号 默认10998 remotePort = 10998
在命令行中运行,frpc.exe -c frpc.toml 即可。
运行游戏
一切普通创建存档就可以了。
加入服务器则使用 c_connect("ip", port) 来加入
常见问题
主要处理思路是,查看 server_log.txt 看看报错是为什么。
加不进服务器,服务器无应答
- 看下自己端口是否正确开启,防火墙是否开了,frp启动是否正确。
授权失败
- 主机开启加速器
- 原因是,加入房间之后,服务器会拿他的steam_id去验证用户是否合法,授权失败大概率是验证超时了,查验log显示443超时
能正常进入主世界,但是进入地穴被踢出去,显示服务器无应答,使用c_connet链接地穴端口显示需要密码
-
主要问题是,地穴服务端口和内网穿透端口不一致,将端口统一一下就可以了。
-
原因猜测是这样的,当使用c_connect进入到正确的主世界之后,一切正常,在进入地穴时,饥荒内部逻辑会将这边下线并尝试链接地穴的服务器,假设也是按照c_connect逻辑链接,那它的端口号就是饥荒游戏配置中地穴的端口号,即10998。这时由于没有配置10998的端口映射,就会发现找不到这个端口而连接失败。
-
至于为什么显示需要密码,而且输入任何密码都无效,就不是很清楚了。但是猜测是没有识别到正确的服务器然后报错信息给的不对……
-
同样的,如果主世界服务器端口也不太一样,也会导致从地穴出来的时候,连接失败或者需要密码。