![解析具有多個子網路的 dnsmasq 伺服器的伺服器主機名](https://rvso.com/image/50559/%E8%A7%A3%E6%9E%90%E5%85%B7%E6%9C%89%E5%A4%9A%E5%80%8B%E5%AD%90%E7%B6%B2%E8%B7%AF%E7%9A%84%20dnsmasq%20%E4%BC%BA%E6%9C%8D%E5%99%A8%E7%9A%84%E4%BC%BA%E6%9C%8D%E5%99%A8%E4%B8%BB%E6%A9%9F%E5%90%8D.png)
我有一個自製的Linux路由器,運行dnsmasq。它有兩個不同的網卡,客戶端透過它們進行連接;其中一台有子網192.168.1.
,一台有子網192.168.2.
。我的/etc/dnsmasq.conf
看起來像這樣:
except-interface=enp1s0
dhcp-range=interface:wlp2s0,192.168.1.10,192.168.1.25,255.255.255.0,48h
dhcp-range=interface:enp0s29f7u4,192.168.2.10,192.168.2.25,255.255.255.0,48h
解析客戶端可以在子網路之間進行,但我無法從兩個子網路解析伺服器本身的主機名稱。如果我使用新增靜態規則,則address=/name/IP
必須選擇其中一個子網,並且無法從其他子網路執行 ping 操作(除其他外)。例如,如果我設定
address=/name/192.168.1.1
然後我可以從子網路解析主機名192.168.2.
,但 ping 沒有得到答案。我該如何解決這種情況?我希望不必橋接介面或類似的東西。
答案1
據我了解,在您的情況下,伺服器每個子網路都有一個位址:192.168.1.1,另一個可能是192.168.2.1
我想您希望客戶端接收其對應子網路的伺服器位址。
我遇到了同樣的問題,在中找到了答案http://t7994.network-dns-dnsmasq-general.dnstalk.us/multi-homed-server-with-same-hostname-on-2-subnets-t7994.html
檢查 dnsmasq 手冊頁中的「-y, --localise-queries」。
您也可以將「localise-queries」放入 dnsmasq.conf 中,並將兩個伺服器位址項目放入 /etc/hosts 檔案中。