Problema ao executar um contêiner de proxy de encaminhamento e um contêiner do servidor DNS no mesmo host

1

Esta é uma experiência caseira com Docker, pi-hole (container) e wormhole proxy (container) em execução no mesmo host. O SO do meu host do docker é o RHEL 7.x.

Minha intenção original é aprender mais sobre pi-hole, então hospedei o serviço como um contêiner em uma VM hospedada no VMWare ESXI. Em algumas de minhas VMs do Linux, consegui usar pi-hole como meu servidor DNS editando o arquivo /etc/resolv.conf para apontar para pi-hole. Tudo funciona bem lá.

Então, quando quero testá-lo na minha área de trabalho principal física (Windows 10), achei que, em vez de alterar o servidor DNS através das configurações do adaptador de rede, posso hospedar um contêiner do servidor Proxy de encaminhamento (wormhole-proxy) o container pi-hole no mesmo host de encaixe. E então eu posso simplesmente dizer ao servidor Forward Proxy para usar pi-hole como o servidor DNS.

Problemas surgem quando o Forward Proxy Server usa pi-hole como servidor DNS. Eu veria a seguinte mensagem de erro no log do Forward Proxy Server.

wormhole_1_e0b4b0824de0 | 2018-10-07 05:32:28,528 wormhole[5]: [691dd8][192.168.20.40]: CONNECT 502 incoming.telemetry.mozilla.org:443 (gaierror: -3 Try again)
wormhole_1_e0b4b0824de0 | 2018-10-07 05:32:28,692 wormhole[5]: [643358][192.168.20.40]: CONNECT 502 incoming.telemetry.mozilla.org:443 (gaierror: -3 Try again)
wormhole_1_e0b4b0824de0 | 2018-10-07 05:32:28,693 wormhole[5]: [654eb8][192.168.20.40]: CONNECT 502 incoming.telemetry.mozilla.org:443 (gaierror: -3 Try again)

Ao hospedar o contêiner do Forward Proxy Server e o container de pi-hole no mesmo host de encaixe, se eu não disser explicitamente ao Servidor Proxy para usar o pi-hole como DNS, ele funcionará bem. Se eu hospedar o contêiner do Forward Proxy Server em uma VM diferente e, em seguida, especificar o servidor proxy para usar pi-hole como servidor DNS, ele também funcionará bem. Isso me leva a acreditar que há algumas formas de conflito, mas não tenho certeza do que seria, porque elas não estão compartilhando portas.

Para replicar meu problema facilmente, aqui está o docker-compose.yml s que eu usei.

Abaixo está o docker-compose.yml para o proxy wormhole (Proxy Forward). dns: está apontando para o host do docker.

version: "3"
services:
  wormhole:
    image: bashell/wormhole:latest
    ports:
      - "8888:8800/tcp"
      - "8888:8800/udp"
    environment:
      TZ: "America/New_York"
    restart: always
    dns:
      - 192.168.10.120

Abaixo está o docker-compose.yml para o pi-hole. Você precisará alterar o ponto de montagem do host para o volume.

version: "3"
services:
  pihole:
    image: pihole/pihole:v4.0_amd64
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"
    environment:
      # enter your docker host IP here
      ServerIP: 192.168.10.120
      # IPv6 Address if your network supports it
      # ServerIPv6:
      # jwilder/proxy envs, see readme for more info
      PROXY_LOCATION: pihole
      VIRTUAL_HOST: pihole.local
      VIRTUAL_PORT: 80
      TZ: "America/New_York"
      DNS1: 208.67.222.222
      DNS2: 1.1.1.1
      WEBPASSWORD: stackexchange
    # Add your own custom hostnames you need for your domain
    # extra_hosts:
      #   Point any of the jwilder virtual_host addresses
      # to your docker host ip address
      # - 'pihole.yourdomain.local:192.168.1.55'
    volumes:
      - '/Development/Applications/pi-hole/volumes/pihole/:/etc/pihole/:z'
      # WARNING: if this log don't exist as a file on the host already
      # docker will try to create a directory in it's place making for lots of errors
      - '/Development/Applications/pi-hole/volumes/log/pihole.log:/var/log/pihole.log:z'
      - '/Development/Applications/pi-hole/volumes/dnsmasq.d:/etc/dnsmasq.d:z'
    restart: always
    
por beyonddc 07.10.2018 / 07:59

2 respostas

0

Em vez de ter o servidor proxy de encaminhamento para apontar para o host do Docker como servidor DNS, assegurei que o servidor proxy de encaminhamento e o servidor DNS residissem na mesma rede do Docker e que o servidor proxy de encaminhamento apontasse para o endereço IP do servidor DNS atribuído pelo Docker.

O seguinte é o docker-compose.yml para o servidor proxy de encaminhamento

version: "3"
services:
  wormhole:
    image: bashell/wormhole:latest
    ports:
      - "8888:8800/tcp"
      - "8888:8800/udp"
    environment:
      TZ: "America/New_York"
    restart: always
    dns:
      - 172.20.0.99
    networks:
      - beyonddc
networks:
    beyonddc:
      external: true

O seguinte é o docker-compose.yml do meu servidor DNS

version: "3.5"
services:
  pihole:
    image: pihole/pihole:v4.0_amd64
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"
    networks:
       beyonddc:
         ipv4_address: 172.20.0.99
    environment:
      # enter your docker host IP here
      ServerIP: 192.168.10.120
      # IPv6 Address if your network supports it
      ServerIPv6: 2601:189:4200:eb2:250:56ff:febf:d245
      # jwilder/proxy envs, see readme for more info
      PROXY_LOCATION: pihole
      VIRTUAL_HOST: pihole.local
      VIRTUAL_PORT: 80
      TZ: "America/New_York"
      DNS1: 208.67.222.222
      DNS2: 1.1.1.1
      WEBPASSWORD: stackexchange
    # Add your own custom hostnames you need for your domain
    # extra_hosts:
      #   Point any of the jwilder virtual_host addresses
      # to your docker host ip address
      # - 'pihole.yourdomain.local:192.168.1.55'
    volumes:
      - '/Development/Applications/pi-hole/volumes/pihole/:/etc/pihole/:z'
      # WARNING: if this log don't exist as a file on the host already
      # docker will try to create a directory in it's place making for lots of errors
      - '/Development/Applications/pi-hole/volumes/log/pihole.log:/var/log/pihole.log:z'
      - '/Development/Applications/pi-hole/volumes/dnsmasq.d:/etc/dnsmasq.d:z'
    restart: always
networks:
  beyonddc:
    driver: bridge
    # Must specify the name for the network again otherwise by default
    # Docker will use the folder name as prefix of the network.
    # The name field is only available in version 3.5 and beyond
    name: beyonddc
    ipam:
      config:
        - subnet: 172.20.0.0/16
    
por 07.10.2018 / 23:59
1

Eu sugeriria mesclar esses dois arquivos docker-compose.yml em um:

version: "3"
services:
  wormhole:
    image: bashell/wormhole:latest
    link: pihole:dns.local
    ports:
      - "8888:8800/tcp"
      - "8888:8800/udp"
    environment:
      TZ: "America/New_York"
    restart: always
    dns:
      - dns.local
  pihole:
    image: pihole/pihole:v4.0_amd64
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"
    environment:
      # enter your docker host IP here
      ServerIP: 192.168.10.120
      # IPv6 Address if your network supports it
      # ServerIPv6:
      # jwilder/proxy envs, see readme for more info
      PROXY_LOCATION: pihole
      VIRTUAL_HOST: pihole.local
      VIRTUAL_PORT: 80
      TZ: "America/New_York"
      DNS1: 208.67.222.222
      DNS2: 1.1.1.1
      WEBPASSWORD: stackexchange
    # Add your own custom hostnames you need for your domain
    # extra_hosts:
      #   Point any of the jwilder virtual_host addresses
      # to your docker host ip address
      # - 'pihole.yourdomain.local:192.168.1.55'
    volumes:
      - '/Development/Applications/pi-hole/volumes/pihole/:/etc/pihole/:z'
      # WARNING: if this log don't exist as a file on the host already
      # docker will try to create a directory in it's place making for lots of errors
      - '/Development/Applications/pi-hole/volumes/log/pihole.log:/var/log/pihole.log:z'
      - '/Development/Applications/pi-hole/volumes/dnsmasq.d:/etc/dnsmasq.d:z'
    restart: always

Isso adiciona os dois contêineres automaticamente na mesma rede de encaixe e permite a vinculação de contêineres (consulte o serviço de wormhole acima, onde atribuo dns.local como um nome de host para o contêiner de encaixe, mas apenas no escopo do contêiner de buraco de minhoca. Essa sentença faz algum sentido?)

    
por 07.10.2018 / 09:30