¿Por qué STUN no funciona con NAT simétrica?

7

Leí esta línea de wikipedia .

" STUN funciona con tres tipos de NAT: NAT de cono completo, NAT de cono restringido y NAT de cono restringido de puerto . En los casos de NAT de cono restringido o de puerto restringido, el cliente debe enviar un paquete al punto final antes de que el NAT permitir paquetes desde el punto final hasta el cliente. STUN no funciona con NAT simétrica "

¿Alguien puede explicar por qué?

Kristen
fuente

Respuestas:

6

Debido a STUN (servidor externo), no puedo saber qué puerto se le dará al cliente por el dispositivo NAT. En NAT simétrica, el cliente obtiene un puerto único (ip: puerto en situación de grupo) en cada conexión

Pyatka
fuente
13

Digamos que tenemos un servidor STUN en la dirección stun_addry un servidor en la dirección srv_addr. Usar STUN suele ser algo como esto:

  1. El cliente se conecta al servidor STUN a stun_addrtravés del dispositivo NAT. El dispositivo NAT traduce la dirección de origen anatted_addr_1
  2. El servidor STUN le dice al cliente la dirección desde la que recibió la conexión, que es natted_addr_1
  3. El cliente se pone en contacto con el servidor a srv_addrtravés del dispositivo NAT y le dice al sistema externo que lo use natted_addr_1si quiere llegar al cliente
  4. El sistema externo envía algo al cliente usando natted_addr_1

Esto solo funcionará si el dispositivo NAT lo utiliza natted_addr_1tanto para la comunicación con el servidor STUN como para el otro sistema externo. Más específicamente, solo funciona si el dispositivo NAT entregará los paquetes que llegan en el paso 4 al cliente.

Un dispositivo NAT simétrico utilizará una traducción diferente en los pasos 1 y 3 porque la dirección de destino del tráfico es diferente. En el paso 3, la dirección de origen en los paquetes al servidor se traduce a otra dirección natted_addr_2.

El dispositivo NAT solo conoce estas combinaciones de direcciones de origen y destino y solo permitirá que vuelvan a entrar:

  • De stun_addranatted_addr_1
  • De srv_addranatted_addr_2

Desafortunadamente, se le ha dicho al servidor que use, natted_addr_1pero los paquetes srv_addrdestinados natted_addr_1serán rechazados por el dispositivo NAT debido a la Dirección NAT: restricción de puerto en el lugar.

Para ser más correctos, 'dirección' debe reemplazarse por 'dirección / puerto' en esta respuesta, porque los dispositivos NAT funcionarán con la combinación de dirección IP y números de puerto.

Gerben
fuente
Gran explicación Esto me ha ayudado a entender por qué STUN no funciona para NAT simétricos. Con lo que todavía estoy luchando es, en el mundo de WebRTC, ¿los candidatos generados a través de STUN en una dirección o puerto restringirán el cono NAT con éxito? Parece ser que en todos estos casos, la perforación de agujeros UDP fallará. ¿Es correcto mi entendimiento?
Ternario
Esto me parece una nueva pregunta. Dado que la terminología en diferentes tipos de NAT puede ser confusa, si lo desea, puede hacer una nueva pregunta en el sitio con más contexto.
Gerben