2

多次使用 docker,熟悉 docker 网络和端口映射的概念。但是,我还没有在网上找到任何你想混合这两者的案例。希望有能帮助我的人。

我在很多情况下都使用 Traefik。我也有 pi-hole 软件作为私有 DNS。我想标准化 Traefik 背后的所有服务以使用 TLS 和自定义(内部)域。pi-hole 管理界面与 Traefik 完美配合。

边缘路由器后面的 pi-hole 的最大问题是 docker 将 NAT 用于内部网络。因此 pi-hole 无法查看 DNS 请求的来源。唯一可以克服的是将DNS端口(53和853)直接映射到主机,我猜(绕过内部Traefik网络,绕过任何NAT)。

在此处输入图像描述

我可以将 pi-hole 容器连接到多个网络,但是我如何能够连接:80到 Traefik 网络和:53主机网络?

4

1 回答 1

0

最终这很简单,尽管我认为这行不通:只需在 pi-hole 容器连接到 Traefik 网络时发布端口。

这是我使用的 Ansible 配置:

- name: Create the pihole container
  docker_container:
    name: "{{ pihole_docker_container }}"
    image: "{{ pihole_docker_tag }}"
    pull: yes
    restart_policy: unless-stopped
    networks_cli_compatible: yes
    networks:
      - name: "{{ traefik_docker_network }}"
    volumes:
      - "{{ pihole_config_dir }}:/etc/pihile/"
      - "{{ pihole_dnsmasq_dir }}:/etc/dnsmasq.d/"
    env:
      TZ: "{{ pihole_tz }}"
      WEBPASSWORD: ""
      DNS1: "{{ pihole_container_dns1 }}"
      DNS2: "{{ pihole_container_dns2 }}"
      REV_SERVER: "{{ pihole_server_rev }}"
      REV_SERVER_DOMAIN: "{{ pihole_server_domain }}"
      REV_SERVER_TARGET: "{{ pihole_server_gateway }}"
      REV_SERVER_CIDR: "{{ pihole_server_subnet }}"
    dns_servers:
      - 127.0.0.1
      - "{{ pihole_container_dns1 }}"
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "853:853"
    labels:
      traefik.enable: "true"

      traefik.http.routers.pihole.entrypoints: "websecure"
      traefik.http.routers.pihole.rule: "Host(`{{ pihole_public_domain }}`)"
      traefik.http.routers.pihole.middlewares: "pihole-admin"
      traefik.http.routers.pihole.service: "pihole"
      traefik.http.routers.pihole.tls: "true"
      traefik.http.routers.pihole.tls.certresolver: "le"

      traefik.http.middlewares.pihole-admin.addprefix.prefix: "/admin"

      traefik.http.routers.pihole_http.entrypoints: "web"
      traefik.http.routers.pihole_http.rule: "Host(`{{ pihole_public_domain }}`)"
      traefik.http.routers.pihole_http.middlewares: "redirect-to-https"

      traefik.http.services.pihole.loadBalancer.server.port: "80"
于 2021-12-29T09:04:55.320 回答