在Ubuntu上部署服務(wù)的時(shí)候,使用ufw進(jìn)行防火墻的配置時(shí),遇到的相關(guān)問題回铛,解決辦法記錄如下:
問題1:防火墻配置對Docker里面的容器端口不生效
# 修改docker配置
vi /etc/docker/daemon.json
# 在大括號(hào)內(nèi)加入如下配置
,"iptables": false
# 示例:{ "registry-mirrors": ["https://ra9q5uam.mirror.aliyuncs.com"] ,"iptables": false}
問題2:docker內(nèi)容器無法訪問其他容器的端口
# 開放docker內(nèi)容器的訪問權(quán)限
ufw allow from 172.17.0.1/24
# 刷新防火墻配置
ufw reload
問題3:docker內(nèi)容器無法訪問外部網(wǎng)絡(luò)
# 修改ufw規(guī)則
vim /etc/default/ufw
## 把DEFAULT_FORWARD_POLICY修改為下面
DEFAULT_FORWARD_POLICY="ACCEPT"
# 修改docker啟動(dòng)配置
vim /etc/default/docker
## 修改如下配置
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 -iptables=false"
# 修改ufw配置
vim /etc/ufw/before.rules
## 在`*filter`前面添加下面內(nèi)容
###########我是分割線############
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE
COMMIT
###########我是分割線############
# 重啟服務(wù)器
reboot
問題4:使用ufw放開docker內(nèi)的端口訪問不生效
# 一般情況下docker外的端口想要開放端口訪問直接執(zhí)行以下指令即可
ufw allow 端口號(hào)
# 但是docker內(nèi)的端口還需要先開放容器內(nèi)的端口訪問權(quán)限才行
ufw route allow 端口號(hào)
參考文章:
CSDN-讓docker處于ufw防火墻的控制下
Moththe-修復(fù) UFW 無法管理 Docker 端口