设置
我有一个Unifi Home设置与多个Wifi网络设置和一个RaspberryPi与拱门,以照顾域名系统的过滤。
目标
我想在树莓派上运行多个DNS服务器,并将不同的Wifi定向到不同的DNS。为此,我需要为不同的DNS容器提供不同的IP地址。
到目前为止,我所做的
在尝试了systemd和几种不同的docker解决方案后,我决定将Pi-Hole与cloudflared结合使用。
运行多个pi-hole并不是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,而不能为容器重新映射不同的端口。
附言:我知道密码不是很理想,但这是改天的问题:
问题
如何在同一台计算机上运行此设置的副本而不使两个do相互干扰,以及如何到达具有不同IP的单独的pi-hole?
编辑1
我发现在docker中有一种叫做macvlan的东西,它将docker容器直接链接到网络。这似乎也适用于pi-hole (macvlan + pi-hole),只是我还没有成功。有没有人看到这种方法在概念上的问题?
发布于 2021-03-02 05:03:36
新手来了,英语也不好。
我为此挣扎了整整两个星期,但最终还是成功地用docker和macvlan运行了多个Pi-hole实例。
我的测试硬件橙色pi PC 512mb,16 PC SD卡。操作系统: Armbian 21.02.2 Buster with Linux 5.10.16-sunxi
我在不同的vlan上运行dockers。
创建docker VLAN:
docker network create -d macvlan \
--subnet=10.0.10.0/24 \
--ip-range=10.0.10.128/25 \
--gateway=10.0.10.1 \
-o macvlan_mode=bridge \
-o parent=eth0.10 macvlan10-o macvlan_mode=bridge \这部分是非常重要的,如果集装箱需要接入互联网,给了我白发来找出这一点,但没有必要如果集装箱不需要互联网,为LANtoLAN工作。--ip-range=10.0.10.128/25 \不是必须的。
接下来:
创建文件夹: /home/pihole/ -或您选择的文件夹。在文件夹中创建文件: sudo nano docker-compose.yml insert:-这只是我的工作样本,你可以使用你的。
version: "3.6"
services:
pihole:
container_name: Pi-Hole
hostname: pihole
privileged: true
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
- "443:443/tcp"
environment:
ServerIP: '10.0.10.11'
TZ: 'Europe/London'
WEBPASSWORD: '1234'
PIHOLE_DNS_: '10.0.0.1'
WEBTHEME: 'default-dark2'
SKIPGRAVITYONBOOT: 0
volumes:
- './etc-pihole/:/etc/pihole/'
- './etc-dnsmasq.d/:/etc/dnsmasq.d/'
cap_add:
- NET_ADMIN
restart: unless-stopped
networks:
macvlan10:
ipv4_address: 10.0.10.11
networks:
macvlan10:
external:
name: macvlan10运行文件夹"pihole“中的sudo docker-compose up -d。应该是任何错误
如果您在Pihole GUI中遇到一些数据库写入错误。运行sudo chown -R www-data:pihole /home/pihole,而不是在容器中。
如果您需要另一个实例...创建文件夹/home/piholeGuest或/home/piholeIOT或任何名称的文件夹,并复制以前的docker-compose.yml文件。更改Container_name, ServerIP, ipv4_address and password,保持端口不变,因为正在使用不同的IP和容器名称,所以没有端口冲突。
这就像是用自己的IP运行裸机实例:)
正如我读到的,每个局域网端口的mac地址有一些限制,但我不确定如何,我在2 2gb的Rock64上运行了4个实例,工作得又好又快。
你不会在你的路由器/防火墙中看到IP,但防火墙规则和其他东西会工作得很好,你只需要记住IP,我有pfSense。
如果升级docker container,则会保留文件。
我不运行Pihole裸机,全部在码头容器中运行。
对我很有效,我的方法:)
我不是专业人士,只是分享一下我的经验。
对不起,让我困惑了,我不擅长解释。
希望我的一些信息能帮助你实现你的目标。
https://stackoverflow.com/questions/65941599
复制相似问题