0 背景
業(yè)務(wù)應(yīng)用系統(tǒng)的web容器無法更改IP地址,例如臨時SSH端口,但是不想修改SSH配置;例如某些服務(wù)web服務(wù)需要通過公共IP進(jìn)行統(tǒng)一訪問;例如外網(wǎng)訪問內(nèi)網(wǎng)資源等;例如快速調(diào)整web容器的端口而不需要更改服務(wù)的任何配置等。
流量轉(zhuǎn)發(fā)命令語法為:
firewalld-cmd --permanent --zone=<區(qū)域> --add-forward-port=port=<源端口號>:proto=<協(xié)議>:toport=<目標(biāo)端口號>:toaddr=<目標(biāo)IP地址>
1.開啟防火墻
- 初始化防火墻
systemctl status firewalld
systemctl enable firewalld
systemctl restart firewalld
systemctl status firewalld
- 查看防火墻配置端口轉(zhuǎn)發(fā)之前的狀態(tài)
firewall-cmd --state
firewall-cmd --list-all文章來源地址http://www.zghlxwxcb.cn/news/detail-458693.html
- ipv4 端口轉(zhuǎn)發(fā)
配置系統(tǒng)配置文件開啟 ipv4 端口轉(zhuǎn)發(fā)
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
- 開啟 IP 偽裝
firewall-cmd --add-masquerade --zone=public --permanent
firewall-cmd --reload文章來源:http://www.zghlxwxcb.cn/news/detail-458693.html
2.內(nèi)網(wǎng)服務(wù)器端口轉(zhuǎn)發(fā)
將 server1 10.10.7.1:111?端口 轉(zhuǎn)發(fā) 至 server2 10.10.7.2:222端口
操作命令如下:
# firewall-cmd --list-all
# firewall-cmd?-add-forward-port=port=111:proto=tcp:toport=222:toaddr=10.10.7.2 --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
3. 本地服務(wù)器內(nèi)部端口轉(zhuǎn)發(fā)
將server-1?10.10.7.1:8443端口 轉(zhuǎn)發(fā) 至 server-1 10.10.7.1:443
操作命令如下:
# firewall-cmd --list-all
# firewall-cmd --add-forward-port=port=8443:proto=tcp:toport=443?--zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
執(zhí)行成功前,原來的瀏覽器地址是:https://10.10.7.1
執(zhí)行成功后,新的瀏覽器地址是:https://10.10.7.1/accounts/login/ 和https://10.10.7.1:8433/accounts/login/
有些情況是需要加上URL后綴地址,才能訪問,直接訪問IP:PORT會顯示禁止訪問或者403等。
特殊情況說明
通過以上方法firewall-cmd配置本地端口轉(zhuǎn)發(fā),例如將server-1?10.10.7.1:8443 端口轉(zhuǎn)發(fā)至 server-1 10.10.7.1:443 ,在其他機(jī)器使用瀏覽器或者使用curl或者wget是正常的。但是在本地服務(wù)器使用curl或者wget就是提示failed: Connection refused.
為了解決這個問題,因為firewall-cmd-not-allowing-loopback-redirect,故需要執(zhí)行這個命令:
# firewall-cmd --permanent --direct --add-rule ipv4 nat OUTPUT 0 -p tcp -o lo --dport 8443?-j REDIRECT --to-ports 443
# firewall-cmd --reload
# firewall-cmd --list-all
?這時候,我們看到規(guī)則沒有很大變化,但是我們在本地機(jī)器執(zhí)行curl或者wget已經(jīng)正常顯示了。
參考文章:1445918 – firewalld does not allow port forwarding on localhost
4. 刪除端口轉(zhuǎn)發(fā)
# firewall-cmd --list-all
移除 將本地端口8443 轉(zhuǎn)發(fā) 本地端口80
# firewall-cmd --remove-forward-port=port=8443:proto=tcp:toport=443--zone=public --permanent
移除 將本地端口1111 轉(zhuǎn)發(fā)10.10.7.2 的222端口
# firewall-cmd?-remove-forward-port=port=111:proto=tcp:toport=222:toaddr=10.10.7.2 --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
5. 刪除 IP 偽裝
firewall-cmd --list-all
firewall-cmd --remove-masquerade --zone=public --permanent
firewall-cmd --reload
firewall-cmd --list-all
到了這里,關(guān)于Linux 服務(wù)器 Firewalld 防火墻配置端口轉(zhuǎn)發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!