修复GLiNet路由器使用AP模式时Wi-Fi设备无法互联的问题
这个抽象bug已经困扰我一年了,自从去年5月开始用BE6500(就用来做AP啥也没装),每隔一段时间(短则几天,长则一两周)Wi-Fi设备就会出现无法互联的情况,具体表现为无法ping,无法进行tcp连接,就像开了客户端隔离一样
2026/10/19更新:
发现之前的解决方案好像治标不治本,虽然解决了无法连接的问题,但是时间长了会明显感觉到网络延迟变大变慢(测速没问题)
于是又研究了一下,发现GL-Inet所有Wi-Fi7路由器的MLO+WPA3的组合下,连接不支持Wi-Fi7的设备,都会有问题,具体是WPA3强制绑定了PMF开启,PMF开启后MLO就有Bug
那解决方案就很简单了,要么关掉MLO当个Wi-Fi6路由器用,要么关掉WPA3,用纯WPA2,那我选把MLO的Wi-Fi的加密方式改成WPA2
注意了,WPA3换WPA2需要把Windows电脑上的Wi-Fi忘记了重新连,不然会一直自动断开!!!
另外还有个暗坑,GL-Inet的路由器在防火墙里有一条1秒25的ARP限速规则,设备多的时候可能会不够
另外还发现了一个问题,不知道为什么在AP模式下iPv6的DHCP是开着的,这样电脑上会有两个局域网IP,其中有一个永远不通,那我们给他关了
/etc/init.d/odhcpd stop
/etc/init.d/odhcpd disable昨天又出现了,实在是受不了时不时给他重启一下这种操作了,花了45分钟研究了一下:
- 首先,我需要访问我一台安卓手机上的工作咩闹钟服务,使用iPhone可以访问,使用iPad不能访问,使用电脑不能访问,但是使用有线连接使用主路由可以访问,但是把iPhone的wifi关掉再开,访问不了了
- 在主路由抓包,发现收到了电脑ping时发送的who-has arp包,但是没收到那个安卓机发送的reply包,但是如果在主路由上ping,来回的arp包都有,arp表正常
- 在AP上抓包,发现也能收到电脑发送的who-has arp包,但是也收不到reply包,arp表有问题,只有v6地址,没有v4,说明是AP有问题
- 让电脑和手机都连接wpa2的2.4g wifi,排除了wifi7的mlo问题,依然不能ping
- wifi和有线的交换是要走CPU的,wifi和wifi或许有硬件加速呢?关闭BE6500d的硬件加速,还是不行
- 那既然是arp包收不到,会不会被过滤了呢?关掉AP的arp filter,成功了
那么问题很明显了,这arp过滤器有bug,他把不应该过滤的过滤掉了,毕竟他是AP模式,扫不到v4的arp表好像也正常
解决方案就是开机运行这四条命令,把filter关了
echo 0 > /proc/sys/net/ipv4/conf/all/arp_filter
echo 0 > /proc/sys/net/ipv4/conf/default/arp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter先直接运行一下,让他实时生效,然后
vi /etc/rc.local按 i 进入编辑模式,把这4行加到最后的 exit 0 的前面,按esc键退出编辑模式,输入 :wq 然后按回车保存退出
如果咩咩的文章对你有帮助,您可以 请我喝牛奶
郑羊羊咩的窝