开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情
前言
前面讲了iptabls的基本概念和基本用法。 下面讲一下 iptables常用的匹配条件。 常用的匹配条件:网卡的制定,报文的来源地址,报文的目的地址,协议的类型,报文接受速度。
网卡指定
参数 -i
举例:iptables -t filter -I INPUT -i eth0 -j ACCEPT
效果如下图所示。这条是测试规则,是说接受所有的从网卡eth0进来的数据。
有进来自然有出去的参数。
参数 -o
举例:iptables -t filter -I OUTPUT -o eth0 -j ACCEPT 效果如下图所示
数据源地址的确定
参数 -s
举例:iptables -t filter -I INPUT -s 192.168.0.22 -j ACCEPT 效果如下图所示。
如果有多个地址需要匹配,可以在地址间使用逗号隔开,如ip1,ip2,ip3。
目的地地址的确定
参数 -d
举例:iptables -t filter -I OUTPUT -d 192.168.0.22 -j ACCEPT 效果如下图所示
同样的,如果有多个地址需要匹配,可以在地址间使用逗号隔开,如ip1,ip2,ip3。
协议类型的确定
参数 -p
网络通信协议有点多,咱们常用的有tcp udp icmp
举例: iptables -t filter -I OUTPUT -p mtp -j ACCEPT
查看官方的-p参数解释,可看到通过/etc/protocol查看支持协议。
可以看出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
效果如下
验证效果如下
为什么需要写两个规则的原因是,每20s会生成的令牌,此时来一条icmp报文,则会匹配第一条规则,允许icmp通过,如果无令牌可用,则会按照默认规则,测试环境里默认规则是允许通过,所以验证看不到任何效果。
以上是对iptables最常用的匹配条件的讲述。