Switch借助xray透明代理达成NAT full cone
• • ☕️ 1 min read你可以从本文了解到
背景
switch联机游戏大多是p2p方式,之前经常会遇到NAT穿越失败的问题,有时候不得不用加速器才能连接成功。
当时也是有点困惑,我已经用vps代理了,而且vps是有公网独立ipv4地址,按说不应该会存在NAT穿越失败问题。当时也没有深入去想这个事情,就在我心里一直是一个bug。
而最近我在看到xray的一些更新历史的内容中提到了NAT相关的内容,比如下面这些。
总之就是说v2ray在NAT上有bug,而xray修复改进了这个问题。
话不多说下面就讲讲如何从v2ray迁移到xray。
从v2ray到xray
服务端
由于xray是fork的v2ray,因此在协议上是基本兼容的。
如果之前用的是vmess协议,我们切换到时候基本上可以复用v2ray的配置。
需要做下面几个事情(下面都是以root权限)
1、运行自动安装脚本
# bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
2、把v2ray的配置json复制到xray
cp /usr/local/etc/v2ray/config.json /usr/local/etc/xray/config.json
3、停掉v2ray,启用xray
systemctl stop v2ray
systemctl restart xray
4、自己用客户端进行连接测试,如果ok,则禁用v2ray的自启动服务,改成用xray
systemctl disable v2ray
systemctl enable xray
客户端
我这边试验下来,如果客户端之前是小火箭、v2rayN、树莓派,那完全就是兼容的,不需要升级。
走向NAT full cone
这里需要注意的是,如果客户端是基于v2ray-core,那就不能实现full cone,必须用xray-core。
因此,我的树莓派是作为家庭透明代理网关的,我的switch如果要用NAT full cone就得将v2ray替换成xray。
linux的无论是客户端还是服务端替换方法是一毛一样的,这里就不赘述了。区别只是json配置文件的内容不一样而已。
至此,switch连上树莓派的透明代理之后,就可以做到NAT full cone了。不会再有遇到明明是nat类型是B却连不到其他玩家的情况。
总之一句话就是:xray+透明代理。
补充几个测试结论
1、vps端 在开warp的nat类型是B。(主要取决于vps的网络环境) 不开warp使用原生ip的nat类型是A。
2、树莓派和ns 树莓派开xray,ns通过pi的透明代理,nat类型与vps的nat类型一致(与加速器效果类似) 树莓派开v2ray,nat类型b,有大概率nat穿越失败。
ns不通过透明代理,直接配http代理,(不管是xray还是v2ray)nat类型是b,有大概率nat穿越失败。
结论 最佳配置:xray+透明代理+warp 既能p2p,又能看netflix,相对比较完美啦。
在ns运动里尝试了可以直接和大多数玩家稳定联机,以后就不需要加速器了。