iptables 是与 Linux 内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 LAN,服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置.
通俗来说,iptables 是一个工具软件,可以控制到达当前 linux 系统的网络包,不限于删除网络包,修改网络包.而计算机网络之间的互通都是一个个的网络包,可以看出 iptables 的厉害之处,可以控制自己与其它计算机的通信.
概念
iptables 主要通过存储在 linux 内核中的一个个表来控制 IP 包的.可以想象成 excel 表格.你可以自定义所需的 iptables 表.不过已经内置了三张表.
filter 这是默认的表,包含了内建的链 INPUT(处理进入的包),FORWORD(处理通过的包) 和 OUTPUT(处理本地生成的包)
nat 这个表被查询时表示遇到了产生新的连接的包, 由三个内建的链构成:PREROUTING (修改到来的包),OUTPUT(修改路由之前本地的包),POSTROUTING(修改准备出去的包).
mangle 这个表用来对指定的包进行修改.它有两个内建规则:PREROUTING(修改路由之前进入的包)和 OUTPUT(修改路由之前本地的包).
完整流程
根据颜色区分不同的 iptables 表
基本用法
案例
Usage:
###修改iptables链的具体内容,追加,插入,替换,删除表中的链的规则.
iptables -[ACD] chain rule-specification [options]
iptables -I chain [rulenum] rule-specification [options]
iptables -R chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
### 查看与清楚iptables中链的骨子额
iptables -[LS] [chain [rulenum]] [options]
iptables -[FZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
### 改变链的默认操作,有DROP,ACCEPT等
iptables -P chain target [options]
查看某个表中的 iptables 规则,默认的是 filter 表
iptables -t [table] -L
查看 iptables 表中的规则
将所有请求 192.168.8.250:80 的请求,转发到 192.168.8.251 上
iptables - t nat - I PREROUTING - p tcp--dport 80 - d192.168.8.250 - j DNAT--to 192.168.8.252
删除 nat 表中 PREROUTING 链的第一条规则
iptables - t nat - D PREROUTING 1
内容过滤
保存 iptables 与恢复规则
iptables - I FORWARD - s 192.168.3.159 - m string--string " -j DROP
iptables -I FORWARD -d 192.168.3.0/24 -m string --string "宽频影院" -j DROP
iptables -I FORWARD -s 192.168.3.0/24 -m string --string "色情" -j DROP
iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROP"
删除所有的规则
iptables-save
iptables-restore
iptables -F
最后
明白了 iptables 的表与链的规则,用法方面就简单很多,功能远比这强大,以上仅供参考
附录
how iptables work
来源: http://www.jianshu.com/p/6bedd2261942