1. 程式人生 > >使用 iptables 進行端口轉發

使用 iptables 進行端口轉發

同時 系統 遠程桌面 conf entos 刪除 centos network 僅支持

端口轉發用來中轉國外的虛擬機例如遠程桌面 效果非常明顯,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

使用 iptables 進行端口轉發