linux - 恢复linux中的arp缓存

标签 linux mac-address arp

我不小心使用以下命令删除了 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/neighbour.h#L38


查看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/

相关文章:

Arduino Ethernet shield v1.1 ENC28J60 MAC地址

ip - 列出本地网络上的所有设备?

java - jNetPcap - 从 PCAP 文件分析 ARP 数据包

linux - 是否可以使用 VMware 在 USB 设备上模拟 Linux?

linux - SVN存储库问题

javascript - 在 Javascript 中将整数 MAC 地址转换为字符串

objective-c - 更改 MAC 地址 Cocoa - Objective-C

linux - 我应该将哪一个用于 hadoop 用户+系统时间或 hadoop 作业计数器中花费的总 cpu 时间的基准测试任务?

linux - 如何创建不带参数 $1 和 $2 的字符串=$*

linux - 构造arp包发送到本地linux没有回复