NAT表的應用: (Network AddressTranslation網絡地址轉換)linux
數據包在局域網中的傳輸步驟:網絡
先通過NAT表的PREROUTING 鏈tcp
路由判斷是不是發送給本機的包,如不是則轉發出去(前提是要開啓路由轉發).net
再通過Filter表的FORWARD 鏈rest
經過NAT表的POSTROUTING 鏈發出去code
NAT的重點在於上面流程的第 1/4 步驟,也就是 NAT表的兩條重要的鏈:PREROUTING 與POSTROUTING。 這兩條鏈重要功能在於修改IP,而這兩條鏈修改的IP又是不同的,POSTROUTING在修改來源IP,PREROUTING則在修改目標IP 。因爲修改的 IP 不同,因此就稱爲來源NAT (Source NAT, SNAT) 及目標 NAT (Destination NAT, DNAT)。ip
SNAT:源地址轉換,可以讓多個內網用戶經過一個外網地址上網路由
DNAT:目標地址轉換,可以讓外網用戶訪問局域網的內網地址虛擬機
應用案例:io
A機器有兩塊網卡,分別是外網網卡eth1(192.168.234.130)和內網網卡eth2(192.168.0.10),B機器有一塊內網網卡eth2(192.168.0.20),A與B機器能夠經過內網進行通訊。
需求一(SNAT):讓B機器能鏈接外網
1.在A機器上打開路由轉發:echo "1">/proc/sys/net/ipv4/ip_forward
2.在A機器上添加nat表規則: iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
3.在B機器上設置網關 route add default gw 192.168.0.10便可
#該操做至關於將A機器當作路由器,轉發局域網到外網中的數據包
需求二(DNAT):C機器只能和A通訊,讓C機器能夠直接連通B機器的22端口
1.在A機器上打開路由轉發echo "1">/ proc/sys/net/ipv4/ip_forward
2.在A機器上添加nat表規則:iptables -t nat -A PREROUTING -d 192.168.234.130 -p tcp --dport 1122 -j DNAT --to 192.168.0.20:22
3.在A機器上添加nat表規則:iptables -t nat -A POSTROUTING -s 192.168.0.20 -j SNAT --to 192.168.234.130
4.在B機器上設置網關 route add default gw 192.168.0.10便可
#A、B能夠看作兩臺虛擬機,C爲Windows主機,C能與A通訊,卻不能與B通訊,經過A作端口映射,C訪問A機器的1122端口時就轉向B機器的22端口
iptables規則備份和恢復:
備份:(將規則保存到指定文件)
[root@linux ~]# iptables-save > /tmp/ipt.bak
恢復:
[root[@linux](https://my.oschina.net/tjxlinux) ~]# iptables-restore < /tmp/ipt.bak