dnsmasq 无需手动更改 /etc/hosts 文件

dnsmasq 无需手动更改 /etc/hosts 文件

我一直在尝试让 dnsmasq 作为一个组合的 dns 和 dhcp 服务器工作。到目前为止,这真是令人恼火……简而言之,DNS 对于添加到 /etc/hosts 的任何内容都工作正常,dhcp 工作正常,但 dhcp 不会使用来自客户端的主机名信息更新 dns。

结果是,如果我知道节点的地址,我只能通过主机名 ping 节点,这意味着设置静态 dhcp 分配并手动将主机名放入 /etc/hosts,这非常烦人,有点违背了 dhcp 的意义。一定有办法让 dnsmasq 更新主机文件,肯定

如果这很重要的话,客户端不会使用 fqdn,我想我已经尝试了“expand-hosts”和“domain=”的所有组合

以下是 dnsmasq 配置文件内容:

需要域
bogus-priv
除外接口=tun0

dhcp 范围=192.168.1.10,192.168.1.80,255.255.255.0,12h
dhcp-租约文件=/var/lib/misc/dnsmasq.leases
dhcp-权威

日志查询
DHCP日志

答案1

尝试使用 设置域domain example.org

dnsmasq 还有一个钩子来调用脚本dhcp-script=foo.sh。发送给脚本的参数是“add”或“del”,然后是 MAC 地址、IP 地址,最后是主机名。

快速创建更新主机文件的脚本应该相对容易。

答案2

DHCP 客户端需要发送一个名称,以便 DNS 中提供该名称。否则 dnsmasq 可以提供该名称,但您必须先在 /etc/dnsmasq.conf 或 /etc/hosts 中配置该名称。

由于 dnsmasq 是 DNS 服务器,因此您需要一个域名。此domain-needed部分强制执行这一点。在您的配置中也设置一个域名。

因此,这基本上就是我所拥有的:

bogus-priv
dhcp-authoritative
dhcp-host=00:0c:29:1b:62:c6,host1,192.168.1.86,infinite
dhcp-host=00:0c:29:f7:e6:7d,host2,192.168.1.89,infinite
dhcp-host=00:1e:58:94:d2:5b,192.168.1.10,infinite
dhcp-option=19,0           # option ip-forwarding off
dhcp-option=27,1
dhcp-option=42,0.0.0.0
dhcp-option=44,192.168.1.10     # set netbios-over-TCP/IP nameserver(s) aka WINS server(s)
dhcp-option=45,0.0.0.0     # netbios datagram distribution server
dhcp-option=46,8           # netbios node type
dhcp-option=6,0.0.0.0
dhcp-option-force=210,/
dhcp-option-force=211,30i
dhcp-option=option:domain-search,example.com
dhcp-option=option:router,192.168.1.1
dhcp-range=192.168.1.50,192.168.1.150,255.255.255.0,30d
domain=example.com
domain-needed
enable-tftp
expand-hosts
interface=eth0
local=/dartworks.biz/
local=/localnet/
no-poll
no-resolv
server=<ISP DNS 1>
server=<ISP DNS 2>

相关内容