了解nat需先了解filter表,查询iptables表:iptables -vnL --line命令
PREROUTING :进站nat
POSTROUTING :出站nat
1、nat:-参数指定参数了解参数可以iptables -h 或者man iptables
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 1.1.1.1 -1.1.1.10
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80
实现目的地址转换,实现外网访问内外服务
2、iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o -ppp0 -j MASQUERADE
将源地址的数据包进行地址伪装
3、iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to ports 8080
本机tcp80数据转发到本机8080
4、state按包状态匹配
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
本机产生的数据由nat表的OUTPUT链处理
数据连接状态:NEW、RELATED、ESTABLISHED、INVALID
NEW:连接的第一个数据包(不是指tcp的svn)
ESTABLISHED:连接态(有应答)
RELATED :衍生态,与ESTABLISHED连接有关系(如FTP)
INVALID :不能被识别属于哪个连接或没有任何状态
5、按mac匹配(mac)-m mac --mac-source
iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
阻断来自某mac地址的数据包,通过本机,不要试图去匹配路由后面的某个mac地址,mac地址不过路由
6、按包速率匹配(limit)-m limit --limit
iptables -I FORWARD 1 -d 192.168.1.1 -m limit --limit 50/s -j ACCPET
iptables -I FORWARD 2 -d 192.168.1.1 -j DROP
使用limit匹配的ACCEPT规则一般都有一个对应的DROP规则
7、多端口匹配(multiport)-m multiport --sports |--dports| --ports
iptables -A INPUT -p tcp -m multiports --dports 21,22,25,80,110 -j ACCEPT
必须与-p参数一起使用