iptables 常用匹配条件 【掘金日新计划】

90 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

image.png

前言

前面讲了iptabls的基本概念和基本用法。 下面讲一下 iptables常用的匹配条件。 常用的匹配条件:网卡的制定,报文的来源地址,报文的目的地址,协议的类型,报文接受速度。

网卡指定

参数 -i

举例:iptables -t filter -I INPUT -i eth0 -j ACCEPT 效果如下图所示。这条是测试规则,是说接受所有的从网卡eth0进来的数据。 image.png 有进来自然有出去的参数。

参数 -o

举例:iptables -t filter -I OUTPUT -o eth0 -j ACCEPT 效果如下图所示

image.png

数据源地址的确定

参数 -s

举例:iptables -t filter -I INPUT -s 192.168.0.22 -j ACCEPT 效果如下图所示。

image.png

如果有多个地址需要匹配,可以在地址间使用逗号隔开,如ip1,ip2,ip3。

目的地地址的确定

参数 -d

举例:iptables -t filter -I OUTPUT -d 192.168.0.22 -j ACCEPT 效果如下图所示

image.png

同样的,如果有多个地址需要匹配,可以在地址间使用逗号隔开,如ip1,ip2,ip3。

协议类型的确定

参数 -p

网络通信协议有点多,咱们常用的有tcp udp icmp

举例: iptables -t filter -I OUTPUT -p mtp -j ACCEPT image.png

查看官方的-p参数解释,可看到通过/etc/protocol查看支持协议。 image.png

image.png

image.png

image.png

image.png

image.png

可以看出92是mtp,和我们的规则命令是一致的。

报文速率
参数 -m limit --limit rate   ;rate: number/[second,minute,hour,day]

举例:

iptables -t filter -A INPUT -p icmp  -m limit --limit 3/minute -j  ACCEPT
iptables -t filter -A INPUT -p icmp  -j  DROP

效果如下 image.png 验证效果如下

image.png

为什么需要写两个规则的原因是,每20s会生成的令牌,此时来一条icmp报文,则会匹配第一条规则,允许icmp通过,如果无令牌可用,则会按照默认规则,测试环境里默认规则是允许通过,所以验证看不到任何效果。

以上是对iptables最常用的匹配条件的讲述。