一:DNAT與SNAT講解及準備工作
SNAT:源地址轉換,代理內部客戶端訪問外部網絡
目標地址不變,重新改寫源地址,并在本機建立NAT表項,當數據返回時,根據NAT表將目的地址數據改寫為數據發送出去時候的源地址,并發送給主機,目前基本都是解決內網用戶用同一個公網IP地址上網的情況。
DNAT:目標地址轉換,將內部服務器發布至外部網絡
和SNAT相反,源地址不變,重新修改目標地址,在本機建立NAT表項,當數據返回時,根據NAT表將源地址修改為數據發送過來時的目標地址,并發給遠程主機在DNAT的基礎上,可以根據請求數據包的端口做PNAT(端口轉換,也稱為端口映射),可以根據請求數據包不同的端口改寫不同的目標地址,從而發送給不同的主機這在用一個公網地址做不同服務時用的比較多,而且相對來說,用NAT的方式可以隱藏后端服務器的真實地址,比較安全。
SNAT的數據流向過程
首先進入PREROUTING,發現不是本網段的地址,而后開始查找路由表(查找路由的過程在PREROUTING和FORWARD之間),于是經過FORWARD鏈進行轉發,在通過POSTROUTING時進行NAT轉換。在這個流程中,NAT轉換的步驟在POSTROUTING鏈上實現,之所以不再PREROUTING上做NAT是因為數據包在進來之前,還不知道是本網段地址還是外網地址。
DNAT的數據流向過程
在DNAT中,NAT要在PREROUTING鏈上做。在數據進入主機后,路由選擇過程是在PREROUTING和FORWARD之間的,所以應該先做地址轉換之后再進行路由選擇,而后經過FORWARD鏈,最后從POSTROUTING鏈出去。
這里三臺計算機都使用的VMware來實現,172.16.的系統都是CentOS6.4_x86_64,192.168.是windows XP。
PC1地址:172.16.251.185 網關指向:172.16.251.186
route add default gw 172.16.251.186
NAT服務器地址:172.16.251.185
PC2地址:
二、SNAT的實現:
1、在我們做NAT之前,首先要把NAT服務器的路由功能打開,不然數據包過不了FORWARD鏈
sysctl -w net.ipv4.ip_forward=1
也可以使用文件永久生效,下面值改為1即可
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
執行如下命令讓其生效
sysctl -p
2、在NAT服務器添加iptables規則如:
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -j SNAT –to-source 192.168.254.61
//在POSTROUTING鏈上面,將來自源地址為172.16.0.0/16網段的數據包的源地址都轉換為192.168.254.61
下一篇:hive中表狀態數據的獲取