¿Comando para determinar mi IP pública?

Si lo compruebo con google, puedo ver mi IP pública. ¿Hay algo en la línea de comandos de Ubuntu que me dé la misma respuesta?

Solución

Si no está detrás de un router, puede averiguarlo utilizando ifconfig.

Si estás detrás de un router, entonces tu ordenador no sabrá la dirección IP pública ya que el router hace una traducción de direcciones de red. Puedes preguntar a algún sitio web cuál es tu dirección IP pública usando curl o wget y extraer la información que necesitas de él:


curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/
Comentarios (16)

Para encontrar la IP externa, puede utilizar servicios externos basados en la web, o utilizar métodos basados en el sistema. El más fácil es usar el servicio externo, también las soluciones basadas en ifconfig funcionarán en su sistema sólo si no está detrás de una NAT. los dos métodos se han discutido a continuación en detalle.

Encontrar la 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 utilizarlo.
Para encontrar su ip, use

$ wget -qO- https://ipecho.net/plain ; echo

Cortesía:

También puedes usar lynx(browser) o curl en lugar de wget con pequeñas variaciones al comando anterior, para encontrar tu ip externa.

Usando curl para encontrar la ip:

$ curl https://ipecho.net/plain

Para una salida mejor formateada utilice:

$ curl https://ipecho.net/plain ; echo

Un método más rápido (posiblemente el más rápido) usando dig con OpenDNS como resolvedor:

Las otras respuestas aquí van todas sobre HTTP a un servidor remoto. Algunas de ellas Algunas requieren el análisis de la salida, o dependen de la cabecera User-Agent para que el servidor responda en texto plano. También cambian bastante cambian con frecuencia (bajan, cambian de nombre, ponen anuncios, pueden cambiar formato de salida, etc.).

  1. El protocolo de respuesta DNS está estandarizado (el formato seguirá siendo compatible).
  2. Históricamente los servicios DNS (OpenDNS, Google Public DNS, ..) tienden a sobrevivir mucho más tiempo y son más estables, escalables y generalmente cuidados que cualquier nuevo servicio HTTP de whatismyip.com que esté de moda hoy en día.
  3. (para aquellos geeks que se preocupan por la micro-optimización), este método debería ser intrínsecamente más rápido (aunque sólo sea por unos pocos micro segundos).

Usando dig con OpenDNS como resolver:

$ dig +short myip.opendns.com @resolver1.opendns.com

111.222.333.444

Copiado de: https://unix.stackexchange.com/a/81699/14497

Encontrar la IP externa sin depender de los servicios externos

  • Si conoce el nombre de su interfaz de red

Escriba lo siguiente en su terminal:

$ LANG=c ifconfig  | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

En lo anterior, sustituye `por el nombre de tu 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

N.B: Los resultados son indicativos y no reales.

Cortesía: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/

ACTUALIZACIÓN

  1. Se ha añadido LANG=c a los usos basados en ifconfig, para que siempre dé la salida en inglés, independientemente de la configuración regional.
Comentarios (10)

El que estoy usando es :

wget -O - -q icanhazip.com

Sí, puedes tener ip :-)

Comentarios (1)