将条目添加到 /etc/hosts 时,dnsmasq 不会自动重新加载

ros*_*ttu 9 dnsmasq

我努力了几天来配置 dnsmasq 以自动重新加载或了解添加到 /etc/hosts 或另一个配置文件的新主机的知识/etc/hosts.dnsmasq

这甚至可能吗?

小智 10

有两种方法可以让 dnsmasq 重新加载主机文件:

  1. 正如 Aaron Copley在他的评论中指出的,发送SIGHUP到 dnsmasq。从手册页

    当它收到 SIGHUP 时,dnsmasq清除其缓存,然后重新加载/etc/hosts/etc/ethers以及 --dhcp-hostsfile、--dhcp-hostsdir、--dhcp-optsfile、--dhcp 给出的任何文件-optsdir、--addn-hosts 或--hostsdir。为所有现有的 DHCP 租约调用 dhcp 租约更改脚本。如果设置了--no-poll SIGHUP 也会重新读取/etc/resolv.conf。SIGHUP 不会重新读取配置文件。

    请注意,在这种情况下 dnsmasq 不会重新启动,但它会重新读取许多其他文件(并为所有现有的 DHCP 租约调用 dhcp 租约更改脚本)。如果太快触发重新加载是一个问题,您可以消除信号的抖动

  2. 使用该--hostsdir选项。再次从手册页

    --hostsdir=<path>
            读取目录中包含的所有主机文件。自动读取新的或更改的文件。有关详细信息,请参阅 --dhcp-hostsdir。

    作为参考,这里是文档--dhcp-hostsdir

    --dhcp-hostsdir=<path>
            这相当于 dhcp-hostsfile,除了以下内容。路径必须是一个目录,而不是一个单独的文件。自动读取目录中已更改或新的文件,无需发送 SIGHUP。如果文件在被 dnsmasq 读取后被删除或更改,那么它所包含的主机记录将一直存在,直到 dnsmasq 收到一个 SIGHUP,或者重新启动;即主机记录只能动态添加。

    与第一个选项相比,这有几个优点:dnsmasq 将自动重新读取主机文件,SIGHUP不需要,并且;仅重新加载主机文件,不执行其他操作。

    一个潜在的缺点是,正如文档所--dhcp-hostsdir指出的,新的主机条目是动态添加的,但删除或更改的条目不会更新。dnsmasq 的作者 Simon Kelley 已经确认这是设计使然。