Este artículo es una traducción libre de una de las entradas en
Con el permiso del autor (así como para mayor claridad e interés), lo coloreé con enlaces y lo complementé con algunas investigaciones personales.
introducción
Al menos un usuario del par de conexión debe estar en modo activo en este momento. El mecanismo transversal de NAT será útil cuando el modo activo no esté configurado en ninguno de los lados. Esto generalmente se debe a que un firewall o un dispositivo NAT bloquea las conexiones entrantes.
Si ambos clientes están en modo activo
El cliente iniciador envía un comando que contiene su propia dirección IP y puerto.
Si uno de los clientes está en modo pasivo
A través del hub, un cliente pasivo A envía un comando
como servidor S en el caso anterior hay un concentrador de CC
Si ambos clientes están en modo pasivo en
Clientes detrás de diferentes NAT A и B se unió al centro S.
Así es como se ve la conexión al hub desde el lado del cliente A
El concentrador acepta conexiones en el puerto 1511. 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 él y la transmite a los clientes según sus identificadores.
Cliente A envía al servidor S mensaje pidiendo ayuda para conectarse con un cliente B.
Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991
También en modo pasivo, el cliente B, habiendo recibido este comando, debe informar su puerto privado utilizado para conectarse al concentrador 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 inmediatamente intenta establecer una conexión con el cliente B y reporta 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 está en cambiar el punto final de la misma conexión creando una nueva conexión a una dirección pública a través de un puerto privado ya utilizado.
Bingo
Por supuesto, en este caso el cliente NAT B tiene todo el derecho a rechazar la primera solicitud de conexión de un cliente A, pero su propia petición se precipita en el “agujero” creado por esta misma conexión, y la conexión se establece.
Ilustración adecuada para todo el proceso con la salvedad de que
El acto final
Al momento de escribir el artículo (original), aproximadamente la mitad de los clientes de DC están trabajando en modo pasivo. Esto significa que no se puede establecer una cuarta parte de todas las conexiones posibles.
En el futuro
Fuente: habr.com