天天看點

利用iptables實作端口轉發

1 、本地端口轉發

将外網通路本地的4444端口的流量轉發到本地的22端口:

iptables -t nat -A PREROUTING -p tcp --dport 4444 -j REDIRECT --to-ports 22

删除規則用-D參數:iptables -t nat -D PREROUTING -p tcp --dport 4444 -j REDIRECT --to-ports 22

将本地通路本地的4444端口的流量轉發到本地的22端口:

iptables -t nat -A OUTPUT -p tcp --dport 4444 -j REDIRECT --to-ports 22

2、分流

通過PREROUTING鍊,将172.16.250.1網段通路4444端口的包轉發到本機22端口,其他網段則正常通路4444端口,MASQUERADE類似于SNAT,隻是不用寫源位址。

iptables -t nat -A PREROUTING --source 172.16.250.1 -p tcp --dport 4444 -j DNAT --to-destination 172.16.250.3:22

iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE

iptables -t nat -A POSTROUTING --dst 172.16.250.3 -p tcp --dport 22 -j MASQUERADE

3、遠端端口轉發

同樣也需要改配置檔案,使iptables允許ipv4轉發

假如我們想使用192.168.171.139:5555去通路192.168.171.1:9999端口,那麼需要在192.168.171.139的機器上執行下面的指令:

iiptables -F -t nat

iptables -t nat -A PREROUTING --dst 192.168.171.139 -p tcp --dport 5555 -j DNAT --to-destination 192.168.171.1:9999

iptables -t nat -A POSTROUTING --dst 192.168.171.1 -p tcp --dport 9999 -j SNAT --to-source 192.168.171.139

iptables -t nat -nL --line #檢視已有規則

iptables -t nat -D PREROUTING 2

iptables -F -t nat #删除所有規則

參考文章