使用 iptables 進行端口轉發


端口轉發用來中轉國外的虛擬機例如遠程桌面 效果非常明顯,iptables不僅支持單端口,連端口段也可以轉發,同時TCP/UDP均可

特別注明:本地服務器 IP 未必是公網 IP ,像阿里雲就是內網 IP ,請用 ipconfig 確認下走流量的網卡 IP 是外網還是內網。

 

第一步:開啟系統的轉發功能

vi /etc/sysctl.conf



net.ipv4.ip_forward=0

修改成

net.ipv4.ip_forward=1

編輯后使用命令讓配置馬上生效

sysctl -p

第二步: iptables 的命令

iptables -t nat -A PREROUTING -p tcp --dport [端口號] -j DNAT --to-destination [目標IP]
iptables -t nat -A PREROUTING -p udp --dport [端口號] -j DNAT --to-destination [目標IP]
iptables -t nat -A POSTROUTING -p tcp -d [目標IP] --dport [端口號] -j SNAT --to-source [本地服務器IP]
iptables -t nat -A POSTROUTING -p udp -d [目標IP] --dport [端口號] -j SNAT --to-source [本地服務器IP]

第三步:重啟 iptables 使配置生效(僅適合Centos6,7默認沒有安裝iptables防火牆,Debian/Ubuntu 不需要輸入這個命令)

service iptables save
service iptables restart

擴展需求
多端口轉發修改方案: ( 將本地服務器的 50000~65535 轉發至目標 IP 為 1.1.1.1 的 50000~65535 端口 )

iptables -t nat  -A PREROUTING -p tcp -m tcp --dport 50000:65535 -j DNAT --to-destination 1.1.1.1
iptables -t nat  -A PREROUTING -p udp -m udp --dport 50000:65535 -j DNAT --to-destination 1.1.1.1
iptables -t nat  -A POSTROUTING -d 1.1.1.1 -p tcp -m tcp --dport 50000:65535 -j SNAT --to-source [本地服務器IP]
iptables -t nat  -A POSTROUTING -d 1.1.1.1 -p udp -m udp --dport 50000:65535 -j SNAT --to-source [本地服務器IP]

非同端口號修改方案:(使用本地服務器的 60000 端口來轉發目標 IP 為 1.1.1.1 的 50000 端口)

iptables -t nat   -A PREROUTING -p tcp -m tcp --dport 60000 -j DNAT --to-destination 1.1.1.1:50000
iptables -t nat   -A PREROUTING -p udp -m udp --dport 60000 -j DNAT --to-destination 1.1.1.1:50000
iptables -t nat   -A POSTROUTING -d 1.1.1.1 -p tcp -m tcp --dport 50000 -j SNAT --to-source [本地服務器IP]
iptables -t nat   -A POSTROUTING -d 1.1.1.1 -p udp -m udp --dport 50000 -j SNAT --to-source [本地服務器IP]

查看 NAT 規則

iptables -t nat -vnL

刪除 NAT 規則
通過上面的查看規則命令,查看規則后,確定你要刪除的規則的順序,下面的命令是刪除第一個規則。

iptables -t nat -D POSTROUTING 1
iptables -t nat -D PREROUTING 1

保存 iptables 規則並開機自動配置(Debian / Ubuntu)

iptables-save > /etc/iptables-rules-ipv4

最后,我們需要編輯/etc/network/interfaces文件

vi /etc/network/interfaces

在最后加入下面一行

pre-up iptables-restore < /etc/iptables-rules-ipv4

參考:https://www.91yun.org/archives/3008


免責聲明!

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



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