我有一个 DHCP 服务器,它还安装了一个 dns 服务器,dnsmasq。我当前的dnsmasq.conf如下:
domain-needed
bogus-priv
filterwin2k
address=/gateway.gw/192.168.10.1
interface=eth1
bind-interfaces
我使用 systemd 作为我的网络管理器,其配置如下:
[Match]
Name=eth1
[Network]
DHCPServer=yes
DNS=192.168.10.1
DNS=8.8.8.8
[Address]
Address=192.168.10.1/24
Broadcast=192.168.10.255
[DHCPServer]
PoolOffset=110
PoolSize=20
EmitDNS=yes
有一个 Web 服务器与 dhcp 服务器运行在同一台计算机上,我希望 dhcp 客户端能够查询gateway.gw
以访问此 Web 服务器,而无需更改任何配置。问题是 DHCP 服务器不发送其在 DNS 列表中的 IP,但它发送 8.8.8.8。因此,如果没有明确将网关设置为 DNS 服务器,客户端就无法使用域名gateway.gw
。
我在准备这个问题时一次又一次地尝试,并意识到有时它甚至不发送8.8.8.8
DNS 列表,而且我不知道这里发生了什么以及为什么,因为我对网络一无所知。
bonus question ->
dhcp服务器的配置文件实际上可以通过配置gateway.gw
,可以更改其IP地址(请不要问为什么!:)。有没有办法告诉 dnsmasq 使用 eth1 的 IP 地址(动态查找)来匹配gateway.gw
,而不是对其进行硬编码。
注意:我无法使用 dnsmasq 的内置 dhcp 服务器。我的网络服务器实际上也配置了所有其他网络接口,我不想为一个接口编写额外的代码。
答案1
我遇到了 systemd 的 dhcp 服务器配置,而编写它的人使用了[DhcpServer]
添加 dns 服务器的部分。我[Network]
从那时起就使用了部分这手册将其列在该部分下。但事实证明,在 DhcpServer 部分下列出 DNS 服务器确实可以解决问题。
注意:链接中的手册也是正确的。我仔细阅读了它,它说应该写下 dns 服务器,以便在相应的部分中分发给客户端。