Ho ricevuto l'errore "nome host: nome o servizio non noto" durante il controllo dell'IP del nome host


13

Sto eseguendo Ubuntu 14.04 sul servizio cloud della mia azienda (la mia istanza ha un IP elastico). Voglio controllare l'indirizzo IP della mia istanza che sto eseguendo dalla riga di comando, ma non ha funzionato.

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

Non capisco il motivo per cui. 

Ho provato a eseguire il ping su ubuntu14-graphite ma ha detto:

unknown host ubuntu14-graphite.

Significa che il mio host non esiste nemmeno?

Ho un altro server (non istanza cloud ma server fisico). In questo server ho installato CentOS 6.7. Ho controllato l'IP del nome host e ha funzionato anche se non c'era nulla di speciale in /etc/hosts.

Ecco l'output di 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

Risposte:


15

Significa che "il sistema" (sto usando quel termine in senso ampio, generale, ambiguo) non sa che il nome ubuntu14-graphite corrisponde al tuo host e al suo indirizzo IP. (Il fatto che sia il nome del tuo host non è abbastanza per farlo accadere.) Ciò significa quasi sicuramente che non hai una linea per il ubuntu14-graphite tuo /etc/hostsfile e che non è nel tuo servizio di denominazione (ad esempio DNS o NIS). Di conseguenza, un modo per risolverlo è aggiungere ubuntu14-graphite(e il suo indirizzo IP) al tuo /etc/hosts. Se stai utilizzando un sistema di denominazione più sofisticato (distribuito) come DNS o NIS (o forse ActiveDirectory?), La soluzione definitiva è quella di aggiungere il tuo host a quel servizio.
_____________
† ...

C'è qualche dibattito sulla questione di quale indirizzo IP dovresti associare al tuo nome host. Tutti concordano sul fatto che dovrebbe essere un indirizzo che "funziona" per il tuo host; cioè comandi come dovrebbero avere successo. Alcune persone consigliano di utilizzare un indirizzo di loopback. Gli indirizzi di loopback hanno sempre la forma 127 .BCD ; i valori comuni sono 127.0.0.1 e 127.0.1.1. Altre persone raccomandano di usare un indirizzo LAN, che potrebbe apparire come 192.168 .CD (ma può essere quasi tutto) - ma non dovresti inserire un indirizzo assegnato dinamicamente nel tuo file hosts (e, se stai usando DHCP con DNS, allora gli indirizzi assegnati in modo dinamico devono essere inseriti automaticamente nei record DNS). Usa comandi simili e per vedere quali indirizzi sono in uso.ping A.B.C.Difconfighostname -I


Grazie la tua risposta Ho modificato la mia domanda perché ho notato un altro caso relativo al mio server CentOS che non ha nient'altro che 127.0.0.1 localhost ma sono ancora in grado di controllare l'IP del mio host.
The One,

Bene, forse il nome e l'indirizzo del server CentOS sono inseriti nel sistema DNS (o qualunque sia il servizio di nomi in uso).
G-Man dice "Reinstate Monica"

Nel sistema CentOS, il bind e il bind-utils non erano installati. Quindi sono davvero confuso.
The One

@TheOne Ubuntu tratta in modo hostnamediverso che i sistemi basati su RH ... immettono 127.0.1.1 ubuntu14-graphitenel /etc/hostsfile e check..note, 127.0.1.1no, no 127.0.0.1(che puoi comunque conservare solo per localhost, come 127.0.0.0/8è il blocco loopback puoi usare qualsiasi indirizzo anche se alcuni sistemi hanno indirizzi limitati predefiniti )
heemayl,

@heemayl Quindi mettendo 127.0.1.1 ubuntu14-graphite su / etc / hosts quindi controlla l'IP non ho ottenuto l'IP giusto. Non ha senso, vero?
The One,

1

Il modo effettivo di controllare l'indirizzo IP di una macchina è utilizzando il ifconfigcomando.

Si noti che, a seconda della configurazione cloud effettiva, l'istanza del server potrebbe non essere a conoscenza dell'IP pubblico e conoscere solo un IP VLAN. Per i dettagli, è necessario fare riferimento alla documentazione del proprio provider.


No; ip a s. Vedere serverfault.com/q/458628/89813 - ifconfig è obsoleto su Linux.
Ripristina Monica - M. Schröder il

0

Aggiungi la myhostnamevoce al hostsservizio in /etc/nsswitch.conf.

In altre parole, cambia questa riga in /etc/nsswitch.conf:

hosts:      files dns

a questo:

hosts:      files dns myhostname

Laddove di solito i nomi host vengono risolti utilizzando il /etc/hostsfile e dns, il nome host del sistema può essere risolto anche dicendo allo switch del servizio nomi di farlo (come farà questa modifica della configurazione).

Questo spiegherebbe perché non hai visto nulla di speciale sul /etc/hostsfile sul sistema che potresti risolvere il nome host locale.

Maggiori informazioni sulla myhostnamebandiera sono qui .


0

Secondo me dipende dalla versione del comando hostname (pacchetto net-tools).

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

  • esempio su "openSuse Leap 42.3":
    # hostname -V
    net-tools 1.60
    hostname 1.100 (2001-04-14)

    # hostname -i
    hostname: Name or service not known
  • su Lubuntu 17.10
  $ hostname -V
  hostname 3.18

hostname -i - mi dà informazioni su IPv6 e IPv4


Quella segnalazione di bug riguarda hostname -s, no hostname -i. Questo non è correlato alle versioni di hostname, è legato alla hostnamerisoluzione del nome host fornito da .
Stephen Kitt

-2

Vai su etc / hosts.save verifica il tuo nome host lì. E poi modifica/etc/hosts per scrivere lì il tuo nome host e il nome host in hosts.save. Controlla anche l'indirizzo IP. Esempio:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

1
L'impostazione di un IP localhost /etc/hostsnon fornirà loro l'indirizzo IP effettivo. Non riesco anche a capire perché stai anche guardando /etc/hosts.savequal è un tecnicismo e molto irrilevante.
Julie Pelletier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.