有时,僵尸网络(或其他)试图在一秒钟内对内部网络(两个 /21 子网)中的几乎所有 IP 进行端口扫描。结果,路由器发出大量 ARP 请求,一些较慢的交换机被“阻塞”——有时 LAN 内的 ping 变为 4 秒或数据包完全丢失。
我已经读到我可以使用 arpd 来缓存否定条目(主机处于脱机状态),并且每次该主机的数据包进入时都不会重新发送请求。但是,我无法使其工作。
arpd -a 5 -n 60 -R 20 -B 10 -b /var/arpd/arp.db -k eth1
抑制所有广播 ARP 请求 - 无论自上次检查以来已经过了多长时间。如果没有“eth1”选项,广播会像以前一样继续。将 /proc/sys/net/ipv4/neigh/eth1/app_solicit 设置为 3 不会改变任何内容。
该发行版是带有自定义内核的 CentOS 6.4(带有 ipset 和 imq 支持的 3.7.10)。我已经重新编译它以添加 CONFIG_ARPD。
事实证明我需要一个新版本的 arpd。下载,编译它,现在它可以正常工作了。