NAT(網絡地址轉換)
1>先經過NAT table 的 PREROUTING鏈 //修改目的IP
2>經由路由判斷確定這個數據包是否要進入本機,若不進入主機則下一步
3>再經過 Filter table 的 FORWARD 鏈
4>通過NAT table 的 POSTROUTING鏈,最後傳送出去 //修改源IP
NAT服務器和路由器的區別:
1、基本上NAT服務器一定是路由器,不過NAT服務器會修改IP報頭數據,因此和普通的單純傳遞數據包的路由器不同。
2、一般作爲IP分享器的NAT服務器都是一邊爲public IP一邊爲private IP,而路由器兩邊爲private IP或兩邊爲public IP。
NAT腳本:
iptables -A INPUT -i $INIF -j ACCEPT
#$INIF指內網接口
echo "1" > /proc/sys/net/ipv4/ip_forward
#讓Linux具有路由功能
iptables -t net -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
#$innet指私有網段
#$EXTIF指對外接口
SNAT:修改數據報文的源IP或源端口
DNAT:修改數據報文的目的IP或目的端口
靜態SNAT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100
動態SNAT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100-192.168.1.200
DNAT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \
-j DNAT --to-destination 192.168.100.10:80
#將從eth0傳入的對tcp80端口的請求重新傳遞到192.168.100.10:80上
iptables -t nat -A PREROUTING -p tcp --dport 80 \
-j REDIRECT --to-ports 8080
#本機上的端口轉發