Este artículo es una traducción libre de una de las publicaciones en .
Con el permiso del autor (y también para mayor claridad e interés), lo he enriquecido con enlaces y he añadido algunas reflexiones personales.
Introducción
Actualmente, al menos un usuario de la pareja que se conecta debe estar en modo activo. El mecanismo de «bypass» NAT será útil en casos donde el modo activo no se ha configurado en ninguno de los dos lados. Esto normalmente sucede debido a la restricción de conexiones entrantes por un cortafuegos o por el dispositivo NAT.
Si ambos clientes están en modo activo
El cliente iniciador envía un comando que contiene su propia dirección IP y puerto al otro cliente. Usando esta información, el cliente que recibe el comando establece una conexión con el iniciador.
Si uno de los clientes está en modo pasivo
A través del hub, el cliente pasivo A envía el comando al cliente activo B, que luego responde con el comando $ConnectToMe.

Como servidor S en el caso anterior actúa el hub DC
Si ambos clientes están en modo pasivo en
Los clientes detrás de diferentes NAT A y B se han unido al hub S.

Así es como la conexión al hub se ve desde el lado del cliente A
El hub acepta conexiones en el puerto 1511. El cliente A realiza conexiones salientes desde su red privada a través del puerto 50758. El hub, a su vez, ve la dirección del dispositivo NAT, trabaja con ella y transmite a los clientes de acuerdo con sus identificadores.
Cliente A envía al servidor S un mensaje solicitando ayuda para conectarse con el cliente B.
Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991
También estando en modo pasivo, el cliente B, al recibir este comando, debe informar su puerto privado que se utiliza para conectarse al hub a través de NAT.
Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991
Después de recibir esta información, el cliente A intenta inmediatamente establecer una conexión con el cliente B y comunica su propio puerto privado.
Hub: [Outgoing][178.79.159.147:1511] D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991¿Cuál es el interés? El interés radica en desplazar el punto final de la misma conexión creando una nueva conexión a una dirección pública a través del puerto privado ya utilizado.

¡Bingo!
Sin duda, en este proceso el NAT del cliente B tiene todo el derecho de rechazar la primera solicitud de conexión del cliente A, pero ya su propia solicitud se dirige a la «agujero» creado por esa misma conexión, y la conexión se establece.

Ilustración adecuada para todo el proceso con la salvedad de que no utiliza puertos públicos abiertos por la sesión NAT‒S, así como direcciones privadas.
Epílogo
En el momento de la escritura (original) del artículo, aproximadamente la mitad de los clientes de DC están funcionando en modo pasivo. Esto significa que una cuarta parte de todas las posibles conexiones no puede ser establecida.
En adelante , utilizando conexiones existentes A‒S y B‒S para establecer una conexión directa cliente-cliente, incluso si A y B están en modo pasivo.
Fuente: habr.com
