昨天,我将 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.1
它8.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。
希望这里有一些可以提供帮助。