arptables
arptables
linux命令,用于过滤arp包.
基本思路和用途基本思路和iptables一样,不过,arptables处理arp协议有关的包,这些包在iptables中并不会处理.arptables可用于灵活的arp管理,如果善于运用的话,不失为一个优秀的arp防火墙.既能防止别的机器对自己进行arp欺骗,又能防止本机病毒或错误程序向其他机器发起arp攻击.
名称arptables 用于管理arp包过滤的软件
用法arptables [-t table] -[AD] chain rule-specification [options]
arptables [-t table] -I chain [rulenum] rule-specification [options]
arptables [-t table] -R chain rulenum rule-specification [options]
arptables [-t table] -D chain rulenum [options]
arptables [-t table] -[LFZ] [chain] [options]
arptables [-t table] -N chain
arptables [-t table] -X [chain]
arptables [-t table] -P chain target [options]
arptables [-t table] -E old-chain-name new-chain-name
描述:arptables用于建立、获取、修改内核的arp包处理表.有几个不同的表,每个表分别含有几条内建的处理链,同时允许用户自定义处理链
每条链是一些规则的列表,每条规则匹配特定的包.每条规则指定一个对匹配的包的操作.这个操作也叫做‘目标’,这个目标也可是跳转到同一个表中的另外的链
内建目标:
ACCEPT, DROP, QUEUE, RETURN.是几个最基本的目标,ACCEPT指接受这个包,DORP指丢掉这个包,QUEUE指把包传到用户空间(如果内核指定了的话),RETURN指返回到上一条链,接着执行上一条链跳转过来哪条规则的下一个规则.每条链都有一个默认目标,当包经过所有规则都没被匹配,则发给默认目标
表:
一边至少有一个内建的表(filter表)-t常常用于指定要操作的表.filter表有两个内建的链,IN和OUT,IN用于处理目标为发给本机目标为本机的包,OUT处理本机发出去的包.
操作参数:有两类,一类为命令类,包括
-A, --append chain rule-specification追加规则
-D, --delete chain rule-specification删除指定规则
-D, --delete chain rulenum删除指定位置的规则
-I, --insert chain [rulenum] rule-specification插入规杂
-R, --replace chain rulenum rule-specification替换规则
-L, --list [chain]列出规则
-F, --flush [chain]删除所有规则
-Z, --zero [chain]清空所有计数
-N, --new-chain chain新建链
-X, --delete-chain [chain]删除链
-P, --policy chain target指定默认目标
-E, --rename-chain old-chain new-chain重命名链
-h,帮助
另一类为参数
-s, --source [!] address[/mask]源地址
-d, --destination [!] address[/mask]目的地址
-z, --source-hw [!] hwaddr[mask]源mac
-y, --target-hw [!] hwaddr[mask]目的mac
-i, --in-interface [!] name受到这个包的网卡
-o, --out-interface [!] name要发送这个包的网卡
-a, --arhln [!] value[mask]
-p, --arpop [!] value[mask]
-H, --arhrd [!] value[mask]
-w, --arpro [!] value[value]
-j, --jump target跳到目标
-c, --set-counters PKTS BYTES计数
例子:将源为aaaa目的不是cccc的转发包伪装为源地址是bbbb
iptables -t nat -A POSTROUTING -s aaaa ! -d cccc
-j SNAT --to bbbb
将源不是cccc,目的是aaaa的包丢掉
arptables -A IN ! -s cccc -d aaaa -j DROP
将源是aaaa,目的不是cccc的请求包发给bbbb
arptables -A OUT -s aaaa ! -d cccc -j mangle
--mangle-ip-s bbbb