Comment trouver mon adresse IP interne?


208

Le serveur Ubuntu 12.04 est installé et je n’ai donc pas d’interface graphique. Lorsque je fais la commande ifconfig, je ne trouve pas mon adresse IP interne. Il dit inet addr: 127.0.0.1.

Voici le résultat de 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)

voici le contenu de etc / network / interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Si quelqu'un pouvait éditer ceci pour moi, le contenu de etc / network / interfaces devrait être sur des lignes séparées.

La sortie de l'hôte askubuntu.com était:

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

J'ai mis en place owncloud et webmin il y a quelques mois et je les utilisais depuis un mois sans aucun problème. Je pense que le courant a été coupé un jour il y a deux mois et que je n'ai jamais rallumé le serveur avant hier. Je n'ai rien fait qui aurait affecté la configuration Internet. Je ne sais donc pas pourquoi cela ne fonctionne plus. En ce qui concerne la topologie de mon réseau, j'ai une carte réseau PCI-E pour le PC. La ligne Ethernet passe de la carte réseau à un commutateur, puis à un modem / routeur à partir de là.


1
@AvatarParto Ce sont des interfaces face à l' accès du public, cette question est sur les réseaux internes ...
Bruno Pereira

Par curiosité, qu'est-ce qu'il y /etc/network/interfacesa dedans?
Powerlord

Je sais comment utiliser la commande change directory, mais je ne sais pas comment lister les fichiers une fois là-bas, comment procéderais-je?
Cam Jones

lslistera les fichiers dans un répertoire. ls -ldonnera une liste détaillée. Pour lister le contenu d'un répertoire particulier ls -l /etc/network. Pour changer dans un répertoire et lister le contenu cd /etc/network ;ls -l. Pour lire le contenu de etc/network/interfaces(c'est un fichier) sudo pico /etc/network/interfaces. ( picoest un éditeur de texte léger - bon pour la lecture et l'édition de base, et moins intimidant que vi.)
douggro

Réponses:


205

Ces commandes vous diront toutes les informations du réseau

ip add

ou

ifconfig -a

Si comme vous le dites, il ne vous donne que 127.0.0.1, alors il y a deux options:

  1. Votre carte réseau n'est pas connectée ou n'est pas reconnue par le système

  2. Votre serveur DHCP réseau ne fonctionne pas ou n'est pas connecté


Lorsque je me connecte, il me dit qu'il y a quelques mises à jour ou mises à jour. Je suppose donc qu'il doit parler au site Web officiel d'ubuntu pour savoir s'il contient des mises à jour. Je pense donc que mon Internet fonctionne.
Cam Jones

@Skateguy essayez d'ouvrir askubuntu.com et imprimez tous les
fichiers

Je n'ai pas d'interface graphique, mais je suis sur le point de le taper.
Cam Jones

1
Comment puis-je répondre aux questions que vos deux options posent?
Cam Jones

1
Je suggérerais l' ipoption en premier , puis le ( obsolète ) ifconfigaprès.
Campa

213
hostname -I

Cela vous donnera juste l'adresse IP sans aucune information supplémentaire.


16
C'est parfait. Tant de réponses trop compliquées (mais pas mauvaises)… celle-ci est tout simplement simple.
user1003916

3
Réponse parfaite .. :)
john400

2
Selon la page de manuel: `-I, --all-ip-adresses Affiche toutes les adresses réseau de l'hôte. Cette option énumère toutes les adresses configurées sur toutes les interfaces réseau. L’interface de bouclage et les adresses IPv6 de liaison locale sont omises. Ainsi, vous obtiendrez l’adresse IP du réseau auquel vous êtes connecté, mais également l’IP de votre machine si vous l’utilisez en tant que serveur Ethernet ou Lxd. Dans mon cas, cela donne deux adresses car j'ai lxd: 192.168.0.78 et 10.0.3.1
Sergiy Kolodyazhnyy

6
Oui. Dans mon cas, c'est plus 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.1parce que j'utilise des conteneurs Docker;)
Alex

4
Vote positif parce que les autres solutions ne fonctionnent pas, par exemple, sur le docker brut ubuntu image
noonex le

185

Voici ce que je recommande actuellement:

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

L'avantage de cette commande est que vous n'avez pas besoin de savoir quelle interface vous utilisez (eth0? Eth1? Ou peut-être wlan0?), Vous n'avez pas à filtrer les adresses des hôtes locaux, les adresses Docker, les tunnels VPN, etc. et vous obtiendrez toujours l'adresse IP actuellement utilisée pour les connexions Internet à ce moment précis (important lorsque vous êtes connecté avec Ethernet et Wi-Fi ou via un réseau privé virtuel, etc.).

Cela testera non seulement que vous avez une adresse IP correcte configurée sur certaines interfaces (comme lors de l'analyse de la sortie de ifconfig), mais également que la table de routage est configurée pour l'utiliser correctement.

J'ai trouvé cette idée dans cette réponse de Collin Anderson .

Je l'utilise dans le script internalip de ma collection de scripts sur GitHub , que vous pouvez installer avec:

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

et utiliser comme:

internalip

ou:

internalip TARGET

et vous obtiendrez votre adresse IP qui serait utilisée pour vous connecter avec l’adresse IP de CIBLE . La cible par défaut 8.8.8.8est le résolveur DNS public de Google et un bon choix pour Internet.

Mais si vous le lancez avec une adresse IP différente:

internalip 127.2.3.4

Ensuite, vous obtiendrez:

127.0.0.1

car c’est votre adresse IP qui serait utilisée pour vous connecter à 127.2.3.4 sur l’interface de bouclage. Cela est utile lorsque votre cible se trouve sur un réseau local, un réseau privé virtuel (VPN) ou un autre réseau spécial. Dans ce cas, une autre adresse IP pourrait être utilisée pour les connexions autres que celle par défaut pour accéder à Internet.

IP externe

Pour vérifier votre adresse IP externe (celle que les serveurs sur Internet voient lorsque vous vous connectez à eux - ce qui peut être différent de l'adresse IP interne décrite ici), voir cette réponse .


1
C'est une réponse géniale, merci! m'a sauvé tellement mal à la tête! : D
user65165

C'est une astuce utile, mais l'OP posant des questions sur une adresse IP interne, il est donc prudent de supposer qu'elle est routable vers 8.8.8.8.
mc0e

@ mc0e Bon point. C'est pourquoi mon script prend un argument optionnel pour une autre adresse IP - 8.8.8.8c'est juste la valeur par défaut. Dans ma réponse, j'ai utilisé 127.2.3.4comme exemple. Vous pouvez également utiliser une adresse IP sur votre intranet ou sur un VPN. Le fait est que vous n'avez généralement pas une seule adresse IP interne, mais quelques adresses différentes utilisées pour différentes cibles. De cette façon, vous pouvez trouver celui qui est réellement utilisé pour les connexions à une cible donnée.
RSP

1
Juste pour que vous sachiez, cela donne l'IP externe sur Mac.
OZZIE

19

Je pense qu'il vaut la peine de mentionner qu'exécuter ifconfig avec l'option -a affichera toutes les interfaces, que l'interface ait ou non une adresse IP.

si ifconfig est exécuté seul, seules les interfaces avec les adresses IP attribuées seront affichées.

Voici une astuce intéressante que vous pouvez utiliser pour afficher uniquement les adresses IP utilisant Perl.

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

Votre carte réseau est reconnue par le système, c’est pourquoi elle affiche eth0 et eth1.

Il existe un moyen rapide d’attribuer une adresse IP à votre interface. Utilisez donc une adresse IP / sous-réseau valide.

 ifconfig eth0 192.168.1.200/24 up 

alors nous devons ajouter une route par défaut

route add default gw 192.168.1.1

Meilleur,


1
Je voudrais essayer cette méthode, mais vous devrez la décomposer un peu plus pour que je la comprenne, comme dans comment trouver ou connaître une adresse IP valide, un sous-réseau et une route par défaut valide.
Cam Jones

Il s'agit d'une affectation IP statique pour votre interface réseau, ce qui signifie que si vous êtes derrière un routeur avec un sous-réseau de 192.168.1.0/24, vous pouvez alors envoyer une requête ping à un ip ex. 192.168.1.200 et si vous n'obtenez pas de réponse, lancez une tête et utilisez ifconfig nom_interface IP_ADDRESS / MASK up Votre gw par défaut doit être ajouté après l'attribution de l'adresse IP.
user1007727

8

Cette commande affichera toutes les adresses IP d'un seul périphérique:

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

Il imprimera une ou deux lignes de sortie. Le premier est l'adresse inet / IPv4 et le second est inet6 / IPv6 si votre système est configuré pour le prendre en charge.


6

Si la ifconfigcommande n'affiche pas l'adresse IP, il existe un moyen très simple et facile de connaître l'adresse IP de la machine Ubuntu via l'interface graphique. Suivez les étapes ci-dessous:

Cliquez sur l' icône de réseau dans la zone de notification, puis sur Informations sur la connexion . Options de l'icône réseau

Cela ouvre une fenêtre qui contient quelques informations, y compris l'adresse IP. Informations d'adresse IP


1

Il y a déjà beaucoup de bonnes réponses parmi lesquelles choisir, mais j'ai pensé signaler un facteur qui est généralement utilisé, mais pas nécessairement utilisé avec un pantin pour collecter divers faits sur le système. Le principal avantage de facter est qu'il donne belle sortie propre qui vous évite toutes les manipulations avec grep, sed, awk, cut, perl, etc. Il ne va pas vous dire quelle interface vous intéresse, mais si vous savez que, le vous donne l'adresse IP sans autre élément à nettoyer:

facter ipaddress_eth0 

1

commande ip

Voici une variation sur le ip addrchemin.

ipa une -ooption qui permet de mettre toutes les informations sur une seule ligne - c'est utile pour analyser avec des outils comme awkou perl. En combinaison avec l' -4option, nous ne verrons que les adresses IPv4. Ainsi, la sortie ressemblerait à ceci (note - remplacez wlan7 par l'interface que vous voulez vérifier):

$ 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

Comme vous pouvez le constater, l’adresse IP est la 4ème colonne / mot de la sortie. Le reste, c’est un exercice d’analyse simple via l’outil de votre choix. Ici, j'utilise python:

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

Même chose, seulement ici avec <<<substitution de chaîne et de commande$()

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

Personnellement, cela est enregistré comme une fonction intéressante dans mon travail de ~/.bashrcfrappe.

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

Les versions de Perl et Ruby sont un peu plus courtes:

$ 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

Si vous connaissez les outils d'analyse de réseau, sachez probablement que pour obtenir votre adresse IP, il vous suffit d'effacer le cache du navigateur, de lancer la capture de Wireshark sur l'interface spécifique et de rechercher les GETpaquets http transmis. La colonne de destination affichera votre adresse IP

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.