最近家里用本本无线, 但是总掉线, 刚开始以为是路由问题, 重启, 好了, 但是太麻烦, 而且很频繁.

后来偶然发现本本掉线之后 (但是显示还有连接), 手动重连即可. 问题是这个毛病太频繁了, 平时在学校没事儿, 回家之后很烦.

受不了, 于是wireshark, 发现路由很奇怪地不回答arp询问, 导致动态arp的cache过期之后本本找不到gateway的mac地址, 无法送出数据包. 但是此时尚可以接收数据包, 这也可能是为什么skype或者其他云服务之类发现"自己"off-line会滞后于错误的实际发生时间.

虽然不知道是不是路由的问题 (已经从dd-wrt返回出场状态, 不过依然不能解决问题), 总有办法bypass, 就是static arp.

xp中使用

arp -s 192.168.1.1 68-7f-74-b0-f8-ab

可以设置静态arp, 但是在windows 7却得到 "The ARP entry addition failed: Access is denied."

ms官方论坛没有细说, 但给出netsh方案. stackoverflow 给出:

netsh interface ip add neighbors <interface-name> <peer-ip> <peer-mac>

例如:

netsh interface ip add neighbors "Wireless Network Connection" 192.168.1.1  69-7f-ff-bf-f8-gb

但是错误提示: cannot load ipmontr.dll .... 我了个去 ...

然后去 www.opendll.com 下载了一个64bit放到win7的windows文件夹, 终于netsh能用了...

//有次仍然提示 "The filename, directory name, or volume label syntax is incorrect." 原因是错误的 <interface-name>. 由于我查看的是ipconfig /all 回显信息, 而这个不是"interface-name", 突然想起应该是在adapter settings里看. 改正这个名字之后, 终于解决这个问题了 ....