Networkmanager
無法使用 firewalld 將 docker0 介面添加到受信任區域
在 Centos 7 上,我希望 Docker 容器能夠訪問主機,因此我嘗試將 docker0 添加到受信任區域:
# firewall-cmd --permanent --zone=trusted --add-interface=docker0 The interface is under control of NetworkManager and already bound to 'trusted' The interface is under control of NetworkManager, setting zone to 'trusted'. success # firewall-cmd --get-zone-of-interface=docker0 no zone
這曾經可以工作,但無論出於何種原因都不能在此伺服器上使用。我也試過了
firewall-cmd --reload
,沒有。好像firewalld命令被完全忽略了。該 NetworkManager 消息似乎可疑,firewalld 和 NetworkManager 是否可能存在某種衝突?出於絕望,我也嘗試過: 在介面配置
nmcli connection modify docker0 connection.zone trusted
中正確設置了ZONE=trusted
,但 firewalld 仍然顯示介面不在受信任區域中。這裡發生了什麼?
據我所知,除非有一個介面使用由firewalld(即eth0)直接辨識的受信任區域,否則受信任區域不會被標記為活動。為了解決這個問題,您可以使用以下內容顯式設置 iptables 規則:
firewall-cmd --permanent --zone=trusted --add-interface=docker0 firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 3 -i docker0 -j ACCEPT firewall-cmd --reload systemctl restart docker
這裡的“3”是在您的輸入鏈中插入規則的位置,您的里程可能會有所不同。執行這些命令後,我能夠從容器訪問主機埠。