¿Cómo encuentro mi dirección IP interna?

208

Tengo instalado el servidor Ubuntu 12.04, así que no tengo GUI. Cuando hago el comando ifconfig, no puedo encontrar mi dirección IP interna. Dice inet addr: 127.0.0.1.

Aquí está la salida 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)

Aquí están los contenidos 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 alguien pudiera editar esto por mí, el contenido de etc / network / interfaces debería estar en líneas separadas.

La salida del host askubuntu.com fue:

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

Configuré owncloud y webmin hace unos meses y los estuve usando durante un mes sin problemas. Creo que la luz se cortó un día hace 2 meses y nunca volví a encender el servidor hasta ayer. No he hecho nada que hubiera afectado la configuración de Internet. Así que no estoy seguro de por qué ya no funciona. En lo que respecta a mi topología de red, tengo una tarjeta de red pci-e para la PC. La línea de ethernet va de la tarjeta de red a un conmutador y luego a un módem / enrutador desde allí.

Cam Jones
fuente
1
@AvatarParto Esas son para interfaces que enfrentan acceso público, esta pregunta es sobre redes internas ...
Bruno Pereira
Por curiosidad, ¿qué contiene /etc/network/interfaces?
Powerlord
Sé cómo usar el comando cambiar directorio, pero no sé cómo enumerar los archivos una vez allí, ¿cómo haría esto?
Cam Jones
lsenumerará los archivos en un directorio. ls -lle dará una lista detallada. Para mostrar el contenido de un directorio en particular, ls -l /etc/network. Para cambiar a un directorio y enumerar contenidos cd /etc/network ;ls -l. Para leer el contenido de etc/network/interfaces(este es un archivo) sudo pico /etc/network/interfaces. ( picoes un editor de texto ligero, bueno para lectura y edición básica, y menos intimidante que vi.)
douggro

Respuestas:

205

Estos comandos te dirán toda la información de la red

ip add

o

ifconfig -a

Si, como usted dice, solo le da 127.0.0.1, entonces hay dos opciones:

  1. Su tarjeta de red no está conectada o no es reconocida por el sistema

  2. Su servidor DHCP de red no está funcionando o no está conectado

kamil
fuente
cuando inicio sesión me dice que hay algunas actualizaciones o actualizaciones, así que supongo que tiene que hablar con el sitio web oficial de ubuntu para saber que tiene actualizaciones, así que creo que mi Internet está funcionando.
Cam Jones
@Skateguy intente abrir askubuntu.com e imprima todos los ifconfig -a
kamil
No tengo GUI, estoy a punto de escribirlo.
Cam Jones
1
¿Cómo puedo responder las preguntas que plantean sus dos opciones?
Cam Jones
1
Sugeriría la ipopción primero , luego la (en desuso ) ifconfigdespués.
Campa
215
hostname -I

Esto le dará una dirección IP sin ninguna información adicional.

Sarath Somana
fuente
16
Eso es perfecto. Tantas respuestas demasiado complicadas (pero no malas) ... esta es simplemente simple.
user1003916
3
Respuesta perfecta .. :)
john400
2
Según la página de manual: `-I, --all-ip-Address Muestra todas las direcciones de red del host. Esta opción enumera todas las direcciones configuradas en todas las interfaces de red. La interfaz de bucle invertido y las direcciones locales de enlace IPv6 se omiten. Por lo tanto, esto le dará la dirección IP en la red a la que está conectado, pero también la IP de su máquina si la está utilizando como servidor ethernet o lxd. En mi caso, da dos direcciones porque tengo lxd: 192.168.0.78 y 10.0.3.1
Sergiy Kolodyazhnyy
66
Sí. En mi caso, es peor 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.1porque estoy ejecutando algunos contenedores Docker;)
Alex
44
Vota porque otras soluciones no funcionan, por ejemplo, en la imagen de Ubuntu
Docker sin procesar
185

Esto es lo que actualmente recomiendo:

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

La ventaja de ese comando es que no tiene que saber qué interfaz está utilizando (eth0? Eth1? O quizás wlan0?), No tiene que filtrar las direcciones de host local, o las direcciones de Docker, o los túneles VPN, etc. y siempre obtendrá la dirección IP que se usa actualmente para las conexiones a Internet en ese mismo momento (importante cuando, por ejemplo, está conectado con Ethernet y wifi o mediante VPN, etc.).

Esto probará no solo que tiene una IP correcta configurada en alguna interfaz (como al analizar la salida de ifconfig) sino también que tiene la tabla de enrutamiento configurada para usarla correctamente.

Encontré esa idea en esta respuesta de Collin Anderson .

Lo uso en el script internalip en mi colección de scripts en GitHub , que puedes instalar con:

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

y usar como:

internalip

o:

internalip TARGET

y obtendrá su dirección IP que se usaría para conectarse con la dirección IP OBJETIVO . El objetivo predeterminado es 8.8.8.8cuál es el solucionador de DNS público de Google y un buen valor predeterminado para Internet.

Pero si lo ejecutas con una IP diferente:

internalip 127.2.3.4

Entonces obtendrás:

127.0.0.1

porque esa es su dirección IP que se usaría para conectarse con 127.2.3.4 en la interfaz de bucle invertido. Es útil cuando su objetivo está en una LAN, VPN u otra red especial, en cuyo caso se podría usar otra IP para las conexiones que la IP predeterminada para llegar a Internet.

IP externa

Para verificar su dirección IP externa (la que ven los servidores en Internet cuando se conecta a ellos, que puede ser diferente a la dirección IP interna que se describe aquí) vea esta respuesta .

rsp
fuente
1
Esta es una respuesta increíble, ¡gracias! me salvó tanto dolor de cabeza! : D
user65165
Este es un truco útil, pero el OP estaba preguntando acerca de una IP interna, así que no puedo estar seguro de asumir que es enrutable a 8.8.8.8.
mc0e
@ mc0e Buen punto. Es por eso que mi script toma un argumento opcional para otra IP, 8.8.8.8es solo el predeterminado. En mi respuesta lo usé 127.2.3.4como ejemplo. También puede usar alguna IP en su intranet o en una VPN. El punto es que generalmente no tiene una dirección IP interna, pero se usan pocas direcciones diferentes para diferentes objetivos. De esta manera, puede encontrar el que realmente se utiliza para las conexiones a un objetivo determinado.
rsp
1
Para que lo sepas, esto proporciona la IP externa en Mac.
OZZIE
19

Creo que vale la pena mencionar que ejecutar ifconfig junto con la opción -a mostrará todas las interfaces, ya sea que la interfaz tenga o no una IP.

ejecutando ifconfig solo, mostrará solo las interfaces con IP asignadas.

Aquí hay un buen truco que podría usar para mostrar solo las IP que usan Perl.

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

Su tarjeta de red es reconocida por el sistema, por eso está mostrando eth0 y eth1

Aquí hay una forma rápida de asignar IP a su interfaz, use IP / subred válida en consecuencia.

 ifconfig eth0 192.168.1.200/24 up 

entonces necesitamos agregar una ruta predeterminada

route add default gw 192.168.1.1

Mejor,

user1007727
fuente
1
Probaría este método, pero tendrá que desglosarlo un poco más para que pueda entenderlo, como la forma de encontrar o conocer una IP válida, una subred y una ruta predeterminada válida.
Cam Jones
esta es una asignación de IP estática para su interfaz de red, lo que significa que si está detrás de un enrutador con subred de 192.168.1.0/24, puede hacer ping a una ip ex. 192.168.1.200 y si no obtiene respuesta, diríjase y use ifconfig interface_name IP_ADDRESS / MASK up Su gw predeterminado debe agregarse después de asignar IP.
user1007727
8

Este comando mostrará todas las direcciones IP para un solo dispositivo:

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

Imprimirá una o dos líneas de salida. La primera es la dirección inet / IPv4 y la otra es inet6 / IPv6 si su sistema está configurado para admitir esto.

Aaron Digulla
fuente
6

En caso de que el ifconfigcomando no muestre la dirección IP, hay una manera muy simple y fácil de encontrar la dirección IP de la máquina Ubuntu a través de la GUI. Siga los pasos a continuación:

Haga clic en el icono de red en el área de notificación y haga clic en Información de conexión . Opciones de icono de red

Esto abre una ventana que tiene cierta información, incluida la dirección IP. Información de la dirección IP

Ibungo
fuente
1

Ya hay muchas buenas respuestas para elegir, pero pensé en señalar un factor que generalmente se usa, pero no necesariamente, con títeres para recopilar varios datos sobre el sistema. La principal ventaja de facter es que da buena salida limpia, lo cual le ahorra toda la manipulación con grep, sed, awk, cut, perl, etc no va a decirle cuál es la interfaz que le interesa, pero si se sabe que, a continuación, el lo siguiente le da la IP sin otro tipo de limpieza para limpiar:

facter ipaddress_eth0 
mc0e
fuente
1

comando ip

Aquí hay una variación en el ip addrcamino.

iptiene una -oopción que permite poner toda la información en una sola línea; esto es útil para analizar con herramientas como awko perl. En combinación con la -4opción, solo veremos las direcciones IPv4. Por lo tanto, la salida sería algo como esto (nota: reemplace wlan7 con la interfaz que desea verificar):

$ 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

Como puede ver, la dirección IP es la cuarta columna / palabra en la salida. El resto, es un simple ejercicio de análisis a través de la herramienta que elija. Aquí estoy usando python:

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

Lo mismo, solo que aquí la cadena <<<y la sustitución de comandos$()

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

Personalmente, tengo esto guardado como una buena función en mi ~/.bashrcforma de escribir menos.

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

La versión de Perl y Ruby es un poco más corta:

$ 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 está familiarizado con el uso de herramientas de análisis de red, probablemente sepa que para obtener su dirección IP, todo lo que necesita hacer es borrar la memoria caché del navegador, iniciar la captura de Wireshark en la interfaz específica y buscar los GETpaquetes http que se transmiten. La columna de destino mostrará su dirección IP

Sergiy Kolodyazhnyy
fuente