使用 pi-hole 和 docker 运行多个 DNS 服务器

问题描述

设置

我有一个带有多个 Wifi 网络的 Unifi Home Setup 和一个带有 Arch 的 RaspberryPi 来处理 DNS 过滤。

目标

我想在 Raspberry Pi 上运行多个 DNS 服务器并将不同的 Wifi 定向到不同的 DNS。为此,我需要为不同的 DNS 容器使用不同的 IP 地址。

到目前为止我做了什么

在尝试了 systemd 和几个不同的 docker 解决方案后,我决定将 Pi-Hole 与 cloudflared 结合使用。

运行多个 pi 孔不是 docker-compose 的问题,但我对正确的 (docker) 网络知之甚少,无法弄清楚如何为不同的容器获取不同的、网络可访问的 ip 地址。

这是一组 cloudflare + pi-hole 的 docker-compose 文件:

version: "3.5"
services:
  cloudflared_workday:
    container_name: cloudflared_workday
    image: crazymax/cloudflared:latest
    ports:
      - "5053:5053/udp"
      - "49312:49312/tcp"
    environment:
      - "TZ=Europe/Berlin"
      - "TUNNEL_DNS_UPSTREAM=https://1.1.1.1/dns-query,https://1.0.0.1/dns-query"
    restart: always

  pihole_workday:
    container_name: pihole_workday
    image: pihole/pihole:latest
    depends_on:
      - cloudflared_workday
    network_mode: host
    environment:
      TZ: 'Europe/Berlin'
      WEBPASSWORD: 'password'
      DNS1: '127.0.0.1#5053'
      DNS2: 'no'
      ServerIP: '192.168.2.10'
    # Volumes store your data between container upgrades
    volumes:
      - './pihole_workday/pihole/etc-pihole/:/etc/pihole/'
      - './pihole_workday/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/'
    restart: always

其中 192.168.2.10 是提供给 RaspberryPi 的 IP。

我只能为路由器中的 DNS 指定 IP,而不能为容器重新映射不同的端口。

PS.:我知道密码不理想,但那是另一天的问题:D

问题

如何在同一台机器上运行此设置的副本,而不会让两个 DNS 相互干扰,以及如何使用不同的 IP 访问单独的 pi 孔?

编辑 1

我发现 docker 中有一个叫做 macvlan 的东西,可以将 docker 容器直接链接到网络。这似乎也适用于 pi-hole (macvlan + pi-hole),只是我还没有成功。有没有人看到这种方法存在概念上的问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)