设置
我有一个带有多个 Wifi 网络的 Unifi 家庭设置和一个带有 Arch 的 RaspberryPi 来处理 DNS 过滤。
目标
我想在 Raspberry Pi 上运行多个 DNS 服务器,并将不同的 Wifi 引导到不同的 DNS。为此,我需要为不同的 DNS 容器提供不同的 IP 地址。
到目前为止我做了什么
在尝试了 systemd 和几个不同的 docker 解决方案之后,我决定将 Pi-Hole 与 cloudflared 结合使用。
使用 docker-compose 运行多个 pi-holes 不是问题,但我对正确的(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 是给树莓派的 ip。
我只能在我的路由器中为 DNS 指定一个 IP,而不是我可以为容器重新映射的不同端口。
PS.:我知道密码不理想,但这是另一天的问题:D
问题
如何在同一台机器上运行此设置的副本,而不会让两个 DNS 互相干扰,以及如何使用不同的 IP 到达单独的 pi 孔?
编辑 1
我发现 docker 中有一个叫做macvlan的东西将 docker 容器直接链接到网络。这似乎也适用于 pi-hole ( macvlan + pi-hole ),只是我还没有成功。有没有人看到这种方法的概念问题?