switch连接openwrt路由器NAT穿越失败问题

首先说结论,解决问题的办法是ShadowSocksR Plus+需要代理的端口要改成“所有端口”。

问题的来源

我需要路由器给我的switch(任天堂游戏机)做代理,我家里的老路由器NAT类型是B,虽然能匹配到马车8,但是感觉延迟很大,而且大乱斗的竞猜观也看不了。正好我有一个刷过openwrt(QWRT)的路由器。

试错

我第一个想法是有线桥接。lan to lan 这样接起来,然后让主路由器分配ip,副路由器只负责当交换机。

但是不知道为什么网上的桥接教程我都不能成功实现。他们教的把副路由器lan口ip改成主路由器lan口ip统一网段的这一步,每当我改完ip然后路由器就失联了,也没有网。

好在我直接拔电源再插回去,路由器的系统会重置为出厂化设置。研究了几个小时之后我发现路由器并不是失联了,而是我没有正确的访问。我不知道原因是什么,我电脑网线连接路由器之所以找不到路由器配置网址,好像是因为改lan口ip后新的网络ip并没有分配给电脑,然后电脑和路由器panel在不同的网段里,所以不能访问。

解决办法就是在电脑控制面板里找到适配器设置(Control Panel->All Control Panel Items->Network and Sharing Center->Change adapter settings),将以太网属性里的ipv4设置为手动ip,设置为和更改panel的ip的同一网段的不同ip上。

ipv4

如图,假设主路由器Default Gateway是192.168.3.1,这个如果不知道就用电脑连接主路由器,然后Terminal里输入ipconfig /all查看。然后路由器lan设置为192.168.3.2,只需要上图一样配置,将自己电脑ip改为同一网段的不同ip即可。然后再输入192.168.3.2就能够再次访问到路由器panel。

这里解释一下为什么192.168.1.1和192.168.3.1是不同网段,主要是因为家庭路由器的子网掩码是255.255.255.0。这里涉及到计网的知识。这个子网掩码应该按照二进制的思维思考,前面都是111111…后面是0,然后第三个字段的3和1仍然还是不同网段,但是第四个字段对应的0属于同一网段。

可能是正解

重置路由器后,网线插在wan口上,wan口协议设置为DHCP服务端即可。这样副路由器就应该有网了。

当然这样的做法使得主副路由器会在不同的网段中,共享打印机那种场景应该会出问题,但是我并没有这种场景。

回顾

我为什么排除了vpn的问题而是一心觉得是因为不同网段的问题。第一因为这个路由器在学校的时候运作十分正常,第二chatgpt告诉我可能是因为双重NAT导致的。显然我的决策是有误的。

因为开梯子和不开梯子NAT类型都是B,而且开梯子后反而完不了马车8了让我心急如焚。我不知道为什么ShadowSocksR Plus+的代理端口为什么被改成了“不代理p2p流量”,这一个设置让我折腾了快一天的时间:

search history

这是部分搜索截图。

最后看到NAT类型变成A,然后狠狠打了几把NS Sports,还是很开心的。