Windows Server 2008无法使用arp命令添加静态MAC绑定

这两天办公室不时有人机器中毒,结果整个内部局域网经常被ARP Poison充斥,导致网络瞬断,于是不得不想办法来实现静态IP-Mac地址绑定。然而在我用的Windows Server 2008 beta3的机器上,却碰到了一个很奇怪的问题。

在本机键入如下命令,这个IP是我局域网网关的地址,MAC为其内网网卡的MAC:

C:\Windows\system32>arp -s 10.0.0.254  00-11-d8-64-6b-bc

结果失败,错误提示为:

The ARP entry addition failed: 5

放狗搜了一下这个错误提示,发现这个提示应该为权限不足。见鬼了,明明用的是administrators组的用户,却权限不够?于是把故障嫌疑定位到UAC上去,发现无论是怎样调整,甚至关掉UAC,都还是同样的结果。同时用Process Explorer检查发现我的CMD进程有足够权限执行此项配置,这样也断定不可能是用户权限问题,简直是见鬼了。

然后就是打开安全审核,拼了命查找各项安全日志,无奈发现不了任何蛛丝马迹。回头一想,貌似命令行下的一些个命令都不生成安全审计记录的,这次彻底郁闷了。

翻着翻着资料突然看到了netsh这个工具,这玩艺是MS建议以后再命令行配置Windows网络协议栈的一个类似IOS的新工具,死马当活马医,试试看这玩艺能不能操作ARP表,简单看了一下帮助,于是弄出来这么个命令:

C:\Windows\system32>netsh -c “interface ipv4″ add neighbors 10  “10.0.0.254″  ”00-11-d8-64-6b-bc”

其中数字10为我本地网卡连接的index,这个从show interface可以看到。或者直接替换成网卡名称也可以,就是”Local Area Connection”了。

结果这个命令竟然成功了,运行之后再运行arp -a可以看到static的ARP表项已经按照预想的一样创建成功。也就是说,前面使用arp -s添加失败根本不是权限不够的原因,而是其他原因了。具体什么原因呢?我个人猜想恐怕是内核网络部分一些数据结构或者API的变更,同时arp.exe这个工具没有跟随更新导致的broken问题吧。

更诡异的在后面,虽然我目的达到了,但不小甘心又使用arp -s修改了刚添加的静态表项,结果发现竟然修改成功-_-b,然后又继续测试其他情况,发现如下结论:

1,目前ARP表中不存在对应IP的记录,可以用arp -s添加新的静态IP-Mac绑定。

2,目前ARP表中已经存在对应IP的static表项的记录,可以用arp -s修改为新的静态IP-Mac绑定。

3,目前ARP表中已经存在对应IP的dynamic表项的记录,使用arp -s添加新的静态记录时会出现错误:The ARP entry addition failed: 5

总之这个版本的Windows附带的这个arp.exe一定有问题,改天找找看有没有联系方式能否反映给MS开发部门。

posted @ 2007-10-14 22:45  至尊王者  阅读(4122)  评论(0编辑  收藏  举报