Domanda Come trovo il mio indirizzo IP interno?


Ho installato Ubuntu server 12.04, quindi non ho GUI. Quando eseguo il comando ifconfig, non riesco a trovare il mio indirizzo IP interno. Dice in-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 di host askubuntu.com era:

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

Ho creato owncloud e webmin alcuni mesi fa e li stavo usando per un mese senza problemi. Penso che il potere sia esploso un giorno 2 mesi fa e non ho mai acceso il server fino a ieri. Non ho fatto nulla che avrebbe influenzato la configurazione di Internet Quindi non sono sicuro del motivo per cui non funziona 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ì.


159
2018-03-07 13:20


origine


@AvatarParto Questi sono per le interfacce che affrontano l'accesso pubblico, questa domanda riguarda le reti interne ... - Bruno Pereira
Per curiosità, cosa fa /etc/network/interfaces ci sono dentro? - Powerlord
So come usare il comando change directory, ma non so come elencare i file una volta lì, come farei questo? - Cam Jones
ls elencherà i file in una directory. ls -l darà un elenco dettagliato. Per elencare i contenuti di una particolare directory, ls -l /etc/network. Per cambiare in una directory e elencare i contenuti cd /etc/network ;ls -l. Leggere il contenuto di etc/network/interfaces (questo è un file) sudo pico /etc/network/interfaces. (pico è un editor di testo leggero, ottimo per la lettura e l'editing di base e meno intimidatorio di vi.) - douggro


risposte:


Questi comandi ti diranno tutte le informazioni di rete

ifconfig -a

o

ip addr show

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

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

  2. Il tuo server DHCP di rete non è runnning o non connesso


159
2018-03-07 13:32



quando effettuo il login mi dice che ci sono alcuni aggiornamenti o aggiornamenti, quindi presumo che debba parlare con il sito ufficiale di Ubuntu per sapere che ha aggiornamenti, quindi penso che il mio internet stia funzionando. - Cam Jones
@Skateguy prova ad aprire askubuntu.com e ti preghiamo di stampare ifconfig -a - kamil
Non ho una GUI, sto per scriverlo però. - Cam Jones
Come posso rispondere alle domande poste dalle tue due opzioni? - Cam Jones
@Skateguy In primo luogo sembra che non si dispone di un server DHCP e sarà necessario impostare l'ip manualmente. puoi dirci la tua topologia di rete, come sei connesso a Internet. e per favore pubblica l'output del seguente comando nel tuo terminale: host askubuntu.com - kamil


Questo è quello che attualmente raccomando:

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

Il vantaggio di questo comando è che non devi sapere quale interfaccia stai usando (eth0? Eth1? O forse wlan0?), Non devi filtrare gli indirizzi localhost, o gli indirizzi Docker, né 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 che con Wi-Fi o tramite VPN ecc.).

Ciò testerà non solo l'IP corretto configurato su alcune interfacce (come con l'analisi dell'output di ifconfig) ma anche che hai la tabella di routing configurata per usarla correttamente.

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

Lo uso nel internalip script in la mia collezione di script su GitHub, che puoi installare con:

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

e usare come:

internalip

o:

internalip TARGET

e riceverai il tuo indirizzo IP che verrebbe utilizzato per connettersi con l'indirizzo IP TARGET. L'obiettivo predefinito è 8.8.8.8 qual è Resolver DNS pubblico di Google e un buon valore predefinito per Internet.

Ma se lo esegui con un IP diverso:

internalip 127.2.3.4

Quindi otterrai:

127.0.0.1

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

IP esterno

Per controllare il tuo esterno Vedere l'indirizzo IP (quello che i server su Internet vedono quando ci si connette a loro - che potrebbe essere diverso dall'indirizzo IP interno qui descritto) questa risposta.


166
2018-04-03 02:49



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 importa non pensare che sia instradabile a 8.8.8.8. - mc0e
@ mc0e Buon punto. Ecco perchè la mia sceneggiatura accetta un argomento opzionale per qualche altro IP - 8.8.8.8 è solo l'impostazione predefinita Nella mia risposta ho usato 127.2.3.4 come esempio. Puoi usare un po 'di IP sulla tua intranet o su una VPN. Il punto è che di solito non lo hai uno indirizzo IP interno ma pochi indirizzi diversi utilizzati per target diversi. In questo modo puoi trovare quello che viene effettivamente utilizzato per le connessioni a un determinato target. - rsp
Solo così sai, questo dà l'IP esterno su Mac. - OZZIE


hostname -I

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


134
2017-08-25 06:29



È perfetto. Così tante risposte eccessivamente complicate (ma non male) .. questo è semplicemente semplice. - user1003916
Risposta perfetta .. :) - john400
In base alla pagina man: `-I, --all-ip-addresses Visualizza tutti gli indirizzi di rete dell'host. Questa opzione enumera tutti gli indirizzi configurati su tutte le interfacce di rete. L'interfaccia di loopback e gli indirizzi locali di collegamento 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 dà due indirizzi perché ho lxd: 192.168.0.78 e 10.0.3.1 - Sergiy Kolodyazhnyy
Sì. Nel mio caso è più cattivo 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.1 perché sto facendo funzionare alcuni contenitori Docker;) - Alex
Proroga perché altre soluzioni non funzionano, ad es. su immagine ubuntu docker raw - noonex


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

se si esegue ifconfig da solo, verranno visualizzate solo le interfacce con gli IP assegnati.

Ecco un bel trucco che potresti usare per mostrare 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, questo perché mostra eth0 ed eth1

ecco un modo rapido per assegnare l'IP alla tua interfaccia, utilizzare di conseguenza un IP / subnet valido.

 ifconfig eth0 192.168.1.200/24 up 

quindi dobbiamo aggiungere una rotta predefinita

route add default gw 192.168.1.1

Migliore,


18
2018-03-07 21:17



Proverò questo metodo, ma dovrai leggerlo un po 'di più per capirlo, come trovare o conoscere un IP valido, una subnet e una rotta predefinita valida. - Cam Jones
si tratta di un'assegnazione IP statica per la tua interfaccia di rete, nel senso che se sei dietro un router con subnet di 192.168.1.0/24 allora puoi eseguire il ping di un ip ex. 192.168.1.200 e se non si ottiene risposta, fare un test e utilizzare ifconfig nome_interfaccia IP_ADDRESS / MASK su È necessario aggiungere il valore predefinito gw dopo l'assegnazione dell'IP. - user1007727


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 tuo sistema è configurato per supportare questo.


8
2017-10-24 14:14





Nel caso, il ifconfig comando non ha mostrato l'indirizzo IP, c'è un modo molto semplice e facile per scoprire l'indirizzo IP della macchina Ubuntu attraverso la GUI. Segui i passaggi seguenti:

Clicca il icona di rete nell'area di notifica e fare clic Informazioni di connessione. Network icon options

Questo fa apparire una finestra che ha alcune informazioni, incluso l'indirizzo IP. IP address information


5
2017-09-24 13:09





Ci sono molte buone risposte qui tra cui scegliere, ma ho pensato di far notare facter che di solito è, ma non necessariamente usato con burattino per raccogliere vari fatti sul sistema. Il vantaggio principale di facter è che offre un output pulito che ti fa risparmiare tutta la manipolazione grep, sed, awk, cut, perl, ecc. Non ti dirà a quale interfaccia sei interessato, ma se lo sai, allora il seguente ti dà l'IP senza altri cruft da ripulire:

facter ipaddress_eth0 

1
2017-11-28 15:11





comando ip

Ecco una variazione su ip addr modo.

ip ha -o opzione che consente di mettere tutte le informazioni su una sola riga - questo è utile per l'analisi con strumenti come awk o perl. In combinazione con -4 opzione, vedremo solo gli indirizzi IPv4. Quindi, l'output sarebbe simile a questo (nota: sostituire wlan7 con l'interfaccia che si desidera 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 è 4 ° colonna / parola nell'output. Il resto è semplice esercizio di parsing 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 stringa qui <<< e comando di sostituzione $()

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 ~/.bashrc quindi meno digitazioni sono fatte.

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

La versione di Perl e Ruby è un po 'più breve:

$ 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 gli strumenti di analisi della rete, probabilmente sai che per ottenere il tuo indirizzo IP, tutto ciò che devi fare è cancellare la cache del browser, avviare l'acquisizione di Wireshark sull'interfaccia specifica e cercare http GET pacchetti trasmessi. La colonna di destinazione mostrerà il tuo indirizzo IP


1
2017-09-04 18:32