arp --delete 不是删除条目;仅将条目标记为“不完整”

Jam*_*oon 10 linux arp

$ sudo arp -avn
? (10.10.7.30) at 00:cc:cc:bb:dd:86 [ether] on eth0
...

$ sudo arp --delete 10.10.7.30

$ sudo arp -avn
? (10.10.7.30) at <incomplete> [ether] on eth0
Run Code Online (Sandbox Code Playgroud)

--delete我预计没有条目之后10.10.7.30。出乎意料的是,该条目保留并标记为<incomplete>

使用Ubuntu 10.04

Kar*_*box 10

该条目将被删除,请耐心等待。

(如果你想要最短的答案:不完整==删除)

假设“删除”是该操作的错误词。这里真正发生的是,条目被手动设置为状态“请求已发送,无应答”(因此是“不完整”的 ARP 过程),就好像机器真的无法访问一样。

现在,除非同时获得新的有效 ARP 响应,否则该条目将很快被完全删除。在这种情况下,无论如何都会重新添加条目,即使它被删除而不是被标记为不完整。所以这种行为没有实际的利弊。

但请记住,我们正在谈论缓存。从缓存中删除东西既困难又昂贵。使条目无效并在最终删除之前等待它被替换是更有效的方式。但是对于系统来说,如果条目从列表中消失或只是标记为不完整,则完全没有区别。


小智 7

只是为了补充所有其他答案,我发现此链接非常有用

在某些情况下使用ip更合适,例如命令:

# ip -s -s neigh flush all
Run Code Online (Sandbox Code Playgroud)

结果可能取决于您的 linux 内核。