Ubuntu
/usr/bin/host 即使在重新啟動後也不接受對 /etc/hosts 的更改
我有一台 Ubuntu Server 12.04 (
amd64
) 機器,當我更改/etc/hosts
時,即使重新啟動,更改也不會被拾取。我/usr/bin/host
用來測試,但其他程序似乎也沒有。這是一個伺服器,
nscd
並dnsmasq
沒有安裝。此外,該文件/etc/nsswitch.conf
包含以下行:hosts: files dns
所以我希望它能夠工作。我還檢查
mtime
了文件是否隨編輯而更改,並嘗試執行service networking restart
(不顧一切)以及resolvconf -u
.所有命令在
root
需要的地方執行。該機器已手動配置網路,/etc/network/interfaces
而不是通過網路管理器(也未安裝)。基本上我想要實現的是可以操縱一些主機的IP。原因是在我們的網路中,我得到了一個我沒有路由的 IP,但我可以通過 HTTPS 將外部 IP 用於該服務。
我錯過了什麼?
**注意:**本地沒有執行 DNS 伺服器,並且 中的
nameserver
行/etc/resolv.conf
(以及 中的相應行interfaces
)指向給我錯誤 IP 的 DNS 伺服器。**另請注意:**我在網上搜尋並閱讀了“類似問題”,但我的案例似乎沒有被涵蓋。
/etc/host.conf
是:# The "order" line is only used by old versions of the C library. order hosts,bind multi on
host 命令不檢查 hosts 文件。從手冊頁:
host is a simple utility for performing DNS lookups.
如果您想在尊重主機文件的同時測試查找,請使用 ping 或 getent。
$ tail -1 /etc/hosts 127.0.0.1 google.com $ ping -c1 google.com | head -1 PING google.com (127.0.0.1) 56(84) bytes of data. $ getent ahosts google.com 127.0.0.1 STREAM google.com 127.0.0.1 DGRAM 127.0.0.1 RAW
該
host
實用程序用於 DNS 查找。它不關心主機文件或解析主機名的非 DNS 方法。如果您想查看您的系統在正常情況下如何解析主機名(考慮到 nsswitch.conf),您可以使用getent
. 該host
實用程序應保留用於 DNS 測試。這是一個例子:$ host foobar.com foobar.com has address 69.89.31.56 foobar.com mail is handled by 0 foobar.com. $ getent hosts foobar.com 10.188.14.16 foobar.com