DNSMasq 如何与我的路由器集成?

Pan*_*nos 3 domain-name-system dhcp linux router dnsmasq

语境

我已经在 Debian 机器上成功安装了 DNSMasq,一切似乎都在工作。这是我所做的:

  1. 安装 DNSMasq sudo apt-get install dnsmasq

  2. /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
    
    Run Code Online (Sandbox Code Playgroud)

192.168.0.1 是我的 ISP 路由器的 IP。

  1. 在我的 ISP 路由器上关闭 DHCP
  2. 重新启动 DNSMasq 服务 sudo service dnsmasq restart

这一切都很棒,但我是网络新手,有很多问题:

  1. DNSMasq 如何与路由器通信?我的意思是,它如何告诉路由器它应该从那时起开始使用 DNSMasq 的 DHCP 服务器?是否有特定的协议,即 DNSMasq 与路由器通信,还是 DHCP 本身?

  2. 为什么我不必配置我的设备(安卓手机和台式电脑)来使用 DNSMasq 的 DNS 服务器?[这个问题的答案可能和上面那个问题的答案一样,但无论如何……]

  3. 有没有办法只将 DNSMasq 用于 DNS 并让路由器的 DHCP 服务器“与”或“使用”DNSMasq 的 DNS 服务器?这样我就不需要关闭路由器的 DHCP 服务器了。

正如我所说,我是一个新手,但我无法在网络上的任何地方找到这些问题的答案。

Tho*_*mas 9

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
Run Code Online (Sandbox Code Playgroud)

它告诉客户端192.168.0.1用作默认路由。DNSmasq 还将从它运行的机器中获取/etc/resolv.conf 中的配置,以配置上游 DNS 服务器以解析 LAN 外的地址。

您可以在与运行 DNS 服务器不同的服务器上运行 DHCP 服务器。但是您必须跟踪客户端及其 IP 和相应的名称。在小型网络中,您可以轻松分配静态 IP 地址和名称,但这不是您想要做的。还有一个选项可以从 DHCP 服务器动态更新 DNS 记录,这称为动态 DNS 更新 (DDNS),但需要更多配置。

  • 好吧,客户端发送 DHCP 请求,这些请求在网络上广播,无论是通过有线还是在加入 WiFi 网络之后。此时,客户端还没有 IP 地址,它们会发送包含其 MAC 地址的 DHCP 请求。DHCP 服务器然后根据其配置进行应答,并通常分配客户端接受的 IP 地址。此外,DHCP 服务器会告诉客户端要使用哪些 DNS 服务器和搜索路径,以及要为网络使用哪个默认路由器。在 IPv6 中,情况有点不同。 (2认同)