Docker 와 firewall-cmd 사용법

Rockylinux(OracleLinux) 8.x 에서 Docker 는 run/start/stop 을 할때
Docker-proxy 가 iptables 를 이용해서 DOCKER, DOCKER-USER, DOCKER-ISOLATION-STAGE-1, DOCKER-ISOLATION-STAGE-2 등의 Chain을
만들어 관리 하기 때문에 기존에 설정된 firewall 설정을 무시하고 호출이 가능한 상태가 된다.

OCI 에서는 인스턴스에 시큐리티 리스트에서 아이피/포트를 관리할 수 있으나
스위치의 access_list 처럼 같은 서브넷에 속한 모든 서버가 영향을 받기 때문에 firewall 에서
설정한 포트만 오픈을 하고자 할때 사용할 수 있는 방법이다.(OCI 안에서 여러 인스턴스를 운영하거나 로컬에서 Docker 서버를 운영할때..)

AWS 의 보안 그룹은 각 인스턴스 별로 작동하기 때문에 불필요 하다.


  1. 먼저 도커의 iptables 사용 옵션을 끄고 docker 를 재시작 한다.
  2. firewalld 에서 설정된 값을 모두 초기화 한다.
  3. Docker 의 네트워크 정보를 확인 한다.
  4. Container 에서 호스트롤 통해 outbound 를 위한 설정을 추가 한다. (첫번째줄에 Docker의 네트워크 정보를 입력해서 실행 해야 한다.)
  5. inbound 를 위한 설정을 추가 한다.
  6. 필요에 따라 아래와 같이 inbound 설정을 추가 한다. (nginx-docker 를 위한 80(tcp), 443(tcp/udp) 을 연다.)

 

마지막에 여는 명령어를 보면 알겠지만 열려고 하는 컨테이너의 IP를 알아야 한다.

때문에 Container 으로 진입해서 ifconfig 를 보면 알 수 있겠지만 매우 귀찬은 관계로 스크립트를 작성 하였다.

실행하면 아래와 같이 나오는데 필요한 Container 부분만 실행을 해서 사용하면 된다.

20240620_131234


출처: https://firewalld.org/2024/04/strictly-filtering-docker-containers

답글 남기기

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