我不小心使用以下命令删除了 HWaddress
arp -d 200.9.12.50
如果我运行 arp -n 200.9.12.50 显示不完整。
Address HWtype HWaddress Flags Mask Iface
200.9.12.50 (incomplete) eth0
我知道确切的硬件地址,尝试使用以下命令手动添加。我无法 ping(目标主机无法访问),如果我重新启动,arp 将再次设置为不完整。请帮我用 HWaddress 恢复 arp。
arp -s 200.9.12.50 00:0b:ab:7d:09:4a temp
最佳答案
仅当邻居不可达检测 (nud) 状态设置为永久(而非临时)或“有效”( arp.c#L1077-L1085 ) 时,Linux 内核才会设置已完成的 arp 标志。
#define NUD_VALID (NUD_PERMANENT|NUD_NOARP|NUD_REACHABLE|NUD_PROBE|NUD_STALE|NUD_DELAY)
查看net-tools arp.c,这是在arp_set()中设置的。 (请参阅 net-tools 获取官方源代码。)如果提供了 temp
arg,则永久标志将被禁用,这可能会解释“如果我重新启动,arp 将再次设置为不完整。”
尝试删除该条目并在没有温度的情况下重置它:
# arp -i eth0 -d 200.9.12.50
# arp -Ds 200.9.12.50 eth0
(我使用 iproute2 而不是 net-tools;如果此信息有任何不正确,请原谅我。)
关于linux - 恢复linux中的arp缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60709247/