本帖最后由 恩山小沛 于 2024-3-12 11:04 编辑
家里无公网ipv4,有公网ipv6,但是公司没有ipv6,所以为了在公司访问到家里,我在我家N1(openwrt)上安装了tailscale,并且配置完基本上互联正常。
这个是我的网络架构:
目前在每个设备上都能正常访问我的群晖设备上的文件系统和服务,但是最近玩新游戏(幻兽帕鲁),并且在我的群晖docker(192.168.100.5)上部署了一个帕鲁服务器,但是诡异的事情发生了:外地电脑(110.26.26.26,tailscaleIP:100.109.223.106)能够正常ping通过群晖docker(192.168.100.5), 延迟40ms,但是一直无法连接到帕鲁服务器。 帕鲁服务器是一个游戏的服务器,链接的端口是8211,链接请求的协议是UDP。 在确保防火墙没有开启,程序正常的情况下,我编写过程序测试过udp数据包是能够正常收发的,但是游戏一直无法链接或者sunshine一直无法串流。然后我就抓包分析了一下,正常链接的包是这样的:(本地电脑192.168.100.3抓包)可以看到我在本地电脑(192.168.100.3)链接到游戏服务器(192.168.100.5:8211)是正常的收发。但是在异地电脑上,也就是异常无法链接服务器(异地电脑192.168.100.3抓包)(服务器192.168.100.5抓包)可以看到只有第一个包游戏服务器应答了,但是后面的包服务器都没有收到。
我暂时用的解决方法是在openwrt(192.168.100.2上运行端口转发):iptables -t nat -A PREROUTING -p udp -d 100.109.223.106 --dport 8211 -j DNAT --to-destination 192.168.100.5:8211
iptables -t nat -A POSTROUTING -p udp -d 192.168.100.5 --dport 8211 -j SNAT --to-source 100.109.223.106 虽然能解决,但是不稳定,总感觉不是最佳解决方法。
再之后使用moonlight进行串流的时候一直报错udp端口没有打开,我才突然意识到moonlight很有可能也是相同的情况,再次折腾了一番,各种改网络参数,但是最后都是不生效,解决不了。
2024/03/12 重大发现,今天折腾的时候无意中关闭了Turbo AC 的Shortcut-FE 流量分载之后串流正常了。大家有这个问题的都可以尝试一下。
|