本文只是记录常用的命令行规则,如果想了解和学习 iptables,请移步《IPtables》
每一条匹配规则都可以使用 ! 进行取反。如 ! --dport 22 表示所有目标端口不为 22 的请求
下表为链和表的对应关系
| Chain | Table |
|---|---|
PREROUTING | raw表,mangle表,nat表 |
INPUT | mangle表,filter表,nat表 |
FORWARD | mangle表,filter表 |
OUTPUT | raw表,mangle表,nat表,filter表 |
POSTROUTING | mangle表,nat表 |
默认规则
| 名称 | 作用 |
|---|---|
| -s | 匹配源 IP。书写形式可以是 ip ip,ip,ip 10.0.0.0/8 |
| -d | 匹配目标 IP。用法和 -s 一致 |
| -p | 匹配协议。-p tcp 。具体支持哪些协议,可以查看 /etc/protocols。默认为 all |
| -i | 匹配流入网卡 |
| -o | 匹配流出网卡 |
拓展规则
使用拓展规则,必须要加载对应的模块。因此,使用拓展模块时要配合 -m <module_name> 使用。-m 的默认值为 -p <protocol> 指定的值。
实际使用时,一条命令可以多次使用 -m 来实现复杂的匹配规则
还可以支持其他模块,这里仅列举了一部分。
tcp
| 名称 | 作用 | 前置条件 |
|---|---|---|
--dport | 匹配目标端口。--dport <port> --dport <startport>-<endport> | 与 -p <protocol> 一起使用 |
--sport | 匹配源端口。--sport <port> --sport <startport>-<endport> | 与 -p <protocol> 一起使用 |
iprange
指定连续的 ip 地址
| 名称 | 作用 |
|---|---|
--src-range | --src-range 192.168.2.2-192.168.2.10 |
--dst-range | 用法相同 |
multiport
| 名称 | 作用 |
|---|---|
--sports | 匹配目标端口。--sports port --sports port,port,port |
--dports | 匹配源端口。--dports port --dports port,port,port |
time
| 名称 | 作用 |
|---|---|
--timestart | 匹配开始时间。--timestart 08:00 |
--timestop | 匹配结束时间。--timestop 18:00 |
--days | --days Mon,Tue,Wed,Thu,Fri |
--weekdays | --weekdays 4,5,6 |
--monthdays | --monthdays 10,15,25 |
comment
设置注释 --comment "Allow SSH"