¿Cómo puedo obtener la IP interna de una computadora detrás de NAT, pero accesible a través de cierto puerto TCP?

5

Quiero obtener la IP interna de una computadora remota detrás de un NAT al que puedo acceder utilizando algún puerto , por ejemplo, myhost.farfar.away port 11122TCP :

C:\>telnet myhost.farfar.away 11122
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

Como ve, hay un servidor SSH en él, pero no tengo datos de usuario de conexiones.

Si intento rastrear la ruta (direcciones IP falsas, por supuesto):

C:\>tracert -d myhost.farfar.away

Trace route to address myhost.farfar.away [103.56.5.30]
maximum 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.11.1
  2    <1 ms    <1 ms    <1 ms  192.168.10.1
  3    47 ms    47 ms    47 ms  80.58.67.85
  4    81 ms    86 ms    80 ms  103.56.5.30

Trace route complete.

Sé que myhost.farfar.away tiene IP 103.56.5.30 , pero es posible mantener la esperanza a través de este NAT, ahora que sé que el puerto 11122TCP se redirige a esta máquina, con el fin de obtener su IP interna (sin pasar por el NAT)?

NOTA: Sé que su IP interna es 172.26.5.5 , por lo que teóricamente me gustaría llegar a algo como:

  3    47 ms    47 ms    47 ms  80.58.67.85
  4    81 ms    86 ms    80 ms  103.56.5.30
  5   101 ms    106 ms  100 ms  172.26.5.5

Los mismos resultados para netstat , por supuesto.

He probado tcpdump , pero creo que solo puede proporcionar información sobre las conexiones que ingresan a mi computadora, por lo que ejecutar esta línea en la máquina remota sería suficiente:

tcpdump -i any port 11122

¿Pero se puede hacer en la computadora local de "escaneo"? Puedo usar Windows o Linux.

    
pregunta Sopalajo de Arrierez 09.12.2014 - 22:44
fuente

2 respuestas

7

Debo estar en desacuerdo con @vahid. Si hay varios saltos entre el NAT y el host al que se reenvía el puerto, es posible que pueda obtener un mensaje ICEX TIMEX.

Como puede saber, cada paquete IPv4 tiene un campo TTL de 1 byte. Si determina la distancia al NAT (digamos 10 saltos) y el host oculto real está a 12 saltos (o más) de distancia, puede enviar un SYN al puerto reenviado por el puerto en el NAT con un valor TTL de 11. Si simplemente está reescribiendo la dirección (en lugar de actuar como un proxy inverso), entonces el TTL no se verá afectado. Esto significa que el TTL cuando salga del NAT con el número de entrada entrante será 1. El siguiente enrutador disminuirá a cero, lo que provocará un mensaje ICMP de Tiempo de vida excedido (TIMEX) para el remitente.

A pesar de que el paquete saliente tendrá un NAT, todos los mensajes de error de ICMP (de los cuales este es uno) contendrán el encabezado del protocolo incorporado dentro de él. Lo que esto significa es que el host de destino original des-NATted ahora será visible en la carga útil de ICMP como un encabezado IP incrustado que se devuelve en el error.

Si bien es cierto que esta técnica tiene algunos requisitos muy específicos para ser exitosa (ICMP permitió la salida, el host real reenviado por puerto no en la LAN local del NAT, etc.) ciertamente funcionará, lo que significa que esto es -no- imposible por cualquier medio.

    
respondido por el David Hoelzer 10.12.2014 - 03:49
fuente
2

Lo que estás tratando de lograr no es posible, por diseño. La única forma de lograr esto es tener acceso a la puerta de enlace o al equipo host. Un dispositivo NAT tiene el doble propósito de compartir una conexión a Internet con una red interna y proteger la red interna de manera muy similar a como lo haría un firewall tradicional.

[editar] Estoy corregido. El IETF, de hecho, permite que esto sea posible, dados los supuestos descritos en la respuesta de David anterior.

    
respondido por el Vahid 09.12.2014 - 22:56
fuente

Lea otras preguntas en las etiquetas