1.什么是iptables规则
- 数据包的过滤是基于规则,规则是由“匹配条件”+“动作”组成。我们对规则的操作是增删改查
- 操作规则的语法:iptables [-t] [表名] 选项 [链名] [规则] [动作]
- 操作规则之前我们需要考量如下问题:
- 要实现什么功能 (判断添加到那张表上)
- 报文流经的路线 (判断添加到那个链上)
iptables选项 | 含义 | 示例 |
---|---|---|
-t | 对指定的表进行操作,table必须是raw,nat,filter,mangle中的一个。默认是filter表 | iptables -t filter |
-p | 指定要匹配的数据包协议类型 | iptables -t filter -I INPUT -p tcp |
-s, --source address[/mask][,...] | 把指定的一个或者一组地址作为源地址,按此规则进行过滤。当后面没有mask 时,address 是一个地址,比如:192.168.1.1;当 mask 指定时,可以表示一组范围内的地址,比如:192.168.1.0/255.255.255.0 | iptables -I INPUT -s 192.168.1.0/24 -j DROP |
-d, --destination address[/mask][,...] | 地址格式同上,但这里指定地址为目的地址,按此进行过滤 | iptables -I |
-i, --in-interface name | 指定数据包的来自来自网络接口,比如最常见的 eth0 。注意:它只对 INPUT,FORWARD,PREROUTING 这三个链起作用。如果没有指定此选项, 说明可以来自任何一个网络接口。同前面类似,"!" 表示取反 | iptables - |
-o, --out-interface name | 指定数据包出去的网络接口。只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用 | iptables |
-L, --list [chain] | 列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则 | iptables -t filter -nL |
-A, --append chain rule-specification | 在指定链 chain 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定 | iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT |
-I, --insert chain [rulenum] rule-specification | 在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1,则在链的头部插入。这也是默认的情况,如果没有指定规则号 | iptables -I INPUT -s 192.168.1.0/24 -j ACCEPT |
-D, --delete chain rule-specification -D, --delete chain rulenum | 在指定的链 chain 中删除一个或多个指定规则 | iptables -D INPUT -s 192.168.1.0/24 -j ACCEPT |
-R num:Replays替换/修改第几条规则 | iptables | |
-P, --policy chain target | 为指定的链 chain 设置策略 target。注意,只有内置的链才允许有策略,用户自定义的是不允许的 | iptables -t filter -P INPUT DROP |
-F, --flush [chain] | 清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则。 | iptables -t filter -F |
-N, --new-chain chain | 用指定的名字创建一个新的链 | iptables |
-X, --delete-chain [chain] | 删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链。 | iptables -X Rules_name |
-E, --rename-chain old-chain new-chain | 用指定的新名字去重命名指定的链。这并不会对链内部照成任何影响。 | iptables -E Old_Rules New_Rules |
-Z, --zero [chain] | 把指定链,或者表中的所有链上的所有计数器清零 | iptables -t filter -Z |
-j, --jump target <指定目标> | 即满足某条件时该执行什么样的动作 | iptables -I INPUT -s 192.168.1.0/24 -j DROP |
target | 可以是内置的目标,比如 ACCEPT,也可以是用户自定义的链 | iptables |
-h | 显示帮助信息 | iptables -h |