Puedo encontrar mi dirección IP usando el comando ifconfig o hostname -i.
Pero, ¿cómo encuentro mi IP pública?
(Tengo una IP pública estática pero quiero descubrirla usando el comando unix)
Puedo encontrar mi dirección IP usando el comando ifconfig o hostname -i.
Pero, ¿cómo encuentro mi IP pública?
(Tengo una IP pública estática pero quiero descubrirla usando el comando unix)
Respuestas:
curl ifconfig.me
curl ifconfig.me/ip
(solo por la ip)
curl ifconfig.me/all
(para más información, lleva tiempo)
Para más comandos visite: http://ifconfig.me/#cli_wrap
curl http://checkip.amazonaws.com/
Puedes solicitar myip.opendns.com
. de OpenDNS. dig @208.67.222.220 myip.opendns.com
dig @resolver1.opendns.com myip.opendns.com
. O en Windows: nslookup myip.opendns.com resolver1.opendns.com
.
dig @208.67.222.220 myip.opendns.com +short
para obtener directamente la ip sin tener que pasar por la respuesta completa.
dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short
dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
dig -4 @resolver1.opendns.com -t a myip.opendns.com +short
Tenga en cuenta que lo anterior solo funciona para IPv4 actualmente (ninguno de estos solucionadores parece tener IPv6 actualmente, pero si omite -4
y el explícito-t a
, entonces corre el riesgo de que se rompa en el futuro (con la excepción de Google txt
, que en realidad podría funcionar para IPv6 un día, si Google lo habilita correctamente)).
Tenga en cuenta que myip.opendns.com
solo se puede resolver a través de resolver1.opendns.com
, y no con auth1.opendns.com
, por lo tanto, ¡parecen estar haciendo un secuestro de DNS y un hombre en el medio de su propio nombre de dominio! Por lo tanto, no puede usarlo para encontrar la IP de un resolutor aleatorio, ya resolver1.opendns.com
que no tiene autoridad para hacerlo myip.opendns.com
.
Tenga en cuenta que o-o.myaddr.l.google.com
parece el enfoque más flexible y a prueba de futuro; incluso es bueno para probar si su solucionador de DNS admite la extensión experimental EDNS0 para la subred del cliente (que muy pocos resolutores tienen soporte para):
% dig @8.8.8.8 -t txt o-o.myaddr.l.google.com +noall +answer +stats | tail -8
;; global options: printcmd
o-o.myaddr.l.google.com. 60 IN TXT "74.125.189.16"
o-o.myaddr.l.google.com. 60 IN TXT "edns0-client-subnet 88.198.54.0/24"
;; Query time: 13 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Dec 8 20:38:46 2013
;; MSG SIZE rcvd: 114
dig +short AAAA myip.opendns.com @2620:0:ccc::2
.
-4
o -6
si necesita una versión IP específica.
Una respuesta muy simple si tiene acceso a internet es:
curl icanhazip.com
Tenga en cuenta que confiar en fuentes de terceros para su IP puede ser problemático, especialmente si lo que hace con esos datos tiene un significado especial.
Una forma más confiable es elegir un servidor DNS conocido y confiable (idealmente ejecutando DNSSEC) y consultar el nombre de host de la caja con él, siempre que su servidor DNS contenga tales entradas;
dig @trustworthysource.com +short `hostname`
Escribí un servicio web simple y rápido para esto.
curl ident.me
Puede solicitar su IPv4:
curl v4.ident.me
O IPv6:
curl v6.ident.me
Y la API está documentada en http://api.ident.me/
Una forma: http://www.whatismyip.com/
Si
entonces puede analizar la salida de ifconfig para las direcciones IP de las interfaces (la parte "inet addr:") para obtener la lista de direcciones IP de todas sus interfaces. La única dirección IP que no está en el rango privado (consulte http://en.wikipedia.org/wiki/IP_address#IPv4_private_addresses ) es su dirección IP pública.
La misma lista también se puede obtener a través de
ip addr show
que puede ser más fácil de analizar.
Si no tiene una conexión directa a Internet (NAT, etc.), no hay forma de encontrar su dirección IP pública sin ayuda externa (ya que su computadora no lo sabe). Entonces tendrás que hacerlo como en las otras respuestas.
Tomé un enfoque un poco diferente al usar el protocolo STUN que fue diseñado para NAT Traversal. Si usa Ubuntu, puede instalar el paquete "aturdir" escribiendo:
sudo apt-get install stun
El paquete instala un servidor STUN que probablemente no necesitará, pero también viene con un cliente de prueba STUN que utilicé para resolver este problema. Ahora puede recuperar su IP pública con un comando (no tan simple):
stun -v stunserver.org 2>&1 1>/dev/null | grep MappedAddress | sed -e 's/.*MappedAddress = //' -e 's/:.*//' | uniq
Ahora, lo que hace es: aturdir contacta al servidor STUN público "stunserver.org" y obtiene una respuesta con su IP pública, el resto del comando es simplemente filtrar la IP de la salida.
Una forma es, puede hacer una solicitud a la página en
http://www.biranchi.com/ip.php
devuelve la dirección IP de su sistema
text/html
está bien para lo que devuelve esa pseudo API: ciertamente no es XML o JSON. text/plain
tal vez, pero es completamente utilizable como text/html
.
wget -q -O - http://wgetip.com/
Google ahora muestra su dirección IP pública: http://www.google.com/search?q=ip
User-Agent
cadena se proporciona a la página. Con Firefox, funciona; pero SeaMonkey con la cadena "Firefox" deshabilitada (a través de "general.useragent.compatMode.firefox" establecida en falso), de repente no lo hace. No tengo ni idea de por qué Google habilita explícitamente cosas como esta solo para Firefox en lugar de cualquier Gecko, ya que hay muchos otros navegadores de escritorio basados en Gecko que son igualmente compatibles, incluido SeaMonkey.
Bien ... Sé que esto es MUCHO después del hecho y probablemente ni siquiera valga la pena publicarlo, pero aquí está mi solución de trabajo.
#!/bin/sh
IP="$(ifconfig | egrep 'inet ' | sed -e 's/inet //' -e 's/addr://' -e 's/ Bcast.*//' -e 's/127.*//')"
echo $IP
Agradable y simple
hostname -I
(mayúscula 'i').
La forma más simple es usar http://ifconfig.me/ , como se sugiere.
En esta página, sabrá qué comando usar para la información que desea recuperar.
Para IP:
curl ifconfig.meo
curl ifconfig.me/ip
Para el nombre de host público:
curl ifconfig.me/host
Para toda la información en un archivo XML:
curl ifconfig.me/all.xml
etc ... solo echa un vistazo a http://ifconfig.me
Estoy haciendo esto mucho y desde muchos dispositivos, así que hice mis propios dos servicios en un servidor:
archivo php en la raíz de un servidor web:
user@host:~$ cat index.php`
<?php echo $_SERVER['REMOTE_ADDR']; echo "\n" ?>
Uso en una cáscara:
$ curl -4 mydomain.com
79.22.192.12
También trabajando con ipv6:
$ curl mydomain.com
2a01:e34:ee7d:180::3
Con netcat:
$ echo "GET /" | nc myserver.com 80
2a01:e34:ee7d:180::3
En un enrutador Cisco:
router#more http://myserver.com/index.php
79.22.192.12
pirateo rápido con un servidor Telnet personalizado: xinetd spawning / usr / bin / env:
service telnet
{
server = /usr/bin/env
socket_type = stream
protocol = tcp
flags = IPv6
wait = no
port = 23
cps = 3 30
passenv = %a
}
y luego telnet para ello:
$ nc -4 myserver.com 23
REMOTE_HOST=::ffff:79.22.192.12
$ nc myserver.com 23
REMOTE_HOST=2a01:e34:ee7d:180::3
funciona igual con un enrutador:
router#telnet myserver.com
79.22.192.12
De esta manera, puede hacer que funcione en su red interna, si algún nat o proxy está involucrado en la comunicación y desea saber de qué IP aparece.
No requiere ningún servicio de terceros.
Para evitar depender de fuentes externas, utilizo expect, para hacer telnet en mi enrutador y obtener la dirección IP de su interfaz pública. Aquí hay un ejemplo de script script:
#!/usr/bin/expect
if { $argc < 3 } {
puts "usage: ./telnet2router.exp router-ip username password"
return -1
}
set ip [lrange $argv 0 0]
set username [lrange $argv 1 1]
set password [lrange $argv 2 2]
spawn telnet $ip
expect "login:" {
send "$username\r"
}
expect "Password:" {
send "$password\r"
}
expect "#" {
send "ifconfig ppp0 | grep inet\r"
send "exit\r"
}
expect eof
Luego ejecuto el script anterior como este para obtener la ip pública:
./telnet2router.exp <router-ip> <username> <password> | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1
Por supuesto, esto se basa en la suposición de que tengo acceso de administrador al enrutador, y es un enrutador basado en Linux, con el comando ifconfig disponible.
Duplicado de muchas otras preguntas (de ahí mi -1 voto).
Aquí se puede encontrar una solución simple de script de shell:
http://bash.cyberciti.biz/misc-shell/read-local-ip-address/
Funciona en Linux, FreeBSD, SunOS y Apple Darwin (con una modificación menor).
Si lo que desea es encontrar la dirección IP externa en su enrutador, puede pedirle al enrutador su dirección pálida o pedirle a alguien de afuera que la obtenga por usted.
para una forma manual, puede navegar en cualquiera de los sitios anteriores que devolverán la dirección IP de la solicitud de ingreso.
De manera automatizada, puede intentar:
wget -q -O - http://www.ipaddressworld.com | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}'\.
que le dará la línea que contiene la dirección IP en la respuesta http, luego la analizará con sed, awk, etc.
puedes usar solo el shell para verificar tu ip externa, también usando proveedores externos
#!/bin/bash
TCP_HOST="checkmyip.com"
TCP_PORT=80
exec 5<>/dev/tcp/"${TCP_HOST}"/"${TCP_PORT}"
echo -e "GET / HTTP/1.0\nHOST:${TCP_HOST}\n" >&5
while read -r line
do
case "$line" in
*"Your local IP address is"* )
line="${line#*Your local IP address is }"
line=${line%%</p>*}
echo "Your ip is: $line"
exec >&5-
exit
;;
esac
done <&5
salida
lynx --dump http://www.whatismyip.com/ | grep -o '[0-9]. * \. [0-9]. * \. [0-9]. * \. [0-9]. *' -m1
Hago esto. Simplemente me da la IP sin ninguna participación de terceros.
ip addr show | grep eth0 | grep inet | tr -s "" | corte -f3 -d "" | cortar -f1 -d "/"
Aquí hay otra alternativa que depende de los hosts que el negocio resuelve en torno a la administración de IP dinámica en lugar de los sitios de "servicio público" que pueden desaparecer o cambiar de formato.
1) Registre su servidor en uno de los muchos servicios dns dinámicos gratuitos (por ejemplo, no-ip.com). Esto le dará una entrada DNS como xxx.no-ip.org.
2) Instale la herramienta de actualización dinámica del servicio (informa los cambios de IP al servicio).
Para obtener la dirección IP en un script, simplemente haga:
$external_ip = `dig +short xxx.no-ip.org`
Excelente para usar en el trabajo cron para verificar si la IP dinámica ha cambiado y algunas entradas de configuración deben cambiarse.
En OS X, aquí hay dos soluciones simples para obtener la IP privada y pública (con código de bonificación si usa LaunchBar).
$ ipconfig getifaddr $1
# $1=en0 || en1 || en*
#!/bin/sh
title="$USER@$(HOSTNAME -s)"
text=$(ipconfig getifaddr en1)
open "x-launchbar:large-type?font-name=TerminalDosis-Light&string=$text&title=$title"
$ dig +time=1 +tries=1 +retry=1 +short myip.opendns.com @resolver1.opendns.com
# ||
$ curl $1
# $1=http://wtfismyip.com/text || http://ip-addr.es || http://icanhazip.com || http://wgetip.com || http://ident.me || http://ifconfig.me || https://shtuff.it/myip/short || http://curlmyip.com
#!/bin/sh
title="$USER@$(HOSTNAME -s)"
text=$(dig +time=1 +tries=1 +retry=1 +short myip.opendns.com @resolver1.opendns.com)
open "x-launchbar:large-type?font-name=TerminalDosis-Light&string=$text&title=$title"