Fedora 20 的 DNS 解析問題

Fedora 20 的 DNS 解析問題

我有一個新建的 Fedora 20 伺服器,剛剛連接到我的網路。它是在 VirtualBox 主機上運行的虛擬伺服器。一切似乎都正常,但我在名稱解析方面遇到問題。

(我應該說,名稱解析是由 Windows 伺服器在單獨的硬體上提供的,該硬體適用於網路上的所有其他電腦。)

從命令列我可以解析外部主機,例如unix.stackexchange.com.我可以很高興地解決這個問題並對其進行 ping 操作,就像我嘗試過的所有其他外部主機一樣。

然而,我的本地網路(我們稱之為xyz.local)是不同的。我的 F20 機器上的網路介面位於DOMAIN=xyx.local網路腳本中(完整腳本如下)。從命令列我可以解析,例如,,server-01但不能解析server-01.xyz.local

我可以解析短形式的別名,即使規範名稱是長形式,因此,例如,ping mysql成功解析為其 alias linux-04.xyz.local,但我既不能解析mysql.xyz.local也不能解析linux-04.xyz.local

顯然我錯過了一些東西。誰能建議什麼?

/etc/hosts 僅包含 127.0.0.1 的標準 localhost 項目

/etc/resolv.conf如下:

#Generated by Network Manager
search xyz.local
nameserver 192.168.xxx.xxx

我的介面腳本是

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="Wired connection 1"
UUID=<uuid>
ONBOOT=yes
IPADDR0=192.168.xxx.xxx
PREFIX0=24
GATEWAY0=192.168.xxx.xxx
DNS1=192.168.xxx.xxx
HWADDR=<mac>
DOMAIN=xyz.local
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

答案1

您的部分問題可能是由於您的搜尋路徑是透過 NetworkManager 自動產生的:

search xyz.local

這行確實應該是這樣的:

search xyz.local.

末尾的句點至關重要,因為它會告訴 DNS 解析器停止。所以它不會對你做這樣的事情:

mysql.xyz.local.xyz.local

您可以透過嘗試暫時手動新增句點來解析主機名稱來確認這一點。

$ nslookup mysql.xyz.local.

廣泛解析此域

要解決此問題,您需要變更 DHCP 伺服器上網域的定義,以便將網域作為xyz.local..

/etc/nsswitch.conf

用於解析主機名稱的方法由檔案控制/etc/nsswitch.conf。 NSS 符號代表名稱服務切換,您可以透過手冊頁閱讀更多相關資訊man nss

這是我的檔案中控制主機名稱解析方式的行:

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns mdns4_minimal

它首先查看我的本機文件,/etc/hosts然後查詢 DNS 第二。

答案2

該問題是由於 nsswitch.conf 檔案中的關鍵字“mdns4_minimal”引起的。該關鍵字告訴解析器所有以 local 結尾的內容都應該使用 mdns 來查詢。刪除該關鍵字(以及通常在方括號中給出的其他選項)應該就足夠了。

更多詳細資訊你可以在我的郵政

nslookup 解決所有問題的原因是因為它不找 nsswitch.conf 而是直接使用 /etc/resolv.conf。另一方面,ping 取決於解析器,該解析器首先查看 nsswitch.conf 並使用其中寫入的內容解析名稱。

相關內容