NAT:(工作在網絡和傳輸層) 過載技術
Basic NAT:靜態NAT 一個內部主機,分配一個外網地址 NAPT:動態NAT,網絡地址端口轉換;net會話表 源地址轉換:SNAT 用于內網主機訪問互聯網 目標地址轉換:DNAT 讓互聯網上主機訪問本地內網上的某服務器上的服務(發布)
iptables基于SNAT和DNAT這兩個目標(target)實現地址轉換技術
-j SNT --to-source SIP 規則添加:POSTROUTING鏈 -j MASQUERADE 動態獲取(外網地址是動態的) -j DNAT --to-destination DIP{:PORT} 支持端口映射
源地址轉換示例
// 此時 filter 表上的 FORWARD 鏈 要打開(會經過此表中的此鏈) [root@nat ~]# iptables -t nat -F [root@nat ~]# iptables -t nat -L -n [root@nat ~]# iptables -t nat -A POSTROUTING -s 10.1.249.158 -j SNAT --to-source 192.168.2.3 [root@nat ~]# iptables -t nat -L -n Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 10.1.249.158 0.0.0.0/0 to:192.168.2.3 內部主機訪問外部主機 [root@nei ~]# curl http://192.168.2.4/index.html hello 查看外部主機中web的訪問日志 [root@wai ~]# tail /var/log/httpd/access_log 192.168.2.3 - - [13/Oct/2016:21:40:58 +0800] 192.168.2.3 - - [13/Oct/2016:21:40:59 +0800] //主機,我們的內部主機IP為10.1.249.158 //而httpd的訪問日志為192.168.2.3的訪問 //說明成功實現了源地址轉換
目標地址轉換示例(對80端口的轉換)
[root@luyou ~]# iptables -t filter -F [root@luyou ~]# iptables -t nat -F [root@luyou ~]# iptables -t nat -A PREROUTING -d 10.1.249.125 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.4 Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 10.1.249.125 tcp dpt:80 to:192.168.2.4 [root@luyou ~]# netstat -tln | grep "\<80\>" 此時本機上并沒有開放80端口 [root@wai ~]# curl http://10.1.249.125 hello --> 此時我們訪問為 luyou 主機上的80端口 由上面可知,此服務器上并沒有開放80,而是將請求送往 后端服務器
目標地址和端口轉換示例(對22端口的轉換)
[root@luyou ~]# iptables -t filter -F FORWARD [root@luyou ~]# iptables -t nat -A PREROUTING -d 10.1.249.125 -p tcp --dport 22022 -j DNAT --to-destination 192.168.2.4:22 Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 10.1.249.125 tcp dpt:22022 to:192.168.2.4:22 [root@wai ~]# ssh -p 22022 10.1.249.125 --> 連接 luyou 設備的22022端口 [root@nei ~]# --> 連接到 nei 內網的主機上來 [root@luyou ~]# iptables -t nat -L -n -v Chain PREROUTING (policy ACCEPT 42 packets, 4633 bytes) pkts bytes target prot opt in out source destination --> 有報文成功匹配到 1 60 DNAT tcp -- * * 0.0.0.0/0 10.1.249.125 tcp dpt:22022 to:192.168.2.4:22 //此時我們請求luyou這臺NAT服務器的22022端口的ssh服務,此時我們nat路由器的ssh服務并沒有監聽在22022端口, //而是將目標IP和目標端口都進行了轉換了,使我們連接到了內網的ssh服務器上
原創文章,作者:sixijie,如若轉載,請注明出處:http://www.www58058.com/56515