iptables除了最常用的filter表外,偶爾也會用到nat表。 nat即網路位址轉換,它是用來修改來源ip位址或目的ip位址的。現在我們看下簡單的資料包透過iptables到後端主機的表格與鏈的流程。
1.經過NAT表的PREROUTING鏈
2.經過路由判斷該封包是否要進入本機,若不進入,則執行下一步操作
3 .經過Filter的FORWARD鏈
4.經過NAT表的POSTROUTING鏈,最後傳送出去
和NAT相關的是第一步和最後一步,也就是PREROUTING鍊和POSTROUTING鏈。
PREROUTING鏈修改的是目的IP,簡稱DNAT
POSTROUTING鏈修改的是來源IP,簡稱SNAT
#DNAT
那麼哪些場景需要用到DNAT,對於SNAT常見的應用有哪些呢?對於DNAT,最常見的是將內網的連接埠對應到外網中,讓其他使用者可以存取。這樣做內網的安全性大大提升,因為外網是不能直接和內網進行資料傳輸的。
場景:內網有一台主機A(192.168.1.111)上面架設了一個網站,內網中還有一台主機B(192.168.1.2)具有公網ip(39.100.92.12),那麼如何讓外網的使用者造訪到A上面的網站。
這個時候,就需要對B主機上做DNAT操作,讓目的位址從公網ip39.100.92.12修改為內網位址192.168.1.111。操作如下:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \ > -j DNAT --to-destination 192.168.1.111:80
PREROUTING鏈中除了能夠對ip做修改,還能對連接埠進行修改。例如將80端口映射為8080端口,但操作名已經不叫DNAT,而是REDIRECT。
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \ > -j REDIRECT --to-ports 8080
SNAT
對於SNAT,我們最常見的應用是內網機器透過代理伺服器上網,內網的主機沒有公網IP,那麼內部網路的主機封包通過代理伺服器後,代理伺服器就需要將該封包的來源位址修改為該代理伺服器的公用網路ip。
場景:內部網路有一台主機A(192.168.1.111),內部網路中還有一台主機B(192.168.1.2)具有公網ip(39.100.92.12),那麼對於主機A怎麼操作可以連接公網。
# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 \ > -j SNAT --to-source 39.100.92.12
對於DNAT以及SNAT的操作不是很複雜,主要是要理解DNAT以及SNAT的應用場景,剛開始學的時候容易弄混淆,希望大家能主要到它們的區別。
相關推薦:《linux影片教學》
以上是linux下的軟體防火牆iptables-nat表規則的設定的詳細內容。更多資訊請關注PHP中文網其他相關文章!