iptables:使用!反转IP,协议或接口测试!

时间:2020-01-09 10:41:05  来源:igfitidea点击:

在编写基于iptables的shell脚本时,如何反转协议或ip地址测试?

iptables命令自带!操作员。
这些规则中的大多数可以以!开头。!表示匹配取反。

匹配项可以是:

  • 源或目的IP地址
  • 接口名称
  • 协议名称等

例子

以下内容将匹配除UDP之外的所有协议:

iptables -A INPUT -p ! UDP

以下匹配允许IP地址范围匹配,并且可以使用!取反。
标志:

iptables -A INPUT -d 192.168.0.0/24 -j DROP
iptables -A OUTPUT -d ! 192.54.1.2 -J ACCEPT
# we trust 192.54.1.5 so skip it
iptables -A OUTPUT -s ! 192.54.1.5 -J DROP

感叹号会将匹配项反转,因此,如果IP是给定范围192.168.1.0/24中的IP以外的任何其他内容,则将导致匹配项:

iptables -A INPUT -s ! 192.168.1.0/24 -p tcp --dport 80 -J DROP

您可以从字符串测试中跳过自己的IP:

iptables -A FORWARD -i eth0 -p tcp ! -s 192.168.1.2 --sport 80 -m string --string '|7F|ELF' -j DROP

接受除连接到Internet的eth1之外的所有接口上的端口22流量:

iptables -A INPUT -i !eth1 -p tcp --dport 22  -j ACCEPT