使“host -v hostname”命令適用於 CentOS 7
我有一個全新的 CentOS 7 安裝。在安裝過程中,我提供了 centa.home.local 作為主機名。
現在其中一個軟體需要查看“host -v centa”輸出來定位伺服器上的伺服器 IP 地址。不幸的是,它找不到IP地址。
[user1@centa ~]$ ifconfig | grep inet inet 192.168.101.128 netmask 255.255.255.0 broadcast 192.168.101.255 inet6 fe80::20c:29ff:fe00:f049 prefixlen 64 scopeid 0x20<link> inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> [user1@centa ~]$ hostname centa.home.local [user1@centa ~]$ hostname -d home.local [user1@centa ~]$ hostnamectl status Static hostname: centa.home.local Icon name: computer-vm Chassis: vm Machine ID: b2d53d8cc49e486f980d0f8461c415e2 Boot ID: e2dbffd536434cc4ba530a17e8b186d6 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-514.el7.x86_64 Architecture: x86-64 [user1@centa ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain ::1 localhost localhost.localdomain 192.168.101.128 centa.home.local centa [user1@centa ~]$ cat /etc/resolv.conf # Generated by NetworkManager search localdomain home.local nameserver 192.168.101.2 [user1@centa ~]$ host -v centa Trying "centa.localdomain" Trying "centa.home.local" Trying "centa" Host centa not found: 3(NXDOMAIN) Received 98 bytes from 192.168.101.2#53 in 136 ms [user1@centa ~]$
由於該
host
實用程序正在執行 DNS 查找,因此它不使用/etc/hosts
. 這意味著它要成功,主機必須在某處的 DNS 伺服器中。由於問題在這裡,我假設將此 DNS 記錄添加到您的 DNS 伺服器(位於 192.168.101.2 的伺服器)不是一種選擇。幸運的是,您實際上可以很容易地解決這個問題,因為您使用的是 NetworkManager(如 中的註釋行所示
/etc/resolv.conf
)。解決方案是啟用和配置 dnsmasq。dnsmasq 是在本地主機上執行的 DNS 轉發器。它可以執行簡單的任務,例如遞歸查找和記憶體結果。它還可以執行諸如從
/etc/hosts
. NetworkManager 具有用於管理 dnsmasq 的內置功能。所以使用它非常簡單。配置
配置部分是告訴 dnsmasq 從 提供記錄
/etc/hosts
,因為 NetworkManager 用於 dnsmasq 的預設配置不啟用此功能。創建
/etc/NetworkManager/dnsmasq.d/hosts.conf
具有以下內容的文件:addn-hosts=/etc/hosts
啟用
啟用是通過將
dns = dnsmasq
參數添加[main]
到/etc/NetworkManager/NetworkManager.conf
. 例如:[main] dns = dnsmasq
這樣做之後,重新啟動 NetworkManager(通過
systemctl restart NetworkManager.service
)。用法
您現在應該注意到
/etc/resolv.conf
只有一個nameserver
條目指向127.0.0.1
. 任何諮詢/etc/resolv.conf
查找名稱伺服器的工具現在都應該最終訪問 dnsmasq,並接收在/etc/hosts
. 如果記錄中不存在/etc/hosts
,則查找將被轉發到您的上游 DNS 伺服器 (192.168.101.2)。