La perforación de orificios UDP es una técnica de uso común que se emplea en aplicaciones de traducción de direcciones de red (NAT) para mantener los flujos de paquetes del Protocolo de datagramas de usuario (UDP) que atraviesan el NAT. Las técnicas de NAT transversal suelen ser necesarias para las aplicaciones de red de cliente a cliente en Internet que involucran hosts conectados en redes privadas , especialmente en implementaciones de igual a igual , cliente directo a cliente (DCC) y de voz sobre protocolo de Internet (VoIP). . [1]
La perforación de orificios UDP establece la conectividad entre dos hosts que se comunican a través de uno o más traductores de direcciones de red. Normalmente, los hosts de terceros en la red de transporte público se utilizan para establecer estados de puerto UDP que pueden usarse para comunicaciones directas entre los hosts que se comunican. Una vez que el estado del puerto se ha establecido con éxito y los hosts se están comunicando, el estado del puerto puede mantenerse mediante el tráfico de comunicaciones normal o, en ausencia prolongada del mismo, mediante paquetes de mantenimiento de vida , que generalmente consisten en paquetes UDP vacíos o paquetes con un mínimo de elementos no intrusivos. contenido.
Descripción general
La perforación de orificios UDP es un método para establecer conexiones UDP bidireccionales entre hosts de Internet en redes privadas utilizando traductores de direcciones de red. La técnica no es aplicable en todos los escenarios o con todos los tipos de NAT, ya que las características operativas de NAT no están estandarizadas.
Los hosts con conectividad de red dentro de una red privada conectada a Internet a través de un NAT suelen utilizar el método Session Traversal Utilities for NAT (STUN) o el Interactive Connectivity Establishment (ICE) para determinar la dirección pública de NAT que requieren sus pares de comunicaciones. En este proceso, se utiliza otro host en la red pública para establecer el mapeo de puertos y otro estado del puerto UDP que se supone válido para la comunicación directa entre los hosts de la aplicación. Dado que el estado UDP generalmente expira después de breves períodos de tiempo en el rango de decenas de segundos a unos pocos minutos, [2] y el puerto UDP se cierra en el proceso, la perforación de orificios UDP emplea la transmisión de paquetes de mantenimiento de vida periódicos , cada uno de los cuales se renueva. los contadores de tiempo de vida en la máquina de estado UDP del NAT.
La perforación de agujeros UDP no funcionará con dispositivos NAT simétricos (también conocidos como NAT bidireccional) que tienden a encontrarse en grandes redes corporativas. En NAT simétrica, el mapeo de NAT asociado con la conexión al servidor STUN conocido está restringido a recibir datos del servidor conocido y, por lo tanto, el mapeo NAT que ve el servidor conocido no es información útil para el punto final.
En un enfoque algo más elaborado, ambos hosts comenzarán a enviarse entre sí, utilizando múltiples intentos. En un NAT de cono restringido , se bloqueará el primer paquete del otro host. Después de eso, el dispositivo NAT tiene un registro de haber enviado un paquete a la otra máquina y dejará pasar cualquier paquete que provenga de esta dirección IP y número de puerto. Esta técnica se utiliza ampliamente en software peer-to-peer y telefonía de Protocolo de Voz sobre Internet . También se puede utilizar para ayudar al establecimiento de redes privadas virtuales que operan sobre UDP. La misma técnica a veces se extiende a las conexiones del Protocolo de control de transmisión (TCP), aunque con menos éxito porque los flujos de conexión TCP son controlados por el sistema operativo host, no por la aplicación, y los números de secuencia se seleccionan al azar; por lo tanto, cualquier dispositivo NAT que realice la verificación del número de secuencia no considerará que los paquetes están asociados con una conexión existente y los descartará.
Flujo
Sean A y B los dos hosts, cada uno en su propia red privada; N A y N B son los dos dispositivos NAT con direcciones IP globalmente alcanzables EIP A y EIP B respectivamente; S es un servidor público con una dirección IP reconocida y accesible a nivel mundial.
- A y B comienzan cada uno una conversación UDP con S; los dispositivos NAT N A y N B crean estados de traducción UDP y números de puerto externo temporales Asignar EP A y EP B .
- S examina los paquetes UDP para obtener el puerto de origen utilizado por N A y N B (los puertos NAT externos EP A y EP B ).
- S pasa EIP A : EP A a B y EIP B : EP B a A.
- A envía un paquete a EIP B : EP B .
- N A examina el paquete de A y crea la siguiente tupla en su tabla de traducción: (Fuente-IP-A, EP A , EIP B , EP B ).
- B envía un paquete a EIP A : EP A .
- N B examina el paquete de B y crea la siguiente tupla en su tabla de traducción: (Source-IP-B, EP B , EIP A , EP A ).
- Dependiendo del estado de N Una tabla de traducción 's cuando llega primer paquete de B (es decir, si la tupla (Fuente-IP-A, EP A , EIP B , EP B ) ha sido creado por el tiempo de llegada de primer paquete de B) , El primer paquete de B se descarta (no hay entrada en la tabla de traducción) o se pasa (se ha realizado una entrada en la tabla de traducción).
- Dependiendo del estado de la tabla de traducción de N B cuando llega el primer paquete de A (es decir, si la tupla (Source-IP-B, EP B , EIP A , EP A ) se ha creado en el momento de la llegada del primer paquete de A) , El primer paquete de A se descarta (no hay entrada en la tabla de traducción) o se pasa (se ha realizado una entrada en la tabla de traducción).
- En el peor de los casos, el segundo paquete de A llega a B; en el peor de los casos, el segundo paquete de B llega a A. Se han "perforado" agujeros en el NAT y ambos hosts pueden comunicarse directamente.
- Si ambos hosts tienen NAT de cono restringido o NAT simétrico , los puertos NAT externos serán diferentes de los utilizados con S. En algunos enrutadores, los puertos externos se seleccionan secuencialmente, lo que permite establecer una conversación adivinando puertos cercanos.
Ver también
Referencias
- ^ "Perforación de agujeros UDP, estado de comunicación entre pares (P2P) a través de traductores de direcciones de red (NAT)" . ietf.org. 2008-03-01 . Consultado el 22 de junio de 2016 .
- ^ "Seguridad simple en IPv6 Gateway CPE" . ietf.org. 2011-01-01 . Consultado el 22 de junio de 2016 .
enlaces externos
- Comunicación de igual a igual a través de traductores de direcciones de red , PDF : contiene una explicación detallada del proceso de perforación.
- STUNT : cruce simple de UDP a través de NAT y TCP también
- Traducción de direcciones de red y aplicaciones de igual a igual (NATP2P)