iptables 主要用到两个表:filter 和 nat,其中 filter 表可以用来过滤数据包;nat 可以用来修改数据包的源地址和目的地址。
chain
chain 是 table 中对数据包进行匹配的规则,对于 filter 来说 chain 有 INPUT
& OUTPUT
& FORWARD
,顾名思义,给 INPUT
添加规则可以修改数据包的进入行为。
对于 nat table,chain 为 INPUT
、OUTPUT
、PREROUTING
和 POSTROUTING
,同理,PREROUTING
发生在路由前,可以修改目的地址。
基本指令
iptables -t <filter | nat> -L
列出指定 table 的规则
iptables -t filter -A <INPUT | OUTPUT> -j DROP --dport 80 -p tcp -d www.baidu.com
- -A 添加一条规则
- -I 插入一条规则
- -j 对应的 policy,
DROP
表示丢弃该数据包 - –dport 目的端口
- -p 协议类型
- -d 目的地址
通过 -j DROP 可以 block 特定地址的数据包。