/ usr / bin / host não está selecionando mudanças em / etc / hosts mesmo após a reinicialização

4

Eu tenho uma máquina Ubuntu Server 12.04 ( amd64 ) na qual, quando eu altero /etc/hosts , as alterações não são selecionadas, mesmo depois de uma reinicialização. Eu estou usando /usr/bin/host para testar, mas nenhum dos outros programas parece buscá-lo.

Este é um servidor e nscd e dnsmasq não estão instalados. Além disso, o arquivo /etc/nsswitch.conf contém a linha:

hosts:          files dns

para que eu espere que funcione. Também verifiquei que mtime do arquivo é alterado com a edição e tentei executar service networking restart (em todas as probabilidades) e também resolvconf -u .

Todos os comandos são executados como root , quando necessário. A máquina tem rede configurada manualmente em /etc/network/interfaces e não via Network Manager (também não está instalado).

Basicamente, o que eu quero alcançar é que o IP de alguns hosts possa ser manipulado. O motivo é que dentro da nossa rede eu recebo um IP para o qual não tenho rota, mas posso usar o IP externo para esse serviço via HTTPS.

O que estou perdendo?

Observação: nenhum servidor DNS está sendo executado localmente e as linhas nameserver em /etc/resolv.conf (e as respectivas linhas em interfaces ) apontam para o servidor DNS que me fornece o IP incorreto.

Além disso, observe: Pesquisei na Web e li as "perguntas semelhantes", mas meu caso não parece estar coberto.

/etc/host.conf é:

# The "order" line is only used by old versions of the C library.
order hosts,bind
multi on
    
por 0xC0000022L 14.11.2013 / 16:42

3 respostas

8

O comando do host não verifica o arquivo hosts. A partir do manpage:

host is a simple utility for performing DNS lookups.

Se você deseja testar pesquisas respeitando o arquivo hosts, use ping ou 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    
    
por 14.11.2013 / 17:01
2

O utilitário host é usado para pesquisas de DNS. Não se preocupa com arquivos de hosts ou métodos não-DNS de resolver um nome de host. Se você quiser ver como seu sistema resolveria um nome de host em circunstâncias normais (considerando o nsswitch.conf), você pode usar getent . O utilitário host deve ser reservado para testes de DNS. Aqui está um exemplo:

$ 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
    
por 14.11.2013 / 17:01
1

Programas como dig , host e nslookup consultam apenas o DNS . Eles não consultam outras fontes de nomes de host, como /etc/hosts , NIS ou LDAP.

Na maioria das configurações, a maneira mais fácil de adicionar nomes de host localmente é executar um servidor DNS. A execução de um cache DNS é uma boa ideia de qualquer maneira para o desempenho. Em outras palavras, o fato de que nenhum servidor DNS está sendo executado localmente é algo para corrigir, em vez de algo para contornar.

Dnsmasq é uma escolha comum: é amplamente disponível, pequeno (é usado em muitos roteadores baseados em Linux) e fácil para configurar. O Dnsmasq armazena em cache solicitações DNS e pode servir nomes adicionais de um arquivo de hosts. Ele também fornece um servidor DHCP básico adequado para pequenas redes, mas você não precisa usar essa parte. Se você tiver uma máquina isolada, execute o Dnsmasq nela. Se você tiver uma rede local, execute o Dnsmasq (ou algum outro software equivalente que já esteja lá) em seu roteador. Consulte Como para tornar uma máquina acessível a partir da LAN usando seu nome de host para obter mais informações, incluindo como configurar o Dnsmasq.

    
por 18.11.2013 / 01:52