記一次CentOS下的跨IP轉發端口操作


背景

由於自己在家搭建了一套雲服務集群,綁定域名后發現一個問題,小米路由器的DMZ和NAT功能不能同時開啟,考慮開啟DMZ之后,通過DMZ主機利用端口轉發實現集群的外網訪問。

 

方案

DMZ主機端口全部默認,由於集群有四個節點,另外三個節點的22端口分別用1122,1222,1322進行代替,這樣今后即可通過域名+對應端口實現CRT SSH免密碼訪問。

在DMZ主機執行命令:

# 開啟端口

firewall-cmd --zone=public --add-port=1122/tcp --permanent
firewall-cmd --zone=public --add-port=1222/tcp --permanent
firewall-cmd --zone=public --add-port=1322/tcp --permanent

#轉發端口

firewall-cmd --permanent --zone=public --add-forward-port=port=1122:proto=tcp:toaddr=192.168.1.61:toport=22
firewall-cmd --permanent --zone=public --add-forward-port=port=1222:proto=tcp:toaddr=192.168.1.62:toport=22
firewall-cmd --permanent --zone=public --add-forward-port=port=1322:proto=tcp:toaddr=192.168.1.63:toport=22

#立即生效
firewall-cmd --reload 

問題

執行后發現,通過“telnet 域名 轉發端口”不通,進入DMZ主機,“telnet 局域網IP 22”沒有問題,“telnet 本機 轉發端口”不通,通過命令“firewall-cmd --list-all”查詢,所有轉發設置都沒問題,考慮到對應端口都正常,應該是轉發受到了屏蔽之類的操作

解決方案

綜合百度各個文章,發現該問題受兩部分配置影響,一個是CentOS內核默認禁止轉發,另一個是防火牆默認禁止轉發,需要同時開啟兩部分配置,端口轉發方能生效,命令如下:

# 1、開啟內核 IP 地址轉發
# 查看net.ipv4.ip_forward值,1為允許轉發,0為不允許,如果為0改為1

/etc/sysctl.conf

# 使之立即生效

sysctl -p

# 2、防火牆允許 IP 地址轉發
# 執行 firewall-cmd --query-masquerade 查看狀態,如果是 no,可執行下面的命令開啟轉發。
# 開啟 IP 地址轉發

firewall-cmd --add-masquerade --permanent

# 重載防火牆規則,使之立即生效

firewall-cmd --reload

# 保險起見,重啟一下防火牆服務

systemctl restart firewalld

執行后,重新外網通過域名telnet測試成功。


免責聲明!

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



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