說明:
須要將外網訪問本地IP(192.168.75.5)的80端口轉換爲訪問192.168.75.3的8000端口,這就須要用到iptables的端口映射
實現:
1. 須要先開啓linux的數據轉發功能linux
# vi /etc/sysctl.conf,將net.ipv4.ip_forward=0更改成net.ipv4.ip_forward=1 # sysctl -p //使數據轉發功能生效
2. 更改iptables,使之實現nat映射功能ubuntu
將外網訪問192.168.75.5的80端口轉發到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列表信息tcp
以上是針對從一臺機到另外一臺機的端口轉發,若是要針對本機進行端口轉發,就須要按以下操做:spa
將外網訪問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-numbercode
刪除一條nat 規則 刪除SNAT規則
iptables -t nat -D POSTROUTING 1
iptables -t nat -D POSTROUTING 7進程
ubuntu中iptables重啓生效:
查看nat規則,並顯示行號
iptables -t nat --list --line-numberip
刪除一條nat 規則 刪除SNAT規則
iptables -t nat -D POSTROUTING 1
iptables -t nat -D POSTROUTING 7it