Para encontrar la IP externa, puede usar servicios externos basados en la web o usar métodos basados en el sistema. La más fácil es usar el servicio externo, también las ifconfig
soluciones basadas funcionarán en su sistema solo si no está detrás de a NAT
. Los dos métodos se han discutido a continuación en detalle.
Encontrar IP externa usando servicios externos
La forma más fácil es utilizar un servicio externo a través de un navegador de línea de comandos o una herramienta de descarga. Como wget
está disponible por defecto en Ubuntu, podemos usar eso.
Para encontrar su ip, use-
$ wget -qO- https://ipecho.net/plain ; echo
Cortesía :
También puede usar lynx
(navegador) o curl
en lugar de wget
pequeñas variaciones al comando anterior, para encontrar su IP externa.
Utilizando curl
para encontrar la ip:
$ curl https://ipecho.net/plain
Para una salida con mejor formato use:
$ curl https://ipecho.net/plain ; echo
Un método más rápido (posiblemente el más rápido) que se utiliza dig
con OpenDNS
como resolución:
Las otras respuestas aquí van todas a través de HTTP a un servidor remoto. Algunos de ellos requieren el análisis de la salida o dependen del encabezado User-Agent para que el servidor responda en texto sin formato. También cambian con bastante frecuencia (baja, cambia su nombre, publica anuncios, puede cambiar el formato de salida, etc.).
- El protocolo de respuesta DNS está estandarizado (el formato seguirá siendo compatible).
- Históricamente, los servicios de DNS (OpenDNS, Google Public DNS, ...) tienden a sobrevivir mucho más tiempo y son más estables, escalables y, en general, más cuidados que cualquier nuevo servicio HTTP de whatismyip.com.
- (para aquellos geeks que se preocupan por la microoptimización), este método debería ser inherentemente más rápido (solo unos pocos microsegundos).
Usando dig con OpenDNS como resolutor:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
Copiado de: https://unix.stackexchange.com/a/81699/14497
Encontrar IP externo sin depender de servicios externos
- Si conoce el nombre de su interfaz de red
Escriba lo siguiente en su terminal:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
En lo anterior, reemplace <interface_name>
con el nombre de su interfaz real, por ejemplo: eth0
, eth1
, pp0
, etc ...
Ejemplo de uso:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
- Si no conoce el nombre de su interfaz de red
Escriba lo siguiente en su terminal (esto obtiene el nombre y la dirección IP de cada interfaz de red en su sistema):
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
Ejemplo de uso:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
NB: Las salidas son indicativas y no reales.
Cortesía: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
ACTUALIZAR
LANG=c
se ha agregado a los ifconfig
usos basados, para que siempre proporcione la salida en inglés, independientemente de la configuración regional.