程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 pi-hole 和 docker 运行多个 DNS 服务器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 pi-hole 和 docker 运行多个 DNS 服务器?

开发过程中遇到使用 pi-hole 和 docker 运行多个 DNS 服务器的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 pi-hole 和 docker 运行多个 DNS 服务器的解决方法建议,希望对你解决使用 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),只是我还没有成功。有没有人看到这种方法存在概念上的问题?

解决方法

第一次来这里,英语不好。

我为此苦苦挣扎了整整两周,但最终还是设法使用 docker 和 macvlan 运行了多个 Pi-hole 实例。

我的测试硬件 Orange pi PC 512mb,16gb sd 卡。 操作系统:Armbian 21.02.2 Buster with Linux 5.10.16-sunxi

我在单独的 vlan 上运行 docker。

创建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 插入: - 这只是我的工作样本,你可以使用你的

  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 运行裸机实例 :)

正如我所读到的,每个 LAN 端口的 mac 地址有一些限制,但我不确定如何,我在 Rock64 2gb 上运行 4 个实例,工作正常且快速。

您不会在路由器/固件中看到 IP,但是防火墙规则和其他东西可以正常工作,您只需要记住 IP,我有 pfSense。

如果您升级 docker 容器,文件将被保留。

我不运行 Pihole 裸机,全部在 docker 容器中。

对我来说很好,我的方法:)

我无论如何都不是专业人士,只是分享我的经验。

对不起,我不善于解释。

希望我的一些信息能帮助您完成目标。

大佬总结

以上是大佬教程为你收集整理的使用 pi-hole 和 docker 运行多个 DNS 服务器全部内容,希望文章能够帮你解决使用 pi-hole 和 docker 运行多个 DNS 服务器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。