iptables實現端口映射(本地和遠程端口映射)


說明:
需要將外網訪問本地IP(192.168.75.5)的80端口轉換為訪問192.168.75.3的8000端口,這就需要用到iptables的端口映射

實現:
1. 需要先開啟linux的數據轉發功能

# vi /etc/sysctl.conf,將net.ipv4.ip_forward=0更改為net.ipv4.ip_forward=1 # sysctl -p //使數據轉發功能生效

 
2. 更改iptables,使之實現nat映射功能

將外網訪問192.168.75.580端口轉發到192.168.75.3:8000端口。 # iptables -t nat -A PREROUTING -d 192.168.75.5 -p tcp --dport 80 -j DNAT --to-destination 192.168.75.3:8000 192.168.75.3 8000端口將數據返回給客戶端時,將源ip改為192.168.75.5 # iptables -t nat -A POSTROUTING -d 192.168.75.3 -p tcp --dport 8000 -j SNAT --to 192.168.75.5

 
3. 查看nat,可以使用命令:iptables -t nat –list檢查nat列表信息

 

 以上是針對從一台機到另一台機的端口轉發,如果要針對本機進行端口轉發,就需要按如下操作:

將外網訪問80端口的數據轉發到8080端口 # iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 將本機訪問80端口的轉發到本機8080 # iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080 # iptables -t nat -A OUTPUT -p tcp -d 192.168.4.177 --dport 80 -j DNAT --to 127.0.0.1:8080 本地連接指的是在本機上,用 127.0.0.1 或者本機 IP 來訪問本機的端口。本地連接的數據包不會通過網卡,而是由內核處理后直接發給本地進程。這種數據包在 iptables 中只經過 OUTPUT 鏈,而不會經過 PREROUTING 鏈。所以需要在 OUTPUT 鏈中進行 DNAT。除了對 127.0.0.1 之外,對本機 IP (即 192.168.4.177) 的訪問也屬於本地連接。

iptables刪除操作:

查看nat規則,並顯示行號
iptables -t nat --list --line-number

刪除一條nat 規則 刪除SNAT規則
iptables -t nat -D POSTROUTING 1
iptables -t nat -D POSTROUTING 7


ubuntu中iptables重啟生效:

查看nat規則,並顯示行號
iptables -t nat --list --line-number

刪除一條nat 規則 刪除SNAT規則
iptables -t nat -D POSTROUTING 1
iptables -t nat -D POSTROUTING 7

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM