linux端口轉發:分為本機端口轉發和將本機端口轉發到其他機器 這2種情況


第1種情況:
將本機的端口轉發到本機的另外不同的端口上

使用場景:比如將本機的18006端口轉發 到 本機的8006端口上,8006端口(真正服務所在的監聽端口)只允許本地localhost訪問,而18006端口可以在外部訪問時,這種方式很管用。
iptables -t nat -I PREROUTING -m tcp -p tcp -d 106.111.110.223 --dport 18006 -j REDIRECT --to-ports 8006
或者
iptables -t nat -I PREROUTING -p tcp -d 166.111.110.223 --dport 18006 -j DNAT --to 166.111.110.223:8006 這種方式比較特殊,但不能改成這樣iptables -t nat -I PREROUTING -p tcp -d 166.111.110.223 --dport 18006 -j DNAT --to 127.0.0.1:8006

參考例子:設置端口轉發功能,將192.168.91.129 10001端口的請求轉發到 192.168.91.129的8080端口
iptables -t nat -A PREROUTING -p tcp -i eno16777736 -d 192.168.91.129 --dport 10001 -j DNAT --to 192.168.91.129:8080
以下3句是保證在本機可以通過10001端口訪問到8080
iptables -t nat -A PREROUTING -p tcp -i lo -d 127.0.0.1 --dport 10001 -j DNAT --to 192.168.91.129:8080
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 10001 -j DNAT --to 192.168.91.129:8080
iptables -t nat -A OUTPUT -p tcp -d 192.168.91.129 --dport 10001 -j DNAT --to 192.168.91.129:8080

第2種情況:
將本機(機器1)的端口 轉移 到其他機器上(機器2)
使用場景:通俗的說就是端口映射
iptables -t nat -I PREROUTING -p tcp -d 166.111.110.223 --dport 18006 -j DNAT --to 100.72.139.1:8006
注意端口映射還需要機器1上開啟net.ipv4.ip_forward=1以及snat 在機器2上設定機器1為默認路由
例子如下:
iptables -t nat -A PREROUTING -d 192.168.172.130 -p tcp --dport 8000 -j DNAT --to-destination 192.168.172.131:80
iptables -t nat -A POSTROUTING -d 192.168.172.131 -p tcp --dport 80 -j SNAT --to 192.168.172.130

注意:實際使用過程中在ros只定義了dnat也即上面的第一步,不需要第2步,也可以正常的對外提供服務)

在firewalld中的實現:
1)msquerade firewall-cmd --permanent --add-masquerade
2)firewall-cmd --permanent --add-forward-port=port=12345:proto=tcp:toaddr=192.168.172.131:toport=22
3)生效 firewalld-cmd --reload

其實還可以利用ncat實現端口轉發(涉及gnb項目的udp數據通過tcp來轉發-gnb_udp_over_tcp)
參考:Linux端口轉發的幾種常用方法 https://blog.csdn.net/u014389734/article/details/108989653


免責聲明!

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



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