본문 바로가기

DevOps/Docker

[Docker] Docker 포트포워딩의 비밀

728x90

안녕하세요 오늘은 짧은 글로 찾아뵙겠습니다.

 

요새 네트워크쪽 보안을 공부하면서 iptable을 건드릴 일이 생겼습니다.

 

iptable에 적힌 정책을 보니 Chain Docker 이란 식으로 정책이 쭈욱있더군요

 

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (2 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             172.18.0.3           tcp dpt:ssh
ACCEPT     tcp  --  anywhere             172.18.0.3           tcp dpt:8086
ACCEPT     tcp  --  anywhere             172.18.0.2           tcp dpt:27017
ACCEPT     tcp  --  anywhere             172.18.0.2           tcp dpt:ssh

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-ISOLATION-STAGE-2 (2 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

 

가만 보아하니 생성된 컨테이너에 트래픽이 어떻게 전달되는지에 대한 규칙들인 거 같아 좀 찾아봤습니다.

 

 

https://docs.docker.com/network/iptables/

 

Docker and iptables

On Linux, Docker manipulates iptables rules to provide network isolation. While this is an implementation detail and you should not modify the rules Docker inserts into your iptables policies, it...

docs.docker.com

 

여기 공식 docs를 한번 볼까요??

 

리눅스에서 docker는  iptalbles을 조작해서 네트워크 격리를 제공한답니다.

기본적으로 docker는 DOCKER 와 DOCKER-USER라는 iptables 체인을 설치해서 들어오는 패킷이 항상 이 두 개 체인에 먼저 확인되도록 한다네요.

 

(일단 이 docs에서 이 기본 iptable을 수정하는 것을 비추천하고있습니다.)

 

그래서 컨테이너에 대한 접근이 이렇게 이루어지는구나~를 알게되서 재밌어서 글을 한 번 올려봤습니다. 여러분도 한번 iptable을 실행시켜보시는건 어떨까요 :)

 

 

 

반응형