问题描述
设置
我有一个带有多个 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 (将#修改为@)