source

도커 ufw를 호스트 시스템에 연결

factcode 2022. 11. 26. 13:54
반응형

도커 ufw를 호스트 시스템에 연결

UFW에서 도커를 시험해 봤는데 이걸 많이 읽었어요.

도커 이미지에서 호스트 머신의 mariadb 데이터베이스에 접속하는 것이 목표였습니다.

Host (running ufw) -> docker container 1 - mediawiki -> Database (onHost)
                   -> docker container 2 - phpwebserver -> Database (onHost)
                   -> docker container 3 - nextcloud -> Database (onHost)
                   -> .......

I

기본적으로는 도커는 비활성화할 수 있는 iptables를 사용합니다.

/etc/docker/daemon.json 
{
  "iptables": false
}

그 후 설정

/etc/default/ufw
DEFAULT_FORWARD_POLICY to ACCEPT

마지막으로 이 행을 after.filename 파일에 추가합니다.

/etc/ufw/after.rules

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE
COMMIT

도커로 돌아가기:이제 localhost:port 매핑과 데이터베이스 호스트를 docker-compose.yml 파일에 추가합니다.

ports:
  - "127.0.0.1:8080:8080"
MEDIAWIKI_DB_HOST: 172.17.0.1 <- this was the docker0 interface

도커 ps에서는 도커가 localhost로서 동작하고 있는 것을 알 수 있습니다.

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                NAMES
cffb491c84b2        db_mediawiki   "/docker-entrypoint.…"   22     minutes ago      Up 22 minutes       127.0.0.1:8080->8080/tcp, 9000/tcp     mediawiki_wiki

이제 호스트 시스템의 리버스 nginx를 사용하여 이 도커 이미지에 연결할 수 있습니다.또는 단순히 curl localhost 사용 : 8080/wiki/Main_Page

UFW를 사용하지 않으면 모두 동작하는 것처럼 보이지만 UFW를 활성화하면 브리지에서 도커0 인터페이스로의 모든 접속이 차단됩니다.

[UFW BLOCK] IN=br-9da71acf3f9f OUT= MAC=02:42:f2:7b:35:7b:02:42:ac:12:00:02:08:00 SRC=172.18.0.2 DST=172.17.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=53146 DF PROTO=TCP SPT=36126 DPT=3306 WINDOW=29200 RES=0x00 SYN URGP=0

이 단계를 수행하기 위해 도움을 줄 수 있는 사람이 있습니까?

대단히 고맙습니다,

데이빗

안 바꿔도 돼/etc/ufw/after.rules.

다음 규칙을 ufw에 추가합니다.

sudo ufw allow in on docker0 from 172.17.0.0/16 to 172.17.0.0/16

이것에 의해, 172.17.0.0 네트워크를 가지는 docker0 인터페이스상의 모든 패킷이 허가됩니다.

언급URL : https://stackoverflow.com/questions/50768002/docker-ufw-connect-to-host-machine

반응형