Linux IPTables
1. 介绍
linux iptables是一linux内核防火墙的命令行工具。
主要作用是检查、修改、转发、重定向、丢弃网络包。
linux内核将过滤包的代码组织成了一张张表,
每张表都有着不同的目的。
而每张表由预定义规则的链的集合组成。
而每条链则由按顺序排列后的规则组成。
每条规则由两部分组成:
(1)匹配条件(2)匹配后执行的操作
2. 表
主要分为五张表
raw
表:决定包是否被连接跟踪。filter
表:默认的表,过滤规则的。nat
表:用来网络地址转换的,公私网地址转换。mangle
表:改包里面的标识的,基本用不到。(TOS、TTL、MARK、SECMARK、CONNSMARK)security
表:做访问控制管理的(SELinux里有用到?)
3. 链
每张都包含了不同的链。
每条链都有相应的意义
INPUT
:目标为本地socket
FORWARD
: 转发OUTPUT
: 本地产生的包PREROUTING
: 包来的时候应用,DNAT
就应用在这条链。POSTROUTING
: 包即将发出去时应用,SNAT
应用在这条链。
虽然上面一共有五张表,
但是我们最常用的其实只有nat
和filter
这两张表。
nat
表由PREROUTING、INPUT、OUTPUT、POSTROUTING
这四条链组成。
filter
表由INPUT、FORWARD、OUTPUT
这四条链组成。
其他表的链组成自己查吧,懒得写了,安卓人累了。
4. 规则
就是条件和执行动作。比如tcp
目标端口5050
的包就DROP
丢弃什么的。
可以使用-j
跳转到用户自定义的规则。
5. 链的调用规则
主要是这张图,第一个路由抉择是看这个包是否发到本地的。
6. 命令使用
其实这些可以看官方的文档哈。
安卓人就随便写一点命令了
查看filter
表
iptables -nvL
查看nat
表
iptables -t nat -nvL
清空表
iptables -X
改变表的匹配规则
iptables -P FORWARD DROP
应用DNAT
iptables -t nat -A PREROUTING -i eth0 -d 203.0.113.0 -j DNAT --to 192.168.1.2
应用SNAT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.0.113.0
端口重写向
iptables -t nat -I PREROUTING --src $SRC_IP_MASK --dst $DST_IP -p tcp --dport $portNumber -j REDIRECT --to-ports $rediectPort
7. 参考
哈基人要学会看官方文档
man8-iptables
man8-iptables-extention
archlinux-iptables
iptable-tutorial
snat-dnat
linux-port-redirection