NAT --- Network Address Translation 网络地址转换
网络地址转换即改变数据包的源/目的地址,做过NAT操作的数据包的地址就被改变了,当然这种改变是根据我们的规则进行的。属于一个流的包只会经过这个表一次。
如果第一个包被允许做NAT或Masqueraded(化装;伪装),那么余下的包都会自动地被做相同的操作。也就是说,余下的包不会再通过这个表,一个一个的被NAT,而是自动地完成。
这就是我们为什么不应该在这个表中做任何过滤的主要原因。PREROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址,OUTPUT链改变本地产生的包的目的地址,POSTROUTING链在包就要离开防火墙之前改变其源地址。
所以NAT分为SNAT DNAT SANT作用只限于POSTROUTING而DANT作用于PREROUTING OUTPUT
A.SNAT 源地址NAT
常用于linux网关
例:内网10.0.0.0/8 外网192.168.14.14/24内网通过此外网机器访问外网
#iptables -t nat -APOSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to 192.168.14.14 网关
凡是来自内网10.0.0.0/8的包,把class="lazy" data-src换成192.168.14.14转发出 若把 -j SNAT --to192.168.14.14
换为MASQUERDE 适合动态可变的IP,即根据本机路由选择IP 注:DNAT由网关192.168.14.14自动完成
B.DNAT 目的地址NAT
常用于解决内网的Server发布内网端口的映射
例:内网:10.0.0.2/8:80 外网:192.168.14.14/24:8001
#iptables -t nat -APREROUTING -d 192.168.14.14 -p tcp --dport 8001 -jDNAT --to 10.0.0.2:80
凡目的地址为192.168.14.14:8001的数据包目的地址改为10.0.0.2:80
注:--to[ipaddr]-[ipaddr] [:port-port] 可多IP(范围)作负载均衡(轮转),但存在单点故障
#iptables -t filter -AFORWARD -p udp -j DROP
#iptables -t nat -A PREROUTING -s 10.0.0.0/8-p udp --dport 53 -j DNAT --to 192.168.14.254
上面二条规则限制网关将不转发udp包,内网的任何DNS查询将被发往指定的企业DNS服务器,实现DNS的透
明代理.
#iptables -t nat -A PREROUTING -s 10.0.0.0/8-p tcp
--dport 80 -j DNAT --to 192.168.14.14:3128 此句实现web透明代理
#iptables -t nat -I PREROUTING -m mac--mac-source 00:1A:A0:98:B1:6E -j DROP
#iptables -A FORWARD -i eth2 -m state --stateESTABLISHED,RELATED -j ACCEPT 网关常用
#iptables -t nat -A PREROUTING -p tcp --dport80 -j REDIRECT --to-ports 8080 端口NAT
#iptables -A FORWARD -s 192.168.1.189 -mlimit –limit 20/s -j ACCEPT
#iptables -A FORWARD -s 192.168.1.189DROP 以二句用在网关上限速..
iprange模块的应用..
#iptables-t nat -I PREROUTING -i eth2 -m iprange
--class="lazy" data-src-range 192.168.1.102-192.168.1.102 -j ACCEPT
#iptables-t nat -A PREROUTING -m iprange --class="lazy" data-src-range192.168.0.20-192.168.0.255
-i eth1 -p tcp -m tcp --dport 1:65535 -j REDIRECT --to-ports 80
string模块的应用..
#iptables-I FORWARD -s 192.168.1.189 -m string --string "qq.com" -j DROP
-m comment --comment "denny go to qq.com"
#iptables-I FORWARD -m string --string "腾讯" -j DROP
#iptables-I FORWARD -s 192.168.1.189 -m string --string "qq.com" -j DROP
#iptables-I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROP
comment模块的应用..
#iptables-I FORWARD -s 192.168.1.189 -p tcp --dport 80 -j DROP
-m comment --comment "the bad guy can not online"
#iptables -I FORWARD -s 192.168.3.159 -mstring --string "qq.com" -j DROP
-mcomment --comment "denny go to qq.com"
其它常应用:
#iptables -t nat -I PREROUTING -p udp --dport53 -j ACCEPT
#iptables -t nat -I PREROUTING -p tcp --dport80 -j ACCEPT
#iptables -t nat -I PREROUTING -p gre -jACCEPT
#iptables -t nat -I PREROUTING -p icmp -jACCEPT
#iptables -A INPUT -i tun+ -j ACCEPT
#iptables -A FORWARD -i tun+ -j ACCEPT