
Estou executando o Ubuntu 14.04 no serviço de nuvem da minha empresa (minha instância possui IP elástico). Quero verificar o endereço IP da minha instância que estou executando por linha de comando, mas não funcionou.
root@ubuntu14-graphite:~# hostname
ubuntu14-graphite
root@ubuntu14-graphite:~# hostname -i
hostname: Name or service not known
Eu não entendo o motivo.
Tentei fazer ping para ubuntu14-graphite, mas ele disse:
unknown host ubuntu14-graphite.
Isso significa que meu host nem existe?
Eu tenho outro servidor (não uma instância de nuvem, mas um servidor físico). Neste servidor instalei o CentOS 6.7. Verifiquei o IP do nome do host e funcionou mesmo que não houvesse nada de especial no /etc/hosts
.
Aqui está o resultado 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
Responder1
Isso 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 ao seu endereço IP. (O fato é do seu anfitriãonomenão é suficiente para fazer isso acontecer.) Isso quase certamente significa que você não tem uma linha for ubuntu14-graphite
em seu /etc/hosts
arquivo † e que ela não está em seu serviço de nomenclatura (por exemplo, DNS ou NIS). Conseqüentemente, uma maneira de corrigir isso é adicionar ubuntu14-graphite
(e seu endereço IP) ao seu arquivo /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 no arquivo hosts que esse é o caso.
Há algum debate sobre qual endereço IP você deve associar ao seu nome de host. Todos concordam que deve ser um endereço que “funcione” para o seu anfitrião; ou seja, comandos como devem ter sucesso. Algumas pessoas recomendam usar um endereço de loopback. Os endereços de loopback são sempre no formato 127ping A.B.C.D
.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 qualquer coisa) - mas você não deve colocar um endereço atribuído dinamicamente em seu arquivo hosts (e, se estiver usando DHCP com DNS, então os endereços atribuídos dinamicamente devem ser inseridos em seus registros DNS automaticamente ). Use comandos como ifconfig
e hostname -I
para ver quais endereços estão em uso.
Responder2
A maneira real de verificar o endereço IP de uma máquina é usando o ifconfig
comando.
Observe que, dependendo da configuração real da nuvem, a instância do servidor pode não estar ciente do IP público e conhecer apenas um IP da VLAN. Para obter detalhes sobre isso, você precisa consultar a documentação do seu provedor.
Responder3
Adicione a myhostname
entrada ao hosts
serviço no formato /etc/nsswitch.conf
.
Em outras palavras, altere esta linha em /etc/nsswitch.conf
:
hosts: files dns
para isso:
hosts: files dns myhostname
Onde normalmente os nomes de host são resolvidos usando o /etc/hosts
arquivo e o DNS, o nome de host do sistema também pode ser resolvido informando ao Name Service Switch para fazer isso (como esta 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 pudesse resolver o nome do host local.
Mais informações sobre a myhostname
bandeira sãoaqui.
Responder4
Vá para etc/hosts.save e verifique seu nome de host lá. E então edite /etc/hosts
para escrever lá o seu nome de host e o nome do 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