iptables: Bad rule does a matching rule exist in that chain?

Rocky Linux에 Docker 구성 후 /var/log/message 로그 파일을 fail or docker로 grep할 경우

해당(localhost firewalld[887]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP’ failed: iptables: Bad rule (does a matching rule exist in that chain?). 에러 메시지가 출력되는 것을 볼 수 있다.


해당 에러를 확인하기 위해서는 grep 명령어를 이용하면 쉽다.

# grep 'fail' /var/log/messages | grep 'docker'

해당 명령어 입력 시 messages 로그 파일에서 fail + docker가 포함된 로그만 추출이 가능하기 때문에 쉽게 볼 수 있습니다.

docker iptable 매칭 실패 오류

이 로그 메시지는 Docker 관련 iptables 규칙을 삭제하려고 시도하였지만, 해당 규칙이 존재하지 않아 발생한 오류입니다. 

firewalld는 시스템 부팅 시 Docker와 관련된 iptables 규칙을 삭제하려고 시도합니다. 

그러나 Docker가 아직 시작되지 않았거나 해당 규칙을 아직 생성하지 않았다면, 이러한 경고 메시지가 발생할 수 있습니다.이 메시지는 Docker와 firewalld 간의 동기화 문제로 인해 발생하며, 일반적으로 시스템의 작동에는 크게 영향을 미치지 않습니다. 

계속해서 나타나는 경우, Docker 서비스의 상태를 확인하거나 Docker와 firewalld의 설정을 검토해 보는 것이 좋습니다.

Docker와 firewalld 간의 충돌을 방지하기 위해 Docker 서비스를 시작할 때 iptables 규칙을 자동으로 추가하지 않도록 설정할 수 있습니다. 

이를 위해 Docker의 설정 파일(/etc/docker/daemon.json)에 다음과 같은 설정을 추가

Docker가 iptables를 직접 관리하지 않도록 설정할 수 있습니다. 하지만 이 설정을 변경하면 Docker 컨테이너의 네트워킹 기능에 영향을 줄 수 있으므로 주의가 필요

docker 설정"iptables": false

일반적으로 시스템의 기능에 큰 영향을 미치지 않습니다.

일반적으로 추천하는 방식은 아니며 false 설정의 경우 네트워크 문제가 발생 할 수 있으므로

docker 서비스의 재기동을 추천드립니다.

# sudo systemctl restart docker

firewalld 설정 변경 : firewalld의 iptables 백엔드를 nftables로 변경하면 이 경고를 제거할 수 있을 수 있습니다.

firewalld 버전 0.6.0 이상에서 가능하며, /etc/firewalld/firewalld.conf 파일의 FirewallBackend 옵션을 nftables로 설정

By Low ahn

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다