2 min read
「玩物丧志」废渣日常联机失败

Forza Motosport 是一款挺好的游戏,微软为了用 P2P 对等降延迟所以强制要求走 IPv6。但国内 IPv6 的普及度一般,最难受的是,Xbox App 在 Native IPv6 下似乎也还是走的 Teredo 6in4。 那能怎么办,下都下了,也舍不得不玩。折腾咯~~

一年前,我就是因为联不上机所以删掉了 Forza。前几天给家里路由开了 Native IPv6 然后想可能就直连好点了,但似乎 Xbox Services 还是继续走 Teredo 去联机,所以 v6 白瞎了。。。啪啪打脸,联机失败。

主要表现就是:Xbox 内网络检测「Xbox 多人游戏 - 服务器连接」展示为「已阻止」或者显示为「已连接」然后延迟爆表一类。

先考虑开个加速器,然而大部分加速器也不得行(不能说不支持 6in4 的场景,毕竟是个黑盒)。那就只能一顿搜,找找别人的解决方案(一年前也找过。。不死心)

基本上可以搜到的资料主要的方向是:在注册列表中开启几项 TCPIP 组内的 6in4 策略,然后从现有公开的 Teredo 服务器选一个延迟较低的服务丢上去。

那就蛮再看看有没有什么新节点比较低的延迟低的丢包吧。然而这时候局域网发挥了极大的作用,几个公共的 Teredo 服务器在大陆环境下,基本别想连上。 于是有了昨晚的「联机 3 小时,游戏 0 分钟」,必须做点什么来解决这茬:自建。

寻找 6in4 方案

IPv4 转 IPv6 其实有几种方案,比如:HTTP Tunnel、Teredo 等等一大坨,不过既然 Xbox 用了 Teredo ,咱也不熟 Windows,能用就好,暂时不折腾一大坨。。。

看了下文章不多,方案的话基本就只有 Miredo ,那就它吧。为啥我不直接做内网 Server,因为还有小伙伴要一起用。

看看隧道机要求是啥:

  • 一对连续的 IPv4:因为 Teredo 的 Secondary IP = Primary IP + 1(默认),但 Windows 中没开放修改,除非自己做(本着不折腾的原则)
  • IPv6 接入:问题不大,实在不行 IPv6 Tunnel
  • 到大陆线路好些:烂的不如用现有的

机器就绪之后开搞,从步骤来说本身并不复杂。主要难搞的点是在于:那对 IPv4 和线路。

IPv6 我本来想说自己宣告一段,想想算了,图个简单走 TunnelBroker,就不赘述接 IPv6 了。

起 Miredo

一把梭

# 别的版本自行去官网拿链接就好

wget https://www.remlab.net/files/miredo/miredo-1.2.6.tar.xz

tar xvf miredo-*.tar.xz
cd miredo-*
./configure

# 有的人喜欢用 make -j8 也可以
make
make install

然后找个地方(默认没有权限问题)写配置文件 miredo-server.conf 没几行,基本内容就是这样

# Server primary IPv4 address.
# Miredo will open UDP port 3544 on this IPv4 address and the next one.
ServerBindAddress <Primary IP>
ServerBindAddress2 <Secondary IP>
# Prefix 2001:0000::

然后 miredo-server -c <配置路径> -f 跑起来看下,显示 Starting 就基本没啥问题了,不然你可以再看下 UDP 的 listen 也成。

剩下就是看 supervisor 还是 systemd 看个人喜好了。

用它!

  1. 开防火墙:Windows Defender 里全开
  2. 开启相关服务:在「服务」里将「Xbox Accessory Management Service」、「Xbox Live 身份验证管理器」、「Xbox Live 网络服务」、「Xbox Live 游戏保存」全部设成「自动并且开启」
  3. 策略组里找到「计算机配置 -> 管理模板 -> 网络 -> TCPIP 设置 -> IPv6 转换技术」 3.1 选择「设置 Teredo 默认限定」设为开启 3.2 选择「设置 Teredo 服务器名称」其中填入你要用的 Teredo 服务器地址 3.3 选择「设置 Teredo 状态」设置为「企业客户端」

然后再到 Xbox 网络检测里跑一把,你应该就能看到

就能跟小伙伴愉快玩耍了~

额外

在其他人的介绍里,我还看到了在最后一步可选的加上

reg add HKLM\System\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 0x0

但我不确定其中的效果,只是蛮贴出来 mark。

Teredo 搭建建议

个人会比较建议选香港、日本等亚太地区,主要是因为国内的厂基本很难去搞连续 IP 除非你自己宣告(那到哪都行了)另外是 4 转 6 后流量还是得出大陆。 然后上个 IP 白名单,毕竟这货是无鉴权,如果开放被人扫到可以被薅倒,所以简单 INPUT DROP + ACCEPT 解决就好。