本文只是记录常用的命令行规则,如果想了解和学习 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"