防火牆的NAT機制

      Nat:Network Address  Tranlation(網絡地址轉換),既可以應用在服務器端,也可以應用到客戶端。在客戶端時爲了隱藏客戶端的IP,防止客戶端受到網絡***。在服務端是爲了保護服務器端主機在因特網上的安全。

1.爲什麼要使用NAT技術?

因爲目前寬帶網絡(ADSL)最多隻能提供給用戶的IP爲16個,最少爲1個,而一般企業內會有很多主機,會出現IP不夠用的狀態。在這種情況下,使用NAT技術可以使成千上萬個主機 同時通過一個公網IP連接上因特網。

2.SNAT,DNAT和數據包走向。

SNAT:源地址轉換

DNAT:目的地址轉換。

數據包走向:PREROUTING——》路由表——》POSTROUTING

3.NAT機制的三條鏈

NAT機制共有三個鏈,PREROUTING,OUTPUT,POSTROUTING。

[root@vm1 ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.0.0/24       anywhere            to:192.168.5.178

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

PREROUTING:位於NAT機制的最前面,主要是修改數據包的Destination IP,主要執行DNAT任務。

POSTROUTING:位於NAT機制的最末端,主要是修改數據包的Source IP,只要執行SNAT任務。

OUTPUT:當本機進程需要將數據包發出本機時,先要經過OUTPUT鏈匹配,如果匹配成功允許發出,纔會將數據包交給POSTROUTING鏈進行SNAT。

數據經過NAT機制的流程:當出具報傳入後先經過PREROUTING鏈進行DNAT操作,然後將數據包傳給路由表,路由表對數據包進行拆解分析,如果該數據包是傳給本機的,路由表對數據拆解分析後確定匹配成功,則傳給本機進程進行處理,如果路由表對數據包驚醒拆解分析後確定不是傳給本機的,則直接將其傳給POSTROUTING鏈進行SNAT操作,再傳出。當本機需要將某個數據包傳出時,本機進程先將數據包傳給路由表,路由表拆解分析後傳給OUTPUT鏈進行匹配,若匹配成功,則傳給POSTROUTING鏈做SNAT操作後傳出,若匹配不成功,則將數據包丟棄。


4.NAT分類

(1).一對多NAT

        目的:a.節省公網IP的使用量,企業只需要一個公網IP就足夠了,企業內部使用私有IP,通過NAT機制將私有IP轉換爲公網IP連接因特網。

              b.隱藏企業內部主機的IP,NAT機制會將私有IP轉換成公網IP連接因特網,企業內網躲避在NAT之後,因特網使用者無法得知企業內網的IP,即便***知道了,因爲NAT機制,也增加了******企業內網的難度。\


構建一對多NAT的網絡環境

準備環境:在NAT主機上設置兩塊網卡eth0和eth1。

                公網IP(eth0):10.0.1.200

                私有IP(eth1):192.168.0.0/24

                私有IP主機默認網關:192.168.0.254

說明:當企業內部主機發送數據包到因特網時,即192.168.0.0/24網段上的主機要訪問因特網上的主機,其請求數據包內的Source IP必然時私有IP,要讓這樣的數據包能夠發送到因特網上,必然要通過NAT主機上的SNAT機制,將外送的數據包的Source IP改爲NAT主機上的公網IP,如此才能讓私有網絡的數據包發送到因特網上。

NAT主機上SNAT的語法規則:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 10.0.1.200

語法解析:

-t nat:選擇表,選擇要使用的功能時netfilter的nat機制

-A POSTROUTING:選擇功能,指定要執行的操作爲SNAT機制。

-o eth0:表明數據包的流向,意爲執行了SNAT機制後數據包從eth0接口傳入公網。

-s 192.168.0.0/24:指定源IP,意爲只用來自192.168.0.0/24網段的數據包才符合規則

-j SNAT --to 10.0.1.200:如果數據包符合以上規則,就將數據包的Source IP改爲10.0.1.200。

注:當設置了數據包出去的規則之後,就不需要考慮數據包返回的方向,因爲系統會自動設置好相對應方向的應答數據包的規則。所以只需要指定單方面的規則即可。

設置SNAT或者DNAT機制時需要注意的問題:

a.接口名稱:接口名稱可以通過“ifconfig”命令查看,接口名稱一定要與網卡相對應。

b.公網IP是動態的:可以做如下設置“iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASOUERADE”。


(2)多對多NAT

    多對多NAT主要是針對一對多NAT的缺陷而改進的,當一個龐大的企業內網頻繁對因特網進行訪問,而所有的訪問請求都轉到某一臺因特網服務器上,會造成一個因特網主機頻繁對因特網進行訪問,尤其是網絡遊戲主機,無法同時接受相同一個IP對其多次連接。而對多網NAT是將所個私有IP改變爲多個公網IP,可以降低相同公網IP連接上同一臺因特網主機的概率。

語法規則:iptables -t nat -A POSTROUTING -o eth0 -s192.168.0.0/24 -j SNAT --to IP1,IP2....


(3)一對一NAT

    一對一NAT機制中,NAT主機至少需要三塊網卡,接口分別爲eth0,eth1,eth2,eth0連接公網,eth1連接服務器主機網絡,eth2連接企業內網。還需要準備足夠的公網IP,分別用於對外服務器地址轉換後使用。當客戶通過公網訪問企業對外服務器時,會先經過nat主機做DNAT,將被訪問的公網IP轉換爲對外服務器上的私有IP,然後將請求轉發給對外服務器上,同時對外服務器回饋給客戶的請求應答數據包也要經過nat主機做DNAT,將私有IP轉換爲公網IP,在通過因特網返回給客戶。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章