首先我要说的是,我对网络还比较陌生,所以请原谅我的无知,并纠正我思维中的任何错误、我的知识差距或不正确的假设。
我正在尝试在 Linux 上设置静态 arp 缓存条目并使用 tcpdump/Wireshark 来监视流量,并注意到一些奇怪的事情。通常,当我为给定 IP 地址创建一个条目,然后 ping 该 IP 时,我看不到任何传出 ARP 请求,我预计这是因为 MAC 地址是从本地缓存确定的。
然而,对于网关的 IP 地址而言,情况并非如此。具体来说,当我为网关/路由器的 IP 地址创建 ARP 条目,然后加入网络时,我看到来自我的计算机的传出 arp 请求,询问网关的 MAC 地址。就像我的 ARP 缓存被忽略/绕过一样。为什么是这样?或者我不明白什么?
我用来创建 ARP 条目的命令是:
sudo arp -s 10.0.0.2 00:0c:29:c0:94:bf
我也尝试过
sudo ip n replace dev wlan0 to 10.0.0.2 lladdrr 00:0c:29:c0:94:bf
更新:我也在 OSX 上看到了这种行为。我用来创建新的 arp 条目的命令是:
sudo arp -S 10.0.0.2 00:0c:29:c0:94:bf ifscope en0
答案1
你需要
ip neigh replace dev wlan0 to 10.0.0.2 lladdrr 00:0c:29:c0:94:bf nud permanent
以便永久设置条目。
我无法重现你所描述的效果。