Iptables中SNAT和MASQUERADE的區別

Iptables中能夠靈活的作各類網絡地址轉換(NAT);前端

    網絡地址轉換主要有兩種:SNAT和DNAT.web

SNAT是source network address translation的縮寫即源地址目標轉換服務器

好比,多個PC機使用ADSL路由器共享上網,每一個PC機都配置了內網IP。PC機訪問外部網絡的時候,路由器將數據包的報頭中的源地址替換成路由器的ip。當外部網絡的服務器好比網站web服務器接到訪問請求的時候,他的日誌記錄下來的是路由器的ip地址,而不是pc機的內網ip。
這是由於,這個服務器收到的數據包的報頭裏邊的「源地址」,已經被替換了。因此叫作SNAT,基於源地址的地址轉換。網絡

DNAT是destination network address translation的縮寫即目標網絡地址轉換ide

典型的應用是,有個web服務器放在內網,配置內網ip,前端有個防火牆,配置公網ip,互聯網上的訪問者使用公網ip來訪問這個網站。當訪問的時候,客戶端發出一個數據包,這個數據包的報頭裏邊,目標地址寫的是防火牆的公網ip。防火牆會把這個數據包的報頭改寫一次,將目標地址改寫成web服務器的內網ip,而後再把這個數據包發送到內網的web服務器上這樣,數據包就穿透了防火牆,並從公網ip變成了一個對內網地址的訪問了,即DNAT,基於目標的網絡地址轉換 。網站

MASQUERADE,地址假裝,在iptables中有着和SNAT相近的效果,但也有一些區別:spa

SNAT,DNAT,MASQUERADE都是NAT,MASQUERADE是SNAT的一個特例。
SNAT是指在數據包從網卡發送出去的時候,把數據包中的源地址部分替換爲指定的IP,這樣,接收方就認爲數據包的來源是被替換的那個IP的主機。
設計


MASQUERADE是用發送數據的網卡上的IP來替換源IP,所以,對於那些IP不固定的場合,好比撥號網絡或者經過dhcp分配IP的狀況下,就得用MASQUERADE。
日誌


DNAT,就是指數據包從網卡發送出去的時候,修改數據包中的目的IP,表現爲若是你想訪問A,但是由於網關作了DNAT,把全部訪問A的數據包的目的IP所有修改成B,那麼,你實際上訪問的是B。

由於,路由是按照目的地址來選擇的,所以,DNAT是在PREROUTING鏈上來進行的,而SNAT是在數據包發送出去的時候才進行,所以是在POSTROUTING鏈上進行的
orm

但使用SNAT的時候,出口ip的地址範圍能夠是一個,也能夠是多個,例如:

以下命令表示把全部10.8.0.0網段的數據包SNAT成192.168.5.3的ip而後發出去
    iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT –to-source 192.168.5.3

以下命令表示把全部10.8.0.0網段的數據包SNAT成192.168.5.3/192.168.5.4/192.168.5.5等幾個ip而後發出去
    iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT –to-source 192.168.5.3-192.168.5.5

這就是SNAT的使用方法,便可以NAT成一個地址,也能夠NAT成多個地址
可是,對於SNAT,無論是幾個地址,必須明確的指定要SNAT的ip
假如當前系統用的是ADSL動態撥號方式,那麼每次撥號,出口ip192.168.5.3都會改變
並且改變的幅度很大,不必定是192.168.5.3到192.168.5.5範圍內的地址
這個時候若是按照如今的方式來配置iptables就會出現問題了
由於每次撥號後,服務器地址都會變化,而iptables規則內的ip是不會隨着自動變化的
每次地址變化後都必須手工修改一次iptables,把規則裏邊的固定ip改爲新的ip
這樣是很是很差用的

MASQUERADE就是針對這種場景而設計的,他的做用是,從服務器的網卡上,自動獲取當前ip地址來作NAT
好比下邊的命令:
iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
如此配置的話,不用指定SNAT的目標ip了
無論如今eth0的出口得到了怎樣的動態ip,MASQUERADE會自動讀取eth0如今的ip地址而後作SNAT出去
這樣就實現了很好的動態SNAT地址轉換

 

注:對於MASQUERADE,只是計算機的負荷稍微多一點。由於對每一個匹配的包,MASQUERADE都要查找可用的IP地址,而不象SNAT用的IP地址是配置好的。固然,這也有好處,就是咱們可使用經過PPP、 PPPOE、SLIP等撥號獲得的地址,這些地址但是由ISP的DHCP隨機分配的。

相關文章
相關標籤/搜索