自建UsbEAm LAN Party服务器,拯救无法联机的你!
最近想起了库里吃灰多年的游戏,准备和哥们儿爽玩来着。然而加入房间的时候才发现连接不稳,根本没法正常游玩。还没玩多久的游戏岂能这样浪费?
什么是p2p游戏?
简单看了一下,这个游戏与Minecraft那种直接给出一个IP加端口就能联机的游戏不一样,它并不给出任何的连接信息,唯一的联机方法就是通过游戏内的大厅加入创建好的房间,基本杜绝了利用端口映射开服的可能。后来通过Clash控制面板的连接页面中Steam相关连接发现有几个带p2p字样的Steam域名,已经基本可以确定是p2p游戏了。
p2p游戏联机是先透过服务器打洞之后玩家与玩家互联,本质上和给出ip加端口的联机游戏差别不是太大,p2p游戏简化了输入ip端口才能联机的步骤,以及在一定程度上解决穿透NAT的难题。而且游戏官方还不用维护对局服务器,非常低成本。
解决方案?
解决p2p游戏联机问题还是挺麻烦的,NAT类型严格会导致难以稳定联机,面对联机时不固定的端口也没有办法手动端口映射。修改NAT类型又何其困难?
不过好在我在羽翼城大佬的博客里找到了UsbEAm LAN Party,一个基于openvpn的联机工具。里面还内置了几个公共的服务器,如果不想自建可以试一下,万一好用呢?
自建的大致方法以及相关文件大佬的文章已经给出了,不过由于这个工具有点老,一些地方需要做调整。
openwrt安装openvpn插件
直接通过软件包安装即可,正常来说安装luci-app-openvpn就够了,但是安装完成后无法启动,排查发现是没有安装openvpn-openssl,如果你的openvpn服务无法启动可以检查一下openvpn-openssl是否有安装。
如果无法使用软件源安装也可以考虑一下去https://dl.openwrt.ai/下载安装包,手动安装需要自行安装相关依赖,记得观察安装日志。还有别忘了安装语言包luci-i18n-openvpn-zh-cn,防止看不懂。
配置openvpn插件
配置起来有一点麻烦,建议下一个WinSCP直接在电脑上改好传上去可以避免麻烦的命令行操作。
下载文件
先在UsbEAm LAN Party的文件里下载教程,里面有我们需要的文件。进一步打开server.zip,可以看到下面几个文件,其中checkpsw.bat是Windows的脚本在openwrt上用不到,而checkpsw.sh、psw-file、server_tcp.conf、server_udp.conf这四个文件需要改一下,在修改完后上传到openwrt。
1 | ca.crt |
修改openvpn插件配置
修改/etc/config/openvpn文件的内容,添加下面的两条。
1 | config openvpn 'server_tcp' |
修改配置文件
server_tcp.conf、server_udp.conf这两个文件的内容基本一致,由于版本更新里面的一些配置需要修改(两个文件都要改)
client-cert-not-required改为verify-client-cert nonecipher none改为data-ciphers none- 第一行的
port按照自己的情况修改,建议选个高位端口,比如65001、65002等
修改认证脚本
checkpsw.sh、psw-file这两个文件是负责认证的,checkpsw.sh在接收用户名和密码后对比psw-file的内容决定认证是否通过。psw-file的内容很简单,每行一个用户,用空格分隔,左边是用户名,右边是密码。
我在测试时发现无法正常传递密码,导致客户端一直处在连接中,不清楚是什么原因,如果你的openvpn可以正常传递密码则可以跳过这一步。
由于无法传递密码,所以我干脆让用户名当作密码,修改脚本让其只验证用户名是否出现在psw-file文件中。下面是修改好的脚本内容
1 |
|
修改了脚本自然也要修改psw-file的内容,改后更简单了,一行一个用户名。这里不要学我,应该起个复杂点的,毕竟是用户名当密码用。
1 | username1 |
上传文件
到这里服务端的修改基本完成了,把文件上传到/etc/openvpn目录下,然后在luci中重启openvpn即可。还有不要忘记在防火墙的通信规则中添加对应端口的放行规则。checkpsw.sh需要执行权限,可以用chmod +x /etc/openvpn/checkpsw.sh命令赋予权限,在WinSCP中右键点击文件˃属性>八进制表改0755 也可以赋予执行权限。
修改客户端配置
客户端的目录里有一个customize.ini,game1就是我们要修改的部分。game1是一个自定义的名称,可以起其他的名字。
IP填openvpn服务器的的ip或域名TCP_Porttcp端口填写第三步你选用的tcp端口UDP_Portudp端口填写第三步你选用的udp端口USER用户名,参考第4步中的psw-file文件的内容填写。PASS密码,参考第4步中的psw-file文件的内容填写,openvpn可以正常传递密码时才会生效。
1 | [usbeam] |
如果你有多个服务器要填入配置文件可以添加更多的类似game1的配置,记得不要重名。然后把名字添加到Server_List字段中,用半角逗号分隔。例如:
1 | [usbeam] |
改好的客户端可以直接zip打包发给朋友使用。
没有公网ip怎么办?
没有公网ip可以考虑安装luci-app-frpc插件,白嫖SakuraFrp这样的免费frp服务内网穿透,frpc具体的用法等我有时间再发一篇文章。
注意事项
UsbEAm LAN Party与服务器的通信是没有加密的,不建议拿来做联机以外的事。

