Docker와 패킷 필터링 방화벽

Docker와 패킷 필터링 방화벽

Docker가 iptables/nftables를 사용해 네트워크 트래픽을 필터링하고, 방화벽과 어떻게 통합되는지 설명하는 문서예요.

출처: Docker and packet filtering firewalls

본문

Docker는 네트워크 격리와 포트 게시를 위해 커널의 패킷 필터링(iptables/nftables)을 사용해요. 이 때문에 Docker를 사용하는 호스트에서 방화벽 규칙을 신중히 관리해야 해요.

Docker와 방화벽

  • Docker는 데몬 시작 시 DOCKER 체인 등 iptables 규칙을 구성해 컨테이너 트래픽을 라우팅/필터링해요.
  • 게시된 포트는 포트 포워딩(DNAT) 규칙으로 구현돼요.
  • 외부 방화벽 정책은 Docker가 자동으로 만든 규칙과 상호작용하므로, 호스트 방화벽에서 컨테이너 포트를 관리할 때 충돌을 주의해야 해요.

해결 방법

  • Docker의 daemon.json에서 iptables: false로 두면 Docker가 규칙을 만들지 않지만, 그 경우 수동으로 규칙을 관리해야 해요.
  • 일반적으로는 Docker가 관리하는 iptables 규칙과 호스트 방화벽 규칙을 함께 이해하고, 필요한 포트만 허용하도록 구성해요.

참고

iptables vs nftables는 호스트 커널/배포판에 따라 달라요. nftables 관련 내용은 별도 페이지에서 다뤄요.

방화벽이 있는 환경에서 Docker를 운영할 때 컨테이너 접근을 안전하게 제어하려면 이 문서의 지침을 따르는 것이 좋아요.

더 알아보기