![isc-dhcp-服务器和 pihole](https://linux22.com/image/193900/isc-dhcp-%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%20pihole.png)
我的本地网络中有两台单板计算机(Pine64 和 nanoPI),我将它们用于各种目的。
我最近想用它们做的事情是为我的本地网络在它们上提供故障转移 DHCP 和 DNS。我配置了故障转移 DHCP,其中一个在我没有停止/删除 pihole docker 映像之前才启动。正在报道Can't bind to dhcp address: Address already in use
。当 docker 停止时,ISC-DHCP-SERVER 启动得很好。现在,当 DHCP 服务器运行时,docker 会报告bind: address already in use
并且不会启动。另一台安装了普通 DNS 服务器(没有 docker 和 pihole)的计算机工作正常。
我在另一台服务器上配置了自己的 DNS,具有与 pihole(阻止广告)类似的功能。然而,我想尝试一下 pihole,因为它有很好的用户界面。
我认为问题在于 pihole 也包含 DHCP 服务器(https://discourse.pi-hole.net/t/how-do-i-use-pi-holes-built-in-dhcp-server-and-why-would-i-want-to/3026)。我可以在同一台计算机上使用 pihole docker 映像(不带 DHCP)和 DHCP 服务器吗?怎样才能做到呢?
我不想使用 pihole 的 DHCP,因为我在 DHCP 服务器中有一些自定义配置,可以通过 DHCP、DHCP 静态租约和故障转移配置发布自定义路由。我不确定我是否可以在 pihole 的 DHCP 服务器中配置所有这些,而且我也不确定我想要这样做。
答案1
如果我直接安装pihole(https://docs.pi-hole.net/main/basic-install/)而不是作为 docker 映像,它会检测计算机上配置的静态 IP,并且不会干扰 DHCP。
所以答案是,将 pihole 直接安装到支持的操作系统上。
答案2
可以在 Docker/容器中运行 DHCP 服务器。您遇到问题的原因是 docker 容器创建了自己的桥接网络,该子网与路由器/网络运行的主子网/lan 明显不同。
您通常必须通过或桥接 docker 容器到主机网络。
https://gist.github.com/mikejoh/04978da4d52447ead7bdd045e878587d
我建议您使用 --net 主机标志
答案3
是的。在docker中运行Pi-hole,桥接网络没问题。您希望将 DNS 端口的端口 53 以及您为 Web 界面选择的任何端口映射到 pi-hole 容器。
在容器内运行 DHCP 服务器时,您需要设置 DHCP 中继服务以将 DHCP 请求转发到 Docker 化的 DHCP 服务器。有些路由器包含此服务,因此请先查看那里。
还有开源 DHCP 中继服务器,因此如果您的路由器没有中继功能,则需要设置一台来进行转发。