Come trovo il mio indirizzo IP interno?


208

Ho installato Ubuntu server 12.04, quindi non ho una GUI. Quando eseguo il comando ifconfig, non riesco a trovare il mio indirizzo IP interno. Dice inet addr: 127.0.0.1.

Ecco l'output di ifconfig -a:

eth0   link encap:Ethernet  HWaddr 00:06:4f:4a:66:f0
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth1   link encap:Ethernet  HWaddr 00:16:ec:05:c8:9c 
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo     Link encap:Local Loopback
    inet addr 127.0.0.1  Mask:255.0.0.0
    inet6 addr:  ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536  Metric:1
    RX packets:1800 errors:0 dropped:0 overruns:0 frame:0
    Tx packets:1800 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:143896 (143.b KB)  TX bytes:143896 (143.8 KB)

ecco i contenuti di etc / network / interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Se qualcuno potesse modificarlo per me, il contenuto di etc / network / interfaces dovrebbe essere su righe separate.

L'output dell'host askubuntu.com è stato:

;; connection timed out; no servers could be reached.

Ho installato owncloud e webmin alcuni mesi fa e li usavo da un mese senza problemi. Penso che l'alimentazione sia stata disattivata un giorno 2 mesi fa e non ho mai riacceso il server fino a ieri. Non ho fatto nulla che potesse influire sulla configurazione di Internet, quindi non sono sicuro del perché non funzioni più. Per quanto riguarda la mia topologia di rete, ho una scheda di rete PCI-E per il PC. La linea ethernet passa dalla scheda di rete a uno switch e quindi a un modem / router da lì.


1
@AvatarParto Quelle sono per le interfacce di accesso al pubblico, questa domanda riguarda le reti interne ...
Bruno Pereira,

Per curiosità, cosa /etc/network/interfacesc'è dentro?
Powerlord

So usare il comando change directory, ma non so come elencare i file una volta lì, come farei?
Cam Jones

lselencherà i file in una directory. ls -lfornirà un elenco dettagliato. Per elencare il contenuto di una directory particolare ls -l /etc/network. Per cambiare in una directory ed elencare i contenuti cd /etc/network ;ls -l. Per leggere il contenuto di etc/network/interfaces(questo è un file) sudo pico /etc/network/interfaces. ( picoè un editor di testo leggero - buono per la lettura e l'editing di base e meno intimidatorio di vi.)
douggro

Risposte:


205

Questi comandi ti diranno tutte le informazioni di rete

ip add

o

ifconfig -a

Se come dici tu ti dà solo 127.0.0.1 allora ci sono due opzioni:

  1. La scheda di rete non è collegata o non riconosciuta dal sistema

  2. Il server DHCP della rete non funziona o non è collegato


quando accedo mi dice che ci sono alcuni aggiornamenti o aggiornamenti, quindi presumo che debba parlare con il sito Web ufficiale di Ubuntu per sapere che ha aggiornamenti, quindi penso che la mia Internet funzioni.
Cam Jones

@Skateguy prova ad aprire askubuntu.com e per favore stampa tutto ifconfig -a
kamil

Non ho una GUI, sto per scriverlo però.
Cam Jones

1
Come posso rispondere alle domande poste dalle due opzioni?
Cam Jones

1
Vorrei suggerire prima l' ipopzione , quindi il ( obsoleto ) in seguito. ifconfig
Campa,

213
hostname -I

Questo ti darà solo l'indirizzo IP senza ulteriori informazioni.


16
È perfetto. Così tante risposte eccessivamente complicate (ma non cattive) .. questa è semplicemente morta.
user1003916

3
Risposta perfetta .. :)
john400

2
Secondo la pagina man: `-I, --all-ip-address Visualizza tutti gli indirizzi di rete dell'host. Questa opzione elenca tutti gli indirizzi configurati su tutte le interfacce di rete. L'interfaccia di loopback e gli indirizzi link-local IPv6 sono omessi. Quindi questo ti darà l'indirizzo IP sulla rete a cui sei connesso, ma anche l'IP del tuo computer se lo stai usando come server ethernet o lxd. Nel mio caso fornisce due indirizzi perché ho lxd: 192.168.0.78 e 10.0.3.1
Sergiy Kolodyazhnyy

6
Sì. Nel mio caso è più grave 10.0.2.15 172.18.0.1 172.17.0.1 172.20.0.1 172.21.0.1 172.22.0.1 172.19.0.1perché sto eseguendo alcuni container Docker;)
Alex

4
Esegui l'upgrade perché altre soluzioni non funzionano, ad esempio sull'immagine ubuntu della finestra mobile non
elaborata

185

Questo è ciò che attualmente consiglio:

ip route get 8.8.8.8 | awk '{print $NF; exit}'

Il vantaggio di quel comando è che non devi sapere quale interfaccia stai usando (eth0? Eth1? O forse wlan0?), Non devi filtrare gli indirizzi localhost, gli indirizzi Docker, i tunnel VPN ecc. e otterrai sempre l'indirizzo IP attualmente utilizzato per le connessioni Internet in quel preciso momento (importante quando, ad esempio, sei connesso sia con Ethernet sia con WiFi o tramite VPN ecc.).

Questo verificherà non solo che tu abbia un IP corretto configurato su alcune interfacce (come con l'analisi dell'output di ifconfig) ma anche che tu abbia la tabella di routing configurata per usarlo correttamente.

Ho trovato quell'idea in questa risposta di Collin Anderson .

Lo uso nello script internalip nella mia raccolta di script su GitHub , che puoi installare con:

wget https://rawgit.com/rsp/scripts/master/internalip
chmod a+x internalip

e utilizzare come:

internalip

o:

internalip TARGET

e otterrai il tuo indirizzo IP che verrebbe utilizzato per connettersi con l'indirizzo IP TARGET . Il target predefinito è 8.8.8.8quale è il resolver DNS pubblico di Google e un buon default per Internet.

Ma se lo esegui con un IP diverso:

internalip 127.2.3.4

Quindi otterrai:

127.0.0.1

perché quello è il tuo indirizzo IP che verrebbe utilizzato per connettersi con 127.2.3.4 sull'interfaccia di loopback. È utile quando il target è su una LAN, VPN o un'altra rete speciale, nel qual caso è possibile utilizzare un altro IP per le connessioni rispetto all'IP predefinito per raggiungere Internet.

IP esterno

Per controllare il tuo indirizzo IP esterno (quello che i server su Internet vedono quando ti colleghi a loro - che potrebbe essere diverso dall'indirizzo IP interno qui descritto) vedi questa risposta .


1
questa è una risposta fantastica, grazie! mi ha salvato così tanto mal di testa! : D
user65165

Questo è un trucco utile, ma l'OP stava chiedendo un IP interno, quindi non è sicuro supporre che sia instradabile a 8.8.8.8.
MC0e,

@ mc0e Ottimo punto. Ecco perché il mio script accetta un argomento facoltativo per qualche altro IP - 8.8.8.8è solo il valore predefinito. Nella mia risposta ho usato 127.2.3.4come esempio. Puoi usare un po 'di IP sulla tua intranet o anche su una VPN. Il punto è che di solito non hai un indirizzo IP interno ma pochi indirizzi diversi usati per target diversi. In questo modo è possibile trovare quello effettivamente utilizzato per le connessioni a una determinata destinazione.
rsp,

1
Solo così sai, questo dà l'IP esterno su Mac.
OZZIE,

19

Penso che valga la pena ricordare che l'esecuzione di ifconfig con l'opzione -a visualizzerà tutte le interfacce se l'interfaccia ha o meno un IP.

eseguendo ifconfig da solo, verranno visualizzate solo le interfacce con gli IP assegnati.

Ecco un bel trucco che potresti usare per visualizzare solo gli IP usando Perl.

# ifconfig | perl -nle'/dr:(\S+)/ && print $1'
192.168.1.100
127.0.0.1

La tua scheda di rete è riconosciuta dal sistema, ecco perché si presenta eth0 ed eth1

qui è un modo rapido di assegnare IP alla tua interfaccia, utilizzare di conseguenza IP / Sottorete validi.

 ifconfig eth0 192.168.1.200/24 up 

quindi dobbiamo aggiungere una route predefinita

route add default gw 192.168.1.1

Migliore,


1
Vorrei provare questo metodo ma dovrò scomporlo un po 'di più per me per capirlo, come in come trovare o conoscere un IP valido, una sottorete e un percorso predefinito valido.
Cam Jones

si tratta di un'assegnazione IP statica per l'interfaccia di rete, il che significa che se si è dietro un router con sottorete 192.168.1.0/24, è possibile eseguire il ping di un IP ex. 192.168.1.200 e se non si ottiene alcuna risposta, andare in testa e usare ifconfig nome_interfaccia IP_ADDRESS / MASK su Il tuo gw predefinito deve essere aggiunto dopo aver assegnato l'IP.
user1007727

8

Questo comando mostrerà tutti gli indirizzi IP per un singolo dispositivo:

dev=eth0
ip addr show $dev | awk '/inet/ {print $2}' | cut -d/ -f1

Stampa una o due righe di output. Il primo è l'indirizzo inet / IPv4 e l'altro è inet6 / IPv6 se il sistema è configurato per supportare questo.


6

Nel caso in cui il ifconfigcomando non visualizzi l'indirizzo IP, esiste un modo molto semplice e facile per scoprire l'indirizzo IP della macchina Ubuntu attraverso la GUI. Seguire i passaggi seguenti:

Fare clic sull'icona della rete nell'area di notifica e fare clic su Informazioni sulla connessione . Opzioni dell'icona di rete

Questo fa apparire una finestra che contiene alcune informazioni, incluso l'indirizzo IP. Informazioni sull'indirizzo IP


1

Ci sono già molte buone risposte tra cui scegliere, ma ho pensato di sottolineare facter che di solito è, ma non necessariamente usato con le marionette per raccogliere vari fatti sul sistema. Il vantaggio principale di facter è che dà uscita bello e pulito che consente di risparmiare tutta la manipolazione con grep, sed, awk, cut, perl, ecc non sta per dirvi quale interfaccia che ti interessa, ma se si sa che, poi la di seguito ti dà l'IP senza altra cruft da ripulire:

facter ipaddress_eth0 

1

comando ip

Ecco una variazione in ip addrarrivo.

ipha -oun'opzione che consente di mettere tutte le informazioni su una sola riga - questo è utile per l'analisi con strumenti come awko perl. In combinazione con l' -4opzione, vedremo solo gli indirizzi IPv4. Pertanto, l'output sarebbe simile a questo (nota: sostituisci wlan7 con l'interfaccia che vuoi controllare):

$ ip -4 -o addr show wlan7
3: wlan7    inet 192.168.0.78/24 brd 192.168.0.255 scope global dynamic wlan7\       valid_lft 85654sec preferred_lft 85654sec

Come puoi vedere, l'indirizzo IP è 4a colonna / parola nell'output. Il resto, è un semplice esercizio di analisi tramite lo strumento di tua scelta. Qui sto usando Python:

ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 

Stessa cosa, solo con la <<<sostituzione stringa e comando qui$()

python -c "import sys;print sys.stdin.readlines()[0].split()[3]"  <<< $(ip -4 -o addr show wlan7)

Personalmente, l'ho salvato come una bella funzione nel mio ~/.bashrcmodo di scrivere meno.

wlan_ip() {
    ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 
} 

Le versioni di Perl e Ruby sono un po 'più brevi:

$ ip -4 -o addr show  wlan7 | perl -lane 'print $F[3]'                         
192.168.0.78/24

$ ip  -4 -o addr show wlan7 | ruby -n -e 'print $_.split()[3]'                 
192.168.0.78/24

Wireshark

Se hai familiarità con l'uso degli strumenti di analisi della rete, probabilmente sai che per ottenere il tuo indirizzo IP, tutto ciò che devi fare è svuotare la cache del browser, avviare l'acquisizione di Wireshark sull'interfaccia specifica e cercare i GETpacchetti http che vengono trasmessi. La colonna di destinazione mostrerà il tuo indirizzo IP

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.