Linux

主機文件似乎被忽略了

  • September 2, 2021

我有幾乎全新的 Ubuntu 桌面盒。作業系統是兩週前安裝的,並從業力儲存庫更新。上週我的 DNS 沒有問題。但本週發生了一些變化。我不確定什麼和何時,也不確定我是否更改了任何配置。

所以現在我遇到了一些非常奇怪的情況。根據日誌名稱解析應該可以正常工作。

/etc/hosts

127.0.0.1   localhost test
127.0.1.1   desktop

/etc/host.conf

order hosts,bind
multi on

/etc/resolv.conf

# Generated by NetworkManager
search search servers obtained via DHCP
nameserver 192.168.0.3

/etc/nsswitch.conf

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

但如果事實並非如此。

user@test ~>ping 測試

PING localhost (127.0.0.1) 56(84) bytes of data.
[skip]

ping 沒問題。

使用者@測試 ~> 主機測試

test.mydomain.com has address xx.xxx.161.201

我懷疑 NetworkManager 可能會導致這種不當行為,但不知道從哪裡開始檢查它。有什麼想法、建議嗎?

使用此配置,大多數應用程序將很樂意使用您從/etc/hosts.

不過host不看/etc/nsswitch.conf。這是設計使然,而不是偶然,因為host專門是一個 DNS 查找程序。 /etc/hosts不是 DNS,它(大部分)是我們在擁有 DNS之前使用的。

dignslookup- 它們也是特定於 DNS 的。

host命令(與digand一起nslookup)是bindDNS 實用程序的一部分。作為 DNS 解析器實用程序,它單獨進行 DNS 解析。

如果您有興趣從任何libnss驅動的數據儲存中獲取條目,您可以使用該getent程序。例如,要獲取主機條目,請像這樣使用它:

getent hosts google.com

這遵循按順序列出的解決hosts:順序/etc/nsswitch.conf,其中包括/etc/hosts是否將“文件”列為選項之一。

引用自:https://serverfault.com/questions/121890