Docker와 패킷 필터링 방화벽
Docker와 패킷 필터링 방화벽
Docker가 iptables/nftables를 사용해 네트워크 트래픽을 필터링하고, 방화벽과 어떻게 통합되는지 설명하는 문서예요.
본문
Docker는 네트워크 격리와 포트 게시를 위해 커널의 패킷 필터링(iptables/nftables)을 사용해요. 이 때문에 Docker를 사용하는 호스트에서 방화벽 규칙을 신중히 관리해야 해요.
Docker와 방화벽
- Docker는 데몬 시작 시
DOCKER체인 등 iptables 규칙을 구성해 컨테이너 트래픽을 라우팅/필터링해요. - 게시된 포트는 포트 포워딩(DNAT) 규칙으로 구현돼요.
- 외부 방화벽 정책은 Docker가 자동으로 만든 규칙과 상호작용하므로, 호스트 방화벽에서 컨테이너 포트를 관리할 때 충돌을 주의해야 해요.
해결 방법
- Docker의
daemon.json에서iptables: false로 두면 Docker가 규칙을 만들지 않지만, 그 경우 수동으로 규칙을 관리해야 해요. - 일반적으로는 Docker가 관리하는 iptables 규칙과 호스트 방화벽 규칙을 함께 이해하고, 필요한 포트만 허용하도록 구성해요.
참고
iptables vs nftables는 호스트 커널/배포판에 따라 달라요. nftables 관련 내용은 별도 페이지에서 다뤄요.
방화벽이 있는 환경에서 Docker를 운영할 때 컨테이너 접근을 안전하게 제어하려면 이 문서의 지침을 따르는 것이 좋아요.