Centos

使“host -v hostname”命令適用於 CentOS 7

  • July 1, 2017

我有一個全新的 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)。

引用自:https://unix.stackexchange.com/questions/374674