Systemd

DHCP 伺服器不會發送 DHCP 報價中的所有 DNS 伺服器

  • June 16, 2017

我有一個 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.8DNS 列表,我不知道這裡發生了什麼以及為什麼,在網路中是文盲。

bonus question ->dhcp server 的配置文件其實是可以通過 配置的gateway.gw,可以改變它的IP地址(請不要問為什麼!:)。有沒有辦法告訴 dnsmasq 使用 eth1 的 IP 地址(動態查找)來匹配gateway.gw,而不是硬編碼它。

注意:我不能使用 dnsmasq 的內置 dhcp 伺服器。我的 Web 伺服器實際上也配置了所有其他網路介面,我不想為一個介面編寫額外的程式碼。

我遇到了 systemd 的 dhcp 伺服器配置,而編寫它的這個人使用[DhcpServer]部分來添加 dns 伺服器。我使用的是[Network]部分,因為手冊在該部分下列出了它。但事實證明,在 DhcpServer 部分下列出 DNS 伺服器確實可以解決問題。

注意:連結中的手冊也是正確的。我仔細閱讀了它,它說應該寫下 dns 伺服器以分發給相應部分的客戶端。

引用自:https://unix.stackexchange.com/questions/371332