Wie finde ich meine interne IP-Adresse?

208

Ich habe Ubuntu Server 12.04 installiert, daher habe ich keine GUI. Wenn ich den Befehl ifconfig ausführe, kann ich meine interne IP-Adresse nicht finden. Es heißt inet addr: 127.0.0.1.

Hier ist die Ausgabe von 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)

Hier sind die Inhalte von etc / network / interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Wenn jemand dies für mich bearbeiten könnte, sollte der Inhalt von etc / network / interfaces in separaten Zeilen stehen.

Die Ausgabe von Host askubuntu.com war:

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

Ich habe vor ein paar Monaten owncloud und webmin eingerichtet und habe sie einen Monat lang ohne Probleme verwendet. Ich glaube, der Strom ist vor 2 Monaten eines Tages ausgefallen und ich habe den Server erst gestern wieder eingeschaltet. Ich habe nichts getan, was sich auf das Internet-Setup ausgewirkt hätte. Ich bin mir also nicht sicher, warum es nicht mehr funktioniert. Was meine Netzwerktopologie angeht, habe ich eine PCI-E-Netzwerkkarte für den PC. Die Ethernet-Leitung geht von der Netzwerkkarte zu einem Switch und von dort zu einem Modem / Router.

Cam Jones
quelle
1
@ AvatarParto Diese sind für Schnittstellen mit Blick auf den öffentlichen Zugang, diese Frage handelt von internen Netzwerken ...
Bruno Pereira
Was steckt aus Neugier /etc/network/interfacesdarin?
Powerlord
Ich weiß, wie ich den Befehl change directory verwende, aber ich weiß nicht, wie ich die Dateien dort auflisten soll. Wie soll ich das tun?
Cam Jones
lslistet Dateien in einem Verzeichnis auf. ls -lwird eine detaillierte Auflistung geben. Zur Liste Inhalt eines bestimmten Verzeichnisses, ls -l /etc/network. In ein Verzeichnis wechseln und Inhalte auflisten cd /etc/network ;ls -l. Zum Lesen des Inhalts von etc/network/interfaces(das ist eine Datei) sudo pico /etc/network/interfaces. ( picoist ein leichter Texteditor - gut zum Lesen und Bearbeiten und weniger einschüchternd als vi.)
Douggro

Antworten:

205

Diese Befehle informieren Sie über alle Netzwerkinformationen

ip add

oder

ifconfig -a

Wenn Sie, wie Sie sagen, nur 127.0.0.1 haben, gibt es zwei Möglichkeiten:

  1. Ihre Netzwerkkarte ist nicht angeschlossen oder wird vom System nicht erkannt

  2. Ihr Netzwerk-DHCP-Server läuft nicht oder ist nicht verbunden

kamil
quelle
Wenn ich mich anmelde, wird mir mitgeteilt, dass es ein paar Upgrades oder Updates gibt. Daher gehe ich davon aus, dass ich mit der offiziellen Ubuntu-Website sprechen muss, um zu wissen, dass es Updates gibt. Ich denke, mein Internet funktioniert.
Cam Jones
@ Skateguy versuchen, askubuntu.com zu öffnen und drucken Sie bitte alle ifconfig -a
kamil
Ich habe keine GUI, ich bin im Begriff, es aber zu tippen.
Cam Jones
1
Wie kann ich die Fragen Ihrer beiden Optionen beantworten?
Cam Jones
1
Ich würde die vorschlagen ipOption zuerst , dann die ( veraltet ) ifconfigdanach.
Campa
212
hostname -I

Dadurch erhalten Sie nur die IP-Adresse ohne zusätzliche Informationen.

Sarath Somana
quelle
16
Das ist perfekt. So viele überkomplizierte (aber nicht schlechte) Antworten ... diese ist einfach unglaublich einfach.
user1003916
3
Perfekte Antwort .. :)
john400
2
Laut Manpage: `-I, --all-IP-Adressen Zeigt alle Netzwerkadressen des Hosts an. Diese Option listet alle konfigurierten Adressen auf allen Netzwerkschnittstellen auf. Die Loopback-Schnittstelle und die IPv6-Link-Local-Adressen werden weggelassen. Dadurch erhalten Sie die IP-Adresse des Netzwerks, mit dem Sie verbunden sind, aber auch die IP-Adresse Ihres Computers, wenn Sie ihn als Ethernet- oder LXD-Server verwenden. In meinem Fall gibt es zwei Adressen, weil ich lxd habe: 192.168.0.78 und 10.0.3.1
Sergiy Kolodyazhnyy
6
Ja. In meinem Fall ist es schlimmer, 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.1weil ich einige Docker-Container betreibe;)
Alex
4
Upvote, weil andere Lösungen nicht funktionieren, z. B. auf Raw Docker Ubuntu Image
Noonex
185

Folgendes empfehle ich derzeit:

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

Der Vorteil dieses Befehls ist, dass Sie nicht wissen müssen, welche Schnittstelle Sie verwenden (eth0? Eth1? Oder vielleicht wlan0?), Sie müssen keine localhost-Adressen oder Docker-Adressen oder VPN-Tunnel usw. herausfiltern. und Sie erhalten immer die IP-Adresse, die aktuell für Internetverbindungen verwendet wird (wichtig, wenn Sie z. B. sowohl mit Ethernet als auch mit WLAN oder über VPN usw. verbunden sind).

Dadurch wird nicht nur geprüft, ob auf einer Schnittstelle eine korrekte IP-Adresse konfiguriert ist (z. B. beim Parsen der Ausgabe von ifconfig), sondern auch, ob die Routingtabelle für die korrekte Verwendung konfiguriert ist.

Diese Idee habe ich in dieser Antwort von Collin Anderson gefunden .

Ich verwende es im internalip- Skript in meiner Skriptsammlung auf GitHub , mit dem Sie Folgendes installieren können:

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

und verwenden als:

internalip

oder:

internalip TARGET

und Sie erhalten Ihre IP-Adresse, die für die Verbindung mit der TARGET-IP-Adresse verwendet wird . Das Standardziel ist 8.8.8.8der öffentliche DNS-Resolver von Google und ein guter Standard für das Internet.

Aber wenn Sie es mit einer anderen IP ausführen:

internalip 127.2.3.4

Dann erhalten Sie:

127.0.0.1

denn das ist deine IP-Adresse, die für die Verbindung mit 127.2.3.4 auf der Loopback-Schnittstelle verwendet wird. Dies ist nützlich, wenn sich Ihr Ziel in einem LAN, VPN oder einem anderen speziellen Netzwerk befindet. In diesem Fall kann eine andere IP für Verbindungen als die Standard-IP zum Erreichen des Internets verwendet werden.

Externe IP

Informationen zum Überprüfen Ihrer externen IP-Adresse (die den Servern im Internet angezeigt wird, wenn Sie eine Verbindung zu ihnen herstellen - die sich möglicherweise von der hier beschriebenen internen IP-Adresse unterscheidet) finden Sie in dieser Antwort .

rsp
quelle
1
Das ist eine großartige Antwort, danke! hat mir so viel Kopfweh erspart! : D
user65165
Dies ist ein nützlicher Trick, aber das OP hat nach einer internen IP gefragt, daher ist es möglicherweise nicht sicher anzunehmen, dass es auf 8.8.8.8 routbar ist.
mc0e
@ mc0e Guter Punkt. Aus diesem Grund verwendet mein Skript ein optionales Argument für eine andere IP-Adresse - dies 8.8.8.8ist nur die Standardeinstellung. In meiner Antwort habe ich 127.2.3.4als Beispiel genommen. Sie können auch eine IP-Adresse in Ihrem Intranet oder in einem VPN verwenden. Der Punkt ist , dass Sie in der Regel nicht über eine interne IP - Adresse , aber nur wenige verschiedene Adressen für verschiedene Ziele verwendet. Auf diese Weise können Sie diejenige finden, die tatsächlich für Verbindungen zu einem bestimmten Ziel verwendet wird.
rsp
1
Nur damit Sie wissen, gibt dies die externe IP auf dem Mac.
OZZIE
19

Ich denke, es ist erwähnenswert, dass das Ausführen von ifconfig zusammen mit der Option -a alle Schnittstellen anzeigt, ob die Schnittstelle eine IP hat oder nicht.

Wenn Sie ifconfig allein ausführen, werden nur Schnittstellen mit zugewiesenen IP-Adressen angezeigt.

Hier ist ein guter Trick, mit dem Sie nur IPs mit Perl anzeigen können.

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

Ihre Netzwerkkarte wird vom System erkannt, daher werden eth0 und eth1 angezeigt

Hier finden Sie eine schnelle Möglichkeit, Ihrer Schnittstelle eine IP-Adresse zuzuweisen. Verwenden Sie entsprechend eine gültige IP / ein gültiges Subnetz.

 ifconfig eth0 192.168.1.200/24 up 

dann müssen wir eine Standardroute hinzufügen

route add default gw 192.168.1.1

Beste,

user1007727
quelle
1
Ich würde diese Methode ausprobieren, aber Sie müssen sie etwas weiter aufschlüsseln, damit ich sie verstehe, wie man eine gültige IP, ein gültiges Subnetz und eine gültige Standardroute findet oder kennt.
Cam Jones
Dies ist eine statische IP-Zuweisung für Ihre Netzwerkschnittstelle. Wenn Sie sich hinter einem Router mit einem Subnetz von 192.168.1.0/24 befinden, können Sie eine IP-Ex anpingen. 192.168.1.200 und wenn Sie keine Antwort erhalten, gehen Sie einen Kopf und verwenden Sie ifconfig interface_name IP_ADDRESS / MASK up Ihr ​​Standard-GW muss nach der Zuweisung der IP hinzugefügt werden.
user1007727
8

Dieser Befehl zeigt alle IP-Adressen für ein einzelnes Gerät an:

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

Es werden ein oder zwei Ausgabezeilen gedruckt. Die erste ist die inet / IPv4-Adresse und die andere ist inet6 / IPv6, wenn Ihr System so konfiguriert ist, dass dies unterstützt wird.

Aaron Digulla
quelle
6

Falls der ifconfigBefehl die IP-Adresse nicht anzeigt, gibt es eine sehr einfache Möglichkeit, die IP-Adresse des Ubuntu-Rechners über die GUI herauszufinden. Folgen Sie den unteren Schritten:

Klicken Sie im Infobereich auf das Netzwerksymbol und dann auf Verbindungsinformationen . Optionen für Netzwerksymbole

Dies öffnet ein Fenster, das einige Informationen enthält, einschließlich der IP-Adresse. IP-Adressinformationen

Ibungo
quelle
1

Es gibt hier bereits viele gute Antworten zur Auswahl, aber ich dachte, ich würde auf die Faktoren hinweisen, die normalerweise, aber nicht unbedingt mit Puppet verwendet werden, um verschiedene Fakten über das System zu sammeln. Der Hauptvorteil von facter ist , dass es schön sauber Ausgang gibt , die Sie die ganze Manipulation spart mit grep, sed, awk, cut, perl, etc. Es ist nicht , dass Sie gehen zu sagen , welche Schnittstelle Sie interessiert sind, aber wenn Sie wissen , dass, dann ist die Folgendes gibt dir die IP ohne andere cruft zum bereinigen:

facter ipaddress_eth0 
mc0e
quelle
1

Befehl ip

Hier ist eine Variation auf dem ip addrWeg.

ipEs gibt eine -oOption, mit der alle Informationen in einer einzigen Zeile abgelegt werden können. Dies ist nützlich, um mit Tools wie awkoder zu analysieren perl. In Kombination mit der -4Option werden nur IPv4-Adressen angezeigt. Die Ausgabe würde also ungefähr so ​​aussehen (Anmerkung: Ersetzen Sie wlan7 durch die zu überprüfende Schnittstelle):

$ 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

Wie Sie sehen, ist die IP-Adresse die vierte Spalte / das vierte Wort in der Ausgabe. Der Rest ist eine einfache Analyseübung mit dem Werkzeug Ihrer Wahl. Hier verwende ich Python:

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

Das Gleiche gilt nur für die <<<Ersetzung von Zeichenfolgen und Befehlen$()

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

Persönlich habe ich dies als nette Funktion gespeichert, in der ~/.bashrcso weniger getippt wird.

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

Perls und Rubys Version sind etwas kürzer:

$ 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

Wenn Sie mit der Verwendung von Netzwerkanalysetools vertraut sind, wissen Sie wahrscheinlich, dass Sie zum Abrufen Ihrer IP-Adresse nur den Browser-Cache leeren, Wireshark Capture auf der spezifischen Schnittstelle starten und nach zu übertragenden http- GETPaketen suchen müssen . In der Zielspalte wird Ihre IP-Adresse angezeigt

Sergiy Kolodyazhnyy
quelle