语境
我已成功在 Debian 机器上安装了 DNSMasq,一切似乎都正常。以下是我所做的:
使用以下方式安装 DNSMasq
sudo apt-get install dnsmasq
更新文件
/etc/dnsmasq.d/home.dns
内容如下:# General configuration domain-needed bogus-priv domain=dummy.home dhcp-range=192.168.0.10,static,48h dhcp-option=3,192.168.0.1 # Device IPs dhcp-host=00:00:5e:00:52:41,desktop,192.168.0.10 dhcp-host=00:00:5e:00:52:12,android,192.168.0.11
192.168.0.1 是我的 ISP 路由器的 IP。
- 关闭 ISP 路由器上的 DHCP
- 重新启动 DNSMasq 服务
sudo service dnsmasq restart
这一切都很棒,但我对网络还很陌生,有一系列的问题:
DNSMasq 如何与路由器通信?我的意思是,它如何告诉路由器从那时起应该开始使用 DNSMasq 的 DHCP 服务器?是否有特定的协议,DNSMasq 通过该协议与路由器通信,还是 DHCP 本身?
为什么我不需要配置我的设备(Android 手机和台式电脑)来使用 DNSMasq 的 DNS 服务器?[这个问题的答案可能与上面的问题相同,但无论如何...]
有没有办法只使用 DNSMasq 进行 DNS 处理,并让路由器的 DHCP 服务器“与”DNSMasq 的 DNS 服务器“对话”或“使用”它?这样我就不需要关闭路由器的 DHCP 服务器了。
正如我所说,我是一个新手,但我在网上找不到这些问题的答案。
答案1
DNSmasq 不需要与您的路由器通信。DNSmasq 服务刚刚接管了 DNS 和 DHCP 服务,您的路由器不再需要提供这些服务。由于您已禁用路由器上的 DHCP 服务,因此只有运行 DNSmasq 的计算机的 DHCP 服务器才会响应 DHCP 请求。
您的 DHCP 客户端(Android 手机和台式机)从 DHCP 服务器获取所有需要的信息,例如 IP 地址和网络掩码、DNS 服务器和默认路由器。来自man dnsmasq
:
默认情况下,dnsmasq 会向 DHCP 客户端发送一些标准选项,网络掩码和广播地址设置为与运行 dnsmasq 的主机相同,DNS 服务器和默认路由设置为运行 dnsmasq 的机器的地址。
就你的情况而言,你已经设置
dhcp-option=3,192.168.0.1
告诉客户端使用192.168.0.1
作为默认路由。DNSmasq 还将获取配置/etc/resolv.conf从正在运行的机器配置上游 DNS 服务器来解析 LAN 之外的地址。
您可以在与 DNS 服务器不同的服务器上运行 DHCP 服务器。但您必须跟踪客户端及其 IP 和相应的名称。在小型网络中,您可以轻松分配静态 IP 地址和名称,但您不想这样做。还有一个选项可以从 DHCP 服务器动态更新 DNS 记录,这称为动态 DNS 更新 (DDNS),但需要更多配置。