在 Docker 中运行 PiHole 时服务器名称解析混乱

在 Docker 中运行 PiHole 时服务器名称解析混乱

昨天,我将 PiHole 作为 Docker 容器安装在我的家庭服务器上,同时还安装了其他几个容器。虽然经过一些调整后,广告拦截功能可以正常工作,但我还必须按照文档禁用 dnsmasq 和 systemd/resolved。这导致我的家庭服务器失去所有名称解析,但如果我不这样做,PiHole 容器会抱怨主机端口 53 被锁定并且无法启动。

如何在我的服务器上启用 Docker 之外的名称解析,同时仍为其他网络设备运行 PiHole 容器?

我正在运行 Ubuntu 18.04 Server,其静态 IP 在 192.168.1.0/24 范围内。

答案1

我有同样的问题。

我让路由器 DHCP 指向网络上的所有设备,以使用我的 PiHole 作为 DNS。PiHole 位于网络上运行 Ubuntu 18.10 的其中一台机器上的 Docker 容器中。

我必须让该机器忽略来自 DHCP 的 DNS,而是让 Ubuntu 机器使用我的 ISP 的名称服务器(下面我将使用1.1.1.18.8.8.8作为示例)。

我正在运行 NetworkManager,因此必须/etc/NetworkManager/NetworkManager.conf通过设置dns=none进行更改[main]

对于忽略 DHCP 给定的名称服务器的部分,更改:/etc/dhcp/dhclient.conf并添加:

supersede domain-name-servers 1.1.1.1, 8.8.8.8;

此外,我已/etc/resolvconf/resolvconf.d/base通过设置进行更新nameserver 1.1.1.1

dnsmsq当我启动 Pi-hole 时, 我还停止并禁用了端口 53 sudo systemctl stop dnsmasq,以避免发生任何冲突:sudo systemctl disable dnsmasq

最后,但并非最不重要的一点是,确保您使用 DNS 参数启动 Pi-hole 容器,要转发到的名称服务器(环境变量 DNS1 和 DNS2)以及设置容器的 IP(否则它将尝试绑定到127.0.0.1:53),方法是指定:

-p 192.168.1.10:53:53/tcp -p 192.168.1.10:53:53/udp

if192.168.1.10是运行 Pi-hole 容器的机器的 IP。

希望这里有一些可以提供帮助。

相关内容