Estou executando o Ubuntu 14.04 no serviço de nuvem da minha empresa (minha instância tem IP elástico). Quero verificar o endereço IP da minha instância que estou executando pela linha de comando, mas não funcionou.

root@ubuntu14-graphite:~# hostname ubuntu14-graphite root@ubuntu14-graphite:~# hostname -i hostname: Name or service not known 

Não entendo o motivo.

Eu tentei fazer ping para ubuntu14-graphite, mas ele disse:

unknown host ubuntu14-graphite. 

Isso significa que meu host não ainda existe?

Eu tenho outro servidor (não instância de nuvem, mas servidor físico). Neste servidor instalei o CentOS 6.7. Eu verifiquei o IP do nome do host e funcionou, embora não houvesse nada de especial em /etc/hosts.

Aqui está a saída de cat /etc/hosts:

127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts 

Resposta

Significa que “o sistema “(estou usando esse termo em um sentido amplo, geral e ambíguo) não sabe que o nome ubuntu14-graphite corresponde ao seu host e seu endereço IP. (O fato de que seu host “s nome não é o suficiente para que isso aconteça .) Isso quase certamente significa que você não tem uma linha para ubuntu14-graphite em seu /etc/hosts arquivo , e que não está em seu serviço de nomes (por exemplo, DNS ou NIS). Consequentemente, uma maneira de corrigir isso é adicionar ubuntu14-graphite (e seu endereço IP) ao seu /etc/hosts. Se você estiver usando um sistema de nomenclatura mais sofisticado (distribuído), como DNS ou NIS (ou talvez ActiveDirectory?), A solução definitiva é adicionar seu host a esse serviço.
_____________
† … e vejo pela sua postagem do arquivo hosts que este é o caso.

Há algum debate sobre a questão de qual endereço IP você deve associar ao seu nome de host . Todos concordam que deve ser um endereço que “funciona” para o seu host; ou seja, comandos como ping A.B.C.D devem funcionar. Algumas pessoas recomendam o uso de um endereço de loopback. Os endereços de loopback são sempre do formulário 127 .BCD ; os valores comuns são 127.0.0.1 e 127.0.1.1. Outras pessoas recomendam usar um endereço LAN, que pode ser semelhante a 192.168 .CD (mas pode ser quase nada) – mas você não deve colocar um endereço atribuído dinamicamente em seu arquivo de hosts (e, se você estiver usando DHCP com DNS, então o (s) endereço (s) atribuído (s) dinamicamente (s) devem ser inseridos em seus registros DNS automaticamente). Use comandos como ifconfig e hostname -I para ver quais endereços estão em uso.

Comentários

  • Obrigado por sua resposta. Editei minha pergunta porque notei mais um caso relacionado ao meu servidor CentOS que não ‘ tem nada além de 127.0.0.1 localhost, mas ainda posso verificar meu host ‘ IP.
  • Bem, talvez o nome e o endereço do servidor CentOS sejam inseridos no sistema DNS (ou qualquer serviço de nome em uso).
  • No sistema CentOS, os utilitários bind e bind não foram instalados. Então, eu ‘ estou realmente confuso.
  • @TheOne Ubuntu trata hostname de maneira diferente que os sistemas baseados em RH..put 127.0.1.1 ubuntu14-graphite no /etc/hosts arquivo e verifique .. note, seu 127.0.1.1, não 127.0.0.1 (que você pode preservar de qualquer maneira apenas para localhost, como 127.0.0.0/8 é um bloco de loopback, você pode usar qualquer endereço, embora alguns sistemas tenham endereços restritos predefinidos)
  • @heemayl Então, ao colocar 127.0.1.1 ubuntu14-graphite em / etc / hosts, verifiquei o IP, não ‘ obtive o IP correto. Isso não ‘ não faz sentido, certo?

Resposta

A maneira real de verificar o endereço IP de uma máquina é usando o comando ifconfig.

Observe que, dependendo da configuração real da nuvem, a instância do servidor pode não esteja ciente do IP público e conheça apenas um IP VLAN. Para obter detalhes sobre isso, consulte a documentação do seu provedor.

Comentários

Resposta

Adicione a entrada myhostname ao serviço hosts em /etc/nsswitch.conf.

Em outras palavras, altere esta linha em /etc/nsswitch.conf:

hosts: files dns 

para isto:

hosts: files dns myhostname 

Onde geralmente os nomes de host são resolvidos usando o arquivo /etc/hosts e dns, o nome de host do sistema também pode ser resolvido dizendo ao switch de serviço de nomes para fazer isso (como essa alteração de configuração fará).

Isso explicaria por que você não viu nada de especial sobre o /etc/hosts arquivo no sistema que você pode resolver o nome do host local.

Mais informações sobre o sinalizador myhostname é aqui .

Resposta

Na minha opinião, depende da versão do comando hostname (pacote net-tools).

Veja: https://bugzilla.redhat.com/show_bug.cgi?id=319981

  • exemplo em ” openSuse Leap 42.3 “:
 # hostname -V net-tools 1.60 hostname 1.100 (2001-04-14) # hostname -i hostname: Name or service not known 
  • no Lubuntu 17.10
 $ hostname -V hostname 3.18 

hostname -i – me dá informações sobre IPv6 e IPv4

Comentários

  • Esse relatório de bug é sobre hostname -s, não hostname -i. Isso não está relacionado às versões de hostname, mas sim se o nome do host fornecido por hostname pode ser resolvido.

Resposta

Se o problema ainda não foi resolvido apesar da aplicação das soluções alternativas acima:

Tente remover http:// parte do url em seu telnet comando conforme mostrado abaixo:

Em vez de usar:

telnet http://website.lab7-2533586.ch-geni-net.instageni.colorado.edu 80 

Tente isto:

telnet website.lab7-2533586.ch-geni-net.instageni.colorado.edu 80 

Resposta

Vá para etc / hosts.save e verifique o seu nome de host. E então edite /etc/hosts para escrever lá o seu nome de host e o nome de host em hosts.save. Verifique também o endereço IP. Exemplo:

127.0.0.1 ubuntu 127.0.1.1 ubuntu.ubuntu-domain ubuntu 

Comentários

  • Definir um IP de host local em /etc/hosts não fornecerá o endereço IP real. Também não consigo ver por que você ‘ também está olhando para /etc/hosts.save, que é um detalhe técnico e muito irrelevante.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *