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:
- 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
- El servidor STUN le dice al cliente la dirección desde la que recibió la conexión, que es
natted_addr_1
- 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
- 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.