Si su conexión es NAT'ed, ¿es posible ver su dirección IP externa sin hacer una solicitud web saliente?
Cualquier sistema operativo (Windows, Linux, etc.) está bien.
Si su conexión es NAT'ed, ¿es posible ver su dirección IP externa sin hacer una solicitud web saliente?
Cualquier sistema operativo (Windows, Linux, etc.) está bien.
Respuestas:
Si su computadora está detrás de NAT, es posible que vea la dirección IP externa de su enrutador, pero necesita acceso administrativo al enrutador.
El enrutador conoce su dirección IP externa, por lo que al acceder a su página de configuración puede encontrar esa dirección IP. De esta manera no se requiere ninguna herramienta especializada, excepto un navegador web.
Otros protocolos que requieren una herramienta para obtener la información:
Según lo probado por el usuario @dirkt, todos los métodos solo funcionan con IPv4 (excepto posiblemente para PCP).
WANIPConn1/GetExternalIPAddress
, y acaba de devolver con éxito la dirección correcta.
Hay algunas formas en que funcionan con algunos NAT, pero nada garantiza que funcione en todas partes.
Creo que uPnP, NAT-PMP y PCP (Universal Plug And Play, Protocolo de asignación de puertos NAT y Protocolo de control de puertos) tienen formas de preguntarle a una puerta de enlace NAT compatible cuál es la dirección pública, pero no todos los NAT admiten estos protocolos. El soporte es más común en enrutadores de puerta de enlace doméstica que en soluciones NAT corporativas o de nivel de operador.
Cuando te encuentras detrás de un NAT, la única forma segura de ver en qué dirección IP pública está traduciendo tu tráfico es enviar algo de tráfico saliente a algún host público que informará, de una manera que el NAT no traducirá, qué dirección de su tráfico parecía venir. El uso de un servicio basado en la web es una forma, pero también podría hacerlo, por ejemplo, ingresando SSH en una instancia de servidor en la nube y viendo de dónde sshd
proviene su sesión SSH.
Puede usar una solicitud de DNS, que creo que no entraría en la categoría de "solicitud web":
nslookup myip.opendns.com resolver1.opendns.com
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns
. Encontré el comando aquí: groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…
nsslookup
comando falla por mí. Obtengo Server: resolver1.opendns.com
Address: 2620:119:35::35#53
** server can't find myip.opendns.com: NXDOMAIN
dig
ya que no está en Windows. Sin myaddr
embargo, un buen punto con respecto a Google, ¡no estaba al tanto de eso! Supongo que el nslookup
equivalente de Windows seríanslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
nslookup
qué versión de IP usar para el transporte, pero la forma en que OpenDNS lo hace significa que debe hacerlo. Sin eso, tendría que predecir qué versión de IP nslookup
utilizará para el transporte y solicitar A o AAAA en consecuencia. Si está atascado nslookup
, puede usar otro proveedor como Google. Sin embargo, todavía obtienes solo una versión de protocolo en la respuesta y no puedes elegir cuál.
nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
y eso sí funciona. Pero si tengo tanto IPv4 como IPv6, eso no me permitirá elegir cuál de ellos puedo ver. Lo más probable es que me muestre la dirección IPv6, y lo más probable es que la esté usando porque quiero saber la dirección IPv4 de un NAT. Para evitarlo, sería necesario utilizar un servicio que tenga un nombre solo IPv4 y un nombre solo IPv6, que también abordaría el problema de NAT64.
Me gustaría agregar un punto a las respuestas ya existentes.
También depende de la complejidad de la red. Es posible que su computadora esté ubicada dentro de una red que tiene múltiples direcciones IP externas y el enrutador en algún lugar de la línea envía el tráfico a Internet según algunos criterios: por ejemplo, la dirección IP de destino o la hora del día (puede ser un canal de enlace ascendente es más barato por la noche o por otras razones).
Por lo tanto, para completar, una noción de "dirección IP externa" puede requerir definir un punto de destino al que su dirección sea externa.
En el ejemplo a continuación Router #2
podría realizar NAT y enviar tráfico a cualquiera de los enlaces ascendentes y el host receptor podría ver diferentes direcciones IP externas para el Host
.
O podría ser que cierto destino (por ejemplo host1.example.com
) siempre enruta a través de Uplink A
, y el host host2.example.com
siempre enruta a través de Uplink B
. Por lo tanto, sus direcciones IP externas, tal como las ven esos hosts, serán diferentes, siempre Uplink A
y cuando Uplink B
sean ISP diferentes.
Uplink A Uplink B
------------- -------------
| |
| |
| 192.168.1.1 192.168.50.50 |
| ----------- |
|---------------|Router #2|---------------|
-----------
| 192.168.100.1
|
| 192.168.100.2
-----------
|Router #1|
-----------
| 192.168.200.1
|
| 192.168.200.2
-----------
| Host |
-----------
Por lo tanto, el envío de tráfico permitirá obtener resultados más confiables.
Puede usar DNS en lugar de HTTP. Por ejemplo, puedes usar:
dig +short TXT o-o.myaddr.l.google.com
Esto mostrará la dirección de unidifusión del servidor DNS que está utilizando, y si es compatible con EDNS, también mostrará su dirección IP, aunque posiblemente truncada.
Para obtener su dirección IP completa, puede omitir su servidor DNS local y enviar la solicitud anterior directamente a ns {1,2,3,4} .google.com
dig +short TXT o-o.myaddr.l.google.com @ns3.google.com
Si desea ver su dirección IP en una versión de protocolo específica, puede usar -6
y -4
:
dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com
También puede usar OpenDNS si así lo prefiere. OpenDNS no utiliza registros TXT para esto, sino registros A y AAAA, por lo que debe especificar qué versión de protocolo está buscando:
dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com
Tenga en cuenta que si su tráfico pasa por la traducción del protocolo, puede obtener resultados diferentes o ninguno. Probar desde una máquina detrás de NAT64 Pude ver mi dirección IPv6 con los comandos anteriores pero no la dirección IPv4 de NAT64.
Esta respuesta se basa en estas fuentes 1 2 3 y un poco de investigación propia.
Web generalmente se refiere a HTTP, si ese es el significado de su pregunta, entonces, por ejemplo, podría usar STUN ( Artículo de Wikipedia ) que significa "Utilidades de recorrido de sesión para NAT".
Ahora, como se ha resaltado en un comentario, es posible que tenga varias direcciones IP externas. Además, como las conexiones inalámbricas se están volviendo más comunes (cosa 4G), no es imposible que la dirección IP informada por su enrutador no sea pública. Incluso conocí ese escenario en las conexiones de fibra óptica en algunos países, donde el ISP le daría al enrutador local una IP privada, que luego se traduciría 1: 1 a una IP pública al salir de su red.
Entonces, si su pregunta es "¿puedo encontrar mi IP pública sin enviar paquetes fuera de mi red", PUEDE EN su contexto, pero no hay una solución 100% de prueba.