一、部署架構(gòu)
二、解決方案
1.配置“域”
systemctl start firewalld
firewall-cmd --set-default-zone=public
firewall-cmd --reload
systemctl restart firewalld
2.配置防火墻規(guī)則
systemctl start firewalld
firewall-cmd --add-port=1-3305/tcp --permanent
firewall-cmd --add-port=3307-65535/tcp --permanent
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="master docker容器內(nèi)IP" port protocol="tcp" port="3306" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="master服務(wù)器IP" port protocol="tcp" port="3306" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="子節(jié)點(diǎn)IP" port protocol="tcp" port="3306" accept'
firewall-cmd --reload
systemctl restart firewalld
3.避免docker導(dǎo)致防火墻失效(其實(shí)“五、其它問題”說的就是這個事)
①vi /usr/lib/systemd/system/docker.service
在文件中添加 --iptables=false(底部圖片)
②重啟docker
systemctl daemon-reload
systemctl restart docker
4.完成上述步驟以及可以采用系統(tǒng) firewall 控制端口訪問,但會出現(xiàn) docker 容器間無法訪問,而且容器內(nèi)也無法訪問外部網(wǎng)絡(luò)。
使用類似 NAT 網(wǎng)絡(luò)方式使得 docker 可以訪問外部網(wǎng)絡(luò)
firewall-cmd --permanent --zone=public --add-masquerade
systemctl restart firewalld
5.檢查
使用未在白名單機(jī)器訪問3306,看是否可以訪問。
文章來源:http://www.zghlxwxcb.cn/news/detail-698922.html
三、常用命令
常用命令:
查看現(xiàn)有規(guī)則:firewall-cmd --list-all
設(shè)置開機(jī)啟用防火墻:systemctl enable firewalld.service(前方運(yùn)維人員檢查一下是否開機(jī)自啟動)
查看防火墻狀態(tài):systemctl status firewalld
查看端口是否開啟:firewall-cmd --query-port=3306/tcp
查看端口占用:lsof -i tcp:80
四、對于原來已開啟防火墻的情況,解決方案
對于原來已開啟防火墻的情況:
1.比如原來是:
firewall-cmd --add-port=1-3305/tcp --permanent
firewall-cmd --add-port=3307-65535/tcp --permanent
2.保留原來3306規(guī)則情況下,增加對8080的限制
3.具體操作:
①增加限制
vi /etc/firewalld/zones/public.xml
修改為
<port protocol="tcp" port="1-3305"/>
<port protocol="tcp" port="3307-8079"/>
<port protocol="tcp" port="8081-3305"/>
執(zhí)行
firewall-cmd --reload
systemctl restart firewalld
②添加IP白名單
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="master服務(wù)器IP" port protocol="tcp" port="8080" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="子節(jié)點(diǎn)IP" port protocol="tcp" port="8080" accept'
firewall-cmd --reload
systemctl restart firewalld
4.避免docker導(dǎo)致防火墻失效
①vi /usr/lib/systemd/system/docker.service
在文件中添加 --iptables=false(底部圖片)
②重啟docker
systemctl daemon-reload
systemctl restart docker
5.完成上述步驟以及可以采用系統(tǒng) firewall 控制端口訪問,但會出現(xiàn) docker 容器間無法訪問,而且容器內(nèi)也無法訪問外部網(wǎng)絡(luò)。
使用類似 NAT 網(wǎng)絡(luò)方式使得 docker 可以訪問外部網(wǎng)絡(luò)
firewall-cmd --permanent --zone=public --add-masquerade
systemctl restart firewalld
6.檢查
使用未在白名單機(jī)器訪問3306,看是否可以訪問。
五、其它問題
其它問題:
1.問題描述:Linux防火墻firewalld不生效,無法攔截Docker映射端口。
2.解決方案:
vi /usr/lib/systemd/system/docker.service
在文件中添加 --iptables=false(底部圖片)
3.重啟docker
systemctl daemon-reload
systemctl restart docker
4.完成上述步驟以及可以采用系統(tǒng) firewall 控制端口訪問,但會出現(xiàn) docker 容器間無法訪問,而且容器內(nèi)也無法訪問外部網(wǎng)絡(luò)。
使用類似 NAT 網(wǎng)絡(luò)方式使得 docker 可以訪問外部網(wǎng)絡(luò)
firewall-cmd --permanent --zone=public --add-masquerade
systemctl restart firewalld
談?wù)勈褂迷摲椒ń鉀Q docker 無視系統(tǒng)防火墻問題所帶來的缺點(diǎn):容器內(nèi)無法獲取得到客戶端的真實(shí) IP,由于是類似 NAT 網(wǎng)絡(luò),常常 nginx 日志上記錄的是 docker0 網(wǎng)絡(luò)的子網(wǎng) IP,對于一些業(yè)務(wù)無法獲取真實(shí) IP 可能不能容忍,看個人的取舍吧。
原文:https://blog.csdn.net/qq_30665009/article/details/129434833
文章來源地址http://www.zghlxwxcb.cn/news/detail-698922.html
到了這里,關(guān)于防火墻添加ip白名單的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!