- Linux系統安全:縱深防御、安全掃描與入侵檢測
- 胥峰
- 921字
- 2019-08-06 18:29:26
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在進行通信
網絡地址轉換是運維人員在工作中經常用到的技術,因此我們需要非常熟悉源地址轉換和目的地址轉換這兩種方案。
- 每天5分鐘玩轉Kubernetes
- Modern Web Testing with TestCafe
- Linux系統架構與運維實戰
- Mobile-first Bootstrap
- Alfresco 4 Enterprise Content Management Implementation
- RESS Essentials
- Windows 7中文版從入門到精通(修訂版)
- AutoCAD 2014中文版從入門到精通
- Delphi Programming Projects
- jQuery UI Cookbook
- 寫給架構師的Linux實踐:設計并實現基于Linux的IT解決方案
- 跟老男孩學Linux運維:Shell編程實戰
- Linux軟件管理平臺設計與實現
- Web Penetration Testing with Kali Linux(Third Edition)
- VMware vSphere 5.1 Cookbook