天天看點

linux服務-iptables( snat 和dnat )iptables snat 和dnat說明

iptables snat 和dnat說明

1.dnat是用來做目的網絡位址轉換的,就是重寫包的目的IP位址。比如,你的Web伺服器在LAN内部,而且沒有可在Internet上使用的真實IP位址,那就可以使用這個dnat讓防火牆把所有到它自己HTTP端口的包轉發給LAN内部真正的Web伺服器。目的位址也可以是一個範圍,這樣的話,DNAT會為每次請求随機配置設定一個機器,這樣我們可以用這個dnat做負載平衡。

[[email protected] ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp\

--dst 122.225.97.111 --dport 80 -j DNAT --to-destination 192.168.1.130:80

上面的例子是把所有通過eth0這個網卡發往位址122.225.97.111的包都轉發到區域網路的中192.168.1.130這台機器上.它也可以配全--string功能更強大.

[[email protected] ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80\

-m string --string "img.51yip.com" --algo bm -j DNAT --to-destination 192.168.1.136:80

将比對到img.51yip.com的請求轉到區域網路的192.168.1.136這台機器上.

2.snat就是把源位址轉換成(僞裝成)其他位址,可以讓本地ip位址僞裝成其他機器的ip位址,或者是公網IP,

假如我有三台機器,一台能上外網,另外二台卻不可以.不能上網的機器可以僞裝成可上網的那機器的IP

[[email protected] ~]# iptables -t nat -I POSTROUTING 1 -j SNAT -s 192.168.10.0/24 --to-destination 192.168.1.108

192.168.10.0/24這個IP段是不可以上網的,108這台機器是可以上網的.

3.然後,我們再看看資料包在iptables中要經過的鍊(chain):

linux服務-iptables( snat 和dnat )iptables snat 和dnat說明

我們要做的DNAT是在PREROUTING鍊中做,比如我們要把通路202.103.96.112的通路轉發到192.168.0.112上:

iptables -t nat -A PREROUTING -d 202.103.96.112 -j DNAT --to-destination 192.168.0.112

而SNAT自然是要在資料包流出這台機器之前的最後一個鍊也就是POSTROUTING鍊來進行操作

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 58.20.51.66

這個語句就是告訴系統把即将要流出本機的資料的源位址修改成為58.20.51.66。這樣,資料包在達到目的機器以後,目的機器會将包傳回到58.20.51.66也就是本機。如果不做這個操作,那麼你的資料包在傳遞的過程中,reply的包肯定會丢失。