APP下载 微博 微信

Hao4K影音


[分享讨论] 为广域网WoL远程开机解决OpenWrt ARP绑定(IP/MAC绑定)无效的问题

[复制链接]

发表于 2021年06月29日 20:47 23595 0 来源:路由器> 分享讨论 回帖奖励 |正序浏览 |

小uu 帖主

2021-6-29 20:47

写在前面:我非专业人士,对编程、计算机理论仅有皮毛认识,没有系统的学习,经常知其然不知其所以然,所以我说的话可能一些在大佬看来很睿智,请见谅。
一、遇到的问题
最近我在重组家庭组网,更换了主路由,遇到了个烦心的问题——我平时为了能在外网串流我的PC中的游戏(用的Moonlight),需要用到WoL功能远程唤醒家里的PC,而且是在广域网(外网)使用WoL。这就需要路由器支持ARP绑定(PC的WoL相关的设置和路由器端口映射也得做好)。而我的刷了OpenWrt的软路由,它的ARP绑定却不好使。明明系统设置是有这个设置,但是就是不生效,具体表现为——
OpenWrt的“IP/MAC绑定”中已设置了绑定,但用ip neigh命令查看arp表的时候,发现条目状态为REACHABLE而并非PERMANENT,该主机关闭后,本条arp信息即失效,未形成永久绑定关系。
这会导致通过端口映射发送来的远程唤醒包无法抵达IP/MAC绑定的主机,主机无法通过外网端口映射唤醒。
具体见下图(上面这段话和下面这图都是我引用后文提到的Fyred大佬的):
当我输入以上代码的时候,会显示File exist错误,这表示arp表里已经有对应的ip/MAC的动态绑定条目了!这是一个莫名其妙的情况,它的绑定状态明明是默认的REACHABLE,咋就被谁绑定了?
搞不懂,但既然如此,我们不能用ip neigh add代码了(add表示增加绑定关系),改为用:
chg也可以改成change、replace。代表把IP/MAC的绑定关系改为“PERMANENT”。这样的话应该就成功了.....吧?
然而现实再一次击打我这个菜鸟 明明已经绑定为PERMANENT的IP,过了一会之后再查询居然变成了REACHABLE!? 时间不确定多久,但是REACHABLE条目是动态绑定的,关机后REACHABLE必然会老化成FAILED,然后从路由表上消失,广域网WoL也当然失效。
这实在已经超出我这菜鸟的水平范围之外了,只能寄托于百度。没想到最后真的搜到github上有人提出了一条Issue,题主Fyred看来比较懂行的,他描述遇到的问题就是跟我的一模一样,但是他表达得很清晰、很到位,还表达了自己的一些猜想,大家可以去看看:
这条issue虽然最后大家也没讨论出个合理的解决办法,但是我很感谢他,它让我看清楚了并不是我的设置有问题,而看来是OpenWrt本身的问题,有可能是部分内核版本才会有问题(我是4.19)。他提到了OpenWrt的IP/MAC绑定功能是通过arpbind启动脚本来实现的,而这脚本的代码是写的"ip neigh
add",在这个莫名的环境下绑定失败了;然后他还提出了一个重要的猜想——“
路由器启动后还有什么程序在改动ARP表”,据我观察正是这个程序一直在运作,这也导致用add命令的时候提示“File exist”,也导致明明绑定成PERMANENT了还会被变回REACHABLE。
搞清楚了不是我的问题,但是这让我更蛋疼,因为我折腾家庭组网已经弄吐了(这是另外一个故事了),不想再尝试换OpenWrt内核,不换内核的话我又不懂代码,无从入手。
三、最终解决方案
最后是一位很耐心教学的大佬点拨了我一个治标不治本但是很实际有效的办法——既然是是因为IP/MAC条目被未知的程序持续改写成REACHABLE进而导致关机后在路由表中只能维持一段时间,那么我弄个
一直执行的脚本,持续地主动改写这条目为PERMANENT不就可以了吗?
OpenWrt中正好有“计划任务”这个功能,可以免去手动敲crontab命令。在里面新增一行代码:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

返回列表 本版积分规则



绑定微信 + 关注公众号,第一时间获得消息通知!