Firewalld를 사용하여 신뢰할 수 있는 영역에 docker0 인터페이스를 추가할 수 없습니다.

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 메시지는 의심스러운 것 같습니다. 방화벽과 NetworkManager 사이에 일종의 충돌이 있을 수 있습니까?

필사적으로 nmcli connection modify docker0 connection.zone trusted인터페이스 구성에서 올바르게 설정했지만 ZONE=trusted방화벽에서는 여전히 인터페이스가 신뢰할 수 있는 영역에 있지 않다고 표시됩니다.

여기서 무슨 일이 일어나고 있는 걸까요?

답변1

내가 아는 한, 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"은 입력 체인에 규칙을 삽입하는 위치이며 마일리지는 다를 수 있습니다. 이 명령을 실행한 후 컨테이너에서 호스트 포트에 액세스할 수 있습니다.

답변2

trusted영역 에 포트나 서비스를 추가 하고 방화벽 구성을 다시 로드해야 합니다.

예가 있습니다:

내부 영역에서 포트 443/tcp를 일시적으로 허용하려면 다음을 입력합니다.

systemctl start firewalld
systemctl enable firewalld
firewall-cmd --zone=trusted --add-port=443/tcp
firewall-cmd --reload

확인하다:

firewall-cmd --get-active-zones

포트가 지속되도록 허용합니다.

firewall-cmd --permanent --zone=trusted --add-port=443/tcp

또한 다음 명령이 반환되어야 합니다.

firewall-cmd --get-zone-of-interface=docker0
trusted 

관련 정보