![当条目添加到 /etc/hosts 时,dnsmasq 不会自动重新加载](https://linux22.com/image/667110/%E5%BD%93%E6%9D%A1%E7%9B%AE%E6%B7%BB%E5%8A%A0%E5%88%B0%20%2Fetc%2Fhosts%20%E6%97%B6%EF%BC%8Cdnsmasq%20%E4%B8%8D%E4%BC%9A%E8%87%AA%E5%8A%A8%E9%87%8D%E6%96%B0%E5%8A%A0%E8%BD%BD.png)
我花了几天的时间配置 dnsmasq 以自动重新加载或了解添加到 /etc/hosts 或另一个配置文件中的新主机/etc/hosts.dnsmasq
。
这可能吗?
答案1
有两种方法可以使 dnsmasq 重新加载主机文件:
亚伦·科普利在他的评论中指出,发送
SIGHUP
到 dnsmasq。从手册页:当收到 SIGHUP 时,域名系统清除缓存然后重新加载/etc/hosts和/etc/ethers以及由 --dhcp-hostsfile、--dhcp-hostsdir、--dhcp-optsfile、--dhcp-optsdir、--addn-hosts 或 --hostsdir 给出的任何文件。将为所有现有 DHCP 租约调用 dhcp 租约更改脚本。如果--无投票设置SIGHUP也重新读取/etc/resolv.conf. SIGHUP 不会重新读取配置文件。
请注意,在这种情况下,dnsmasq 不会重新启动,但它会重新读取许多其他文件(并调用所有现有 DHCP 租约的 dhcp 租约更改脚本)。如果担心触发重新加载太快,您可以防抖信 号。
使用
--hostsdir
选项。再次从手册页:--hostsdir=<路径>
读取目录中包含的所有主机文件。会自动读取新的或更改的文件。有关详细信息,请参阅 --dhcp-hostsdir。作为参考,这里是文档
--dhcp-hostsdir
:–dhcp-hostsdir=<路径>
这相当于 dhcp-hostsfile,但以下情况除外。路径必须是目录,而不是单个文件。目录中更改或新增的文件将自动读取,无需发送 SIGHUP。如果文件在被 dnsmasq 读取后被删除或更改,则其包含的主机记录将保留,直到 dnsmasq 收到 SIGHUP 或重新启动;即主机记录仅动态添加。与第一个选项相比,这有几个优点:dnsmasq 将自动重新读取主机文件,无需
SIGHUP
执行任何操作;仅重新加载主机文件,不采取其他操作。一个潜在的缺点是,正如文档指出
--dhcp-hostsdir
的那样,新的主机条目是动态添加的,但删除或更改的条目不会更新。dnsmasq 的作者 Simon Kelley 曾确认这是设计使然。