Fazendo o comando “host -v hostname” funcionar para o CentOS 7

1

Eu tenho uma nova instalação do CentOS 7. Durante a instalação, eu forneci centa.home.local como hostname.

Agora, um dos softwares precisa ver a saída "host -v centa" para localizar o endereço IP do servidor no servidor. Infelizmente não consegue encontrar o endereço 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 ~]$ 
    
por Ramazan Polat 01.07.2017 / 22:16

1 resposta

1

Como o utilitário host está realizando pesquisas de DNS, ele não está usando /etc/hosts . Para que o sucesso seja bem-sucedido, o host precisa estar em um servidor DNS em algum lugar.
Uma vez que a questão está aqui, estou assumindo que adicionar este registro DNS ao seu servidor DNS (aquele em 192.168.101.2) não é uma opção. Felizmente, você pode realmente resolver isso com bastante facilidade, já que você está usando o NetworkManager (conforme indicado pela linha de comentário no seu /etc/resolv.conf ).

A solução é ativar o & configure o dnsmasq. O dnsmasq é um encaminhador de DNS que é executado no host local. Ele pode executar tarefas simples, como pesquisas recursivas e armazenar em cache os resultados. Ele também pode fazer coisas como servir registros de /etc/hosts . O NetworkManager possui uma funcionalidade incorporada para gerenciar o dnsmasq. Então, usá-lo é muito simples.

Configuração

A parte da configuração é informar ao dnsmasq para servir registros de /etc/hosts , já que a configuração padrão que o NetworkManager usa para o dnsmasq não habilita essa funcionalidade.

Crie o arquivo /etc/NetworkManager/dnsmasq.d/hosts.conf com o seguinte conteúdo:

addn-hosts=/etc/hosts

Ativando

A ativação é feita adicionando o parâmetro dns = dnsmasq à seção [main] de /etc/NetworkManager/NetworkManager.conf . Por exemplo:

[main]
dns = dnsmasq

Depois disso, reinicie o NetworkManager (via systemctl restart NetworkManager.service ).

Uso

Agora você deve notar que /etc/resolv.conf tem apenas uma única entrada nameserver apontando para 127.0.0.1 . Quaisquer ferramentas que consultem /etc/resolv.conf para localizar os servidores de nomes devem agora acertar o dnsmasq e receber registros encontrados em /etc/hosts . Se o registro não existir em /etc/hosts , a pesquisa será encaminhada para seu servidor DNS upstream (192.168.101.2).

    
por 01.07.2017 / 22:47