Networkmanager

無法使用 firewalld 將 docker0 介面添加到受信任區域

  • December 28, 2016

在 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”是在您的輸入鏈中插入規則的位置,您的里程可能會有所不同。執行這些命令後,我能夠從容器訪問主機埠。

引用自:https://unix.stackexchange.com/questions/331640