需要基于debian8 jessie处理arp flood——大量arp报文施加于设备某端口,设备业务通讯不受影响,查阅资料,比较好的方式是使用nftables工具;
nftables工具在linux内核版本>3.13以上均支持使用,但debian8 jessie无法apt-get install获取,需要从源码自己编译,官网链接https://netfilter.org/projects/nftables/
下载libmnl、libnftnl、nftables三个源码tar.bz2,先编译前两个,最后编译nftables,编译步骤常见三板斧,就完事了
./configure
make
make install
编译中途缺啥库,就apt-get install补充啥,
编译完成后,配置下动态库链接ldconfig,执行nft -v,检查下是否生效;
执行下nft -f arp_wall.nft就可以限流了,arp_wall.nft内容如下,语法可以看看
https://wiki.nftables.org/wiki-nftables/index.php/Main_Page
flush ruleset
table arp filter {
chain input {
type filter hook input priority 0; policy accept;
limit rate over 2/second counter drop
}
}
下载libmnl、libnftnl、nftables三个源码tar.bz2要注意,要根据你操作系统的发布时间,选择下版本,优选新版本(新版本支持的模块多,例如nftables-0.5版本,就不支持limit rate over中的over,必须在nftables-0.6及以后才支持,ubuntu16.04发行版apt-get install下的版本就是0.5)
验证了一下,选择以下三个版本在debian8下面,比较顺利:
libmnl-1.0.4.tar.bz2
libnftnl-1.0.7.tar.bz2
nftables-0.7.tar.bz2
完事儿……功能好简单,环境搭建比较烦……
弄完以后,执行以下watch语句是会显示drop掉的arp包数据的(仅限本例子arp表中的filter,不要乱套用),和iptables -nvL类似,有个drop看着直观一点;
watch -n 1 nft list table arp filter
要是想模拟笔记本发包,下个HyenaeFE试试,发arp包看看效果