官术网_书友最值得收藏!

2.2.3 使用iptables進行網絡地址轉換

在實踐中,iptables還經常用于網絡地址轉換(NAT)的環境中。通過網絡地址轉換技術,可以有效減少直接部署公網IP地址的服務器數量,增強網絡環境的安全性。

網絡地址轉換分為源地址轉換和目的地址轉換。

1.源地址轉換

源地址轉換,主要用于無外網IP的服務器(Server B)需要主動向外發起連接訪問互聯網的場景下,如圖2-2所示。

圖2-2 網絡地址轉換的網絡示意圖

在圖2-2中,Server B沒有外網IP,如其需要訪問互聯網,則需要進行如下的設置:

1)在服務器Server B上,指定其網絡的默認網關是10.128.70.112(即Server A的內網地址)。

2)在服務器Server A上,啟用路由功能。啟用的方法是執行以下命令。


sysctl -w net.ipv4.ip_forward=1

3)在Server A上,設置iptables規則如下。


iptables -t filter -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to x.y.z.173 #eth0是Server A的外網網卡,x.y.z.173是Server A的外網IP

經過以上3步驟設置后,Server B將會通過Server A訪問互聯網。此時,在互聯網上看到的源地址是Server A的外網IP。

以Server B訪問8.8.8.8的DNS服務為例,數據流程如下。

1)在Server B上,網絡層數據包格式為:目的地址IP 8.8.8.8,源地址IP10.128.70.111。

2)在Server A上經過源地址轉換后的網絡層數據包格式為:目的地址IP 8.8.8.8,源地址IP x.y.z.173。該轉換條目被記錄在/proc/net/nf_conntrack中。

3)8.8.8.8的響應(源地址IP 8.8.8.8,目的地址IP x.y.z.173)到達Server A后,Server A改寫網絡層數據包為源地址IP 8.8.8.8,目的地址IP 10.128.70.111。

這就是源地址轉換的工作過程。

注意 在源地址轉換的場景中,提供網絡地址轉換功能的服務器(如圖2-2中的Server A)的內網IP和使用網絡地址轉換服務的服務器(如圖2-2中的Server B)的內網IP需要處于同一個網段中。如果不符合這個條件,則需要使用SOCKS代理服務器實現無外網IP的服務器訪問互聯網。Linux系統中常用的開源免費的SOCKS代理服務器是Dantd,該項目的官方網站是http://www.inet.no/dante

2.目的地址轉換

目的地址轉換用于外部用戶直接訪問無外網IP的服務器(Server B)提供的服務時,如圖2-2所示。例如,外部用戶希望通過互聯網訪問到Server B上的Oracle數據庫(監聽端口是TCP 1521)時,可以使用如下的命令在Server A上進行目的地址轉換設置:


iptables -t nat -A PREROUTING -d x.y.z.173 -p tcp -m tcp --dport 1521 -j DNAT --to-destination 10.128.70.111:1521 #改寫目的地址為10.128.70.111,目的端口為1521
iptables -t nat -A POSTROUTING -d 10.128.70.111 -p tcp -m tcp --dport 1521 -j SNAT --to-source 10.128.70.112 #改寫源地址IP為Server A的內網IP,此時在Server B上相當于是與Server A在進行通信

網絡地址轉換是運維人員在工作中經常用到的技術,因此我們需要非常熟悉源地址轉換和目的地址轉換這兩種方案。

主站蜘蛛池模板: 韶关市| 大姚县| 隆林| 麻阳| 通渭县| 治县。| 江口县| 巢湖市| 瑞丽市| 望江县| 麟游县| 合江县| 报价| 万载县| 兴和县| 日喀则市| 介休市| 东丰县| 沁阳市| 南木林县| 安徽省| 安徽省| 石阡县| 湾仔区| 大名县| 清徐县| 宁阳县| 堆龙德庆县| 苏尼特左旗| 龙岩市| 沛县| 辉县市| 利川市| 浦县| 吐鲁番市| 阜阳市| 天津市| 凤城市| 娄烦县| 剑河县| 昌吉市|