在 Linux 中,如果有数据包到来,ARP 条目的年龄就会重置/刷新。然而,FreeBSD 似乎只是设置了一个计时器,并且无条件地逐出 ARP 条目,即使带有该 MAC 地址/IP 的数据包经过也是如此。有没有办法让Linux在看到流量时更新年龄的行为?
因此,我的 LAN 上每 20 分钟就会遇到大量 ARP 广播流量。我知道可以更改 FreeBSD 缓存的寿命,但这只会更改突发之间的间隔。我想首先阻止爆发。
答案1
FreeBSD 的伟大之处在于它有文档记录:ARP(4)
我们有:
这些路由会定期超时(通常在验证后 20 分钟;条目在不使用时不会验证)
...和...
max_age ARP 条目在需要刷新之前在缓存中保留的时间。默认值为 1200 秒。
我读到它就好像我们看到了其中的条目,maxage
然后它就被验证了。也就是说:在使用时它被验证。
因此,如果您执行以下操作:
arp -i ixl0 -a
? (192.168.1.2) at 00:00:00:00:00:00 on ixl0 expires in 237 seconds [ethernet]
? (192.168.1.1) at 00:00:00:00:00:01 on ixl0 permanent [ethernet]
您将看到 arp 条目及其年龄。如果您想延长缓存持续时间,只需更改即可max_age
。