使“host -v 主机名”命令适用于 CentOS 7

使“host -v 主机名”命令适用于 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 ~]$ 

答案1

由于该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)。

相关内容