Existe uma maneira de determinar o nome do host da máquina sem tocar em “/ etc / hosts”?

2

Considerando que estou em uma LAN que atribui endereços IP usando DHCP (e que não sou seu administrador), como configuro as coisas de forma que quando eu ping <hostname> (em vez de ping <IP address> , eu faço obter algo de volta, sem ter adicionado a correspondência em "/ etc / hostname")? Eu precisaria fazer essa alteração em locais separados para a Web e para o servidor ssh?

Eu estou pensando porque eu penso que houve um tempo em que eu poderia fazer isso sem mexer em "/ etc / hosts" (ou estou enganado?). O problema com esse arquivo é que eu teria que fazê-lo em cada cliente que deseja usar o mapeamento de nome para IP e ter que alterá-lo continuamente se algum endereço IP for alterado.

A questão realmente é: existe uma ferramenta que pode fazer a descoberta de rede de nomes de host (em correspondência com seus endereços IP, é claro).

    
por Tshepang 18.07.2011 / 21:16

4 respostas

5

Idealmente, o seu administrador de sistema teria configurado a rede com um servidor DNS e esse servidor DNS seria dinamicamente atualizado com nomes de host do DHCP.

Você pode tentar usar as mensagens de nome de domínio ICMP para colhê-las, mas não acho que é amplamente implementado.

Outro método antigo é o servidor NIS. Mas estes não são mais tão comuns. Você pode tentar ypcat hosts e ver se isso lhe devolve alguma coisa.

Outro é o zeroconf, onde os hosts que o suportam transmitem seu nome e você pode executar um serviço que os armazena em cache (o pacote Avahi faz isso. Se você o tiver configurado, então um ping <hostname>.local pode funcionar para você, mas nem todo nó também suportará isso, você também pode tentar consultar com as ferramentas avahi: avahi-resolve-host-name <hostname>.local e escrever um script que atualize o / etc / hosts para você se o resolvedor normal não funcionar.

Portanto, não há outro lugar "mágico" para obter nomes de host. Alguém terá que definir esse mapeamento ou torná-lo dinamicamente detectável. Se o seu administrador de sistema não ou não, então você tem que fazê-lo. E o único lugar que você pode fazer para sua máquina local é o arquivo / etc / hosts. Então, se nenhum dos métodos acima funcionar, então você está preso a isso. Desculpe.

    
por 19.07.2011 / 07:22
2

Você talvez estivesse pensando em zeroconf ? O Zeroconf é um conjunto de protocolos para estabelecer um link de IP entre duas ou mais máquinas e descobrir serviços. Infelizmente, existem vários protocolos de resolução de nomes no domínio zeroconf, portanto, seu objetivo de ser totalmente compatível com várias plataformas não é totalmente realizado. Mas se todas as máquinas executam o mesmo sistema operacional, isso não é um problema. O caso de uso alvo primário do zeroconf são duas máquinas conectadas por um cabo cruzado, mas também funciona em uma rede comutada local.

A implementação mais comum do zeroconf no Linux é Avahi . No Debian ou Ubuntu, instalar o pacote avahi-daemon deve ser o suficiente para começar. Outros pacotes também podem ser úteis (em particular, avahi-autoipd se você quiser negociar endereços IP em uma rede que não esteja executando um servidor DHCP, avahi-discover para visualizar os serviços disponíveis).

    
por 18.07.2011 / 22:58
1

Um servidor DNS ajudará você aqui. Você pode definir clientes para obter um IP do DHCP e usar dns dinâmicos para permitir que os clientes atualizem o servidor DNS quando receberem um novo IP.

Veja o link a seguir para um exemplo com o servidor de DNS do BIND

    
por 18.07.2011 / 22:38
0

sem 100% você pode tentar.

ping <hostname>.local

Eu sei que isso funciona ao procurar hosts OSX ou Ubuntu.

    
por 19.07.2011 / 03:12