stringtranslate.com

Perforación de orificios UDP

La perforación de agujeros UDP es una técnica comúnmente utilizada en aplicaciones de traducción de direcciones de red (NAT) para mantener flujos de paquetes de Protocolo de datagramas de usuario (UDP) que atraviesan el NAT. Las técnicas de cruce de NAT suelen ser necesarias para aplicaciones de redes cliente a cliente en Internet que involucran hosts conectados en redes privadas , especialmente en implementaciones de punto a punto , de cliente a cliente directo (DCC) y de voz sobre protocolo de Internet (VoIP). [1]

La perforación de puertos UDP establece la conectividad entre dos hosts que se comunican a través de uno o más traductores de direcciones de red. Normalmente, se utilizan hosts de terceros en la red de transporte público para establecer estados de puerto UDP que pueden utilizarse para comunicaciones directas entre los hosts que se comunican. Una vez que se ha establecido correctamente el estado del puerto y los hosts se están comunicando, el estado del puerto puede mantenerse mediante el tráfico de comunicaciones normal o, en su ausencia prolongada, mediante paquetes de mantenimiento de conexión , que suelen consistir en paquetes UDP vacíos o paquetes con un contenido mínimo y no intrusivo.

Descripción general

La perforación de agujeros UDP es un método para establecer conexiones UDP bidireccionales entre hosts de Internet en redes privadas mediante traductores de direcciones de red. La técnica no es aplicable en todos los escenarios ni 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 través de un NAT a Internet normalmente utilizan el método de utilidades de recorrido de sesión para NAT (STUN) o el establecimiento de conectividad interactiva (ICE) para determinar la dirección pública del NAT que requieren sus pares de comunicaciones. En este proceso, se utiliza otro host en la red pública para establecer la asignación de puertos y otro estado de puerto UDP que se supone que es válido para la comunicación directa entre los hosts de la aplicación. Dado que el estado UDP normalmente 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 agujeros UDP emplea la transmisión de paquetes periódicos de mantenimiento de conexión , cada uno de los cuales renueva los contadores de tiempo de vida en la máquina de estado UDP del NAT.

La perforación de orificios UDP no funcionará con dispositivos NAT simétricos (también conocidos como NAT bidireccional) que suelen encontrarse en redes corporativas de gran tamaño. En NAT simétrico, la asignación de NAT asociada con la conexión al servidor STUN conocido se limita a recibir datos del servidor conocido y, por lo tanto, la asignación de NAT que ve el servidor conocido no es información útil para el punto final.

En un enfoque un poco más elaborado, ambos hosts comenzarán a enviarse mensajes 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 usa ampliamente en software peer to peer y telefonía de voz sobre protocolo de Internet . También se puede usar para ayudar al establecimiento de redes privadas virtuales que operan sobre UDP. La misma técnica a veces se extiende a las conexiones de Protocolo de control de transmisión (TCP), aunque con menos éxito porque los flujos de conexión TCP están controlados por el sistema operativo del host, no por la aplicación, y los números de secuencia se seleccionan aleatoriamente; por lo tanto, cualquier dispositivo NAT que realice una verificación de número de secuencia no considerará que los paquetes estén asociados con una conexión existente y los descartará.

Diagrama de secuencia de mensajes de perforación de agujeros UDP
Diagrama de secuencia de mensajes con los pares A y B, utilizando el servidor S para ayudar a establecer la comunicación

Fluir

Sean A y B los dos hosts con direcciones IP internas iAddr A y iAddr B respectivamente, cada uno en su propia red privada; N A y N B son los dos dispositivos NAT con direcciones IP externas eAddr A y eAddr B respectivamente; S es un servidor público con una dirección IP conocida.

  1. A y B inician cada uno una conversación UDP con S; los dispositivos NAT N A y N B crean estados de traducción UDP y asignan números de puerto externos temporales ePort A y ePort B.
  2. S examina los paquetes UDP para obtener el puerto de origen utilizado por N A y N B (los puertos NAT externos ePort A y ePort B ).
  3. S informa a B sobre los valores de eAddr A :ePort A e informa a A sobre los valores de eAddr B :ePort B .
  4. A envía un paquete a eAddr B :ePort B y B envía un paquete a eAddr A :ePort A (no necesariamente al mismo tiempo ni en ningún orden particular).
    • Cuando esos paquetes salen de su red privada, cada dispositivo NAT agrega una entrada a su tabla de traducción:
      • N A examina el paquete de A y encuentra que ya existe una entrada (iAddr A , iPort A , eAddr A , ePort A ) pero el destino es diferente (S). N A creará una nueva entrada con la misma traducción para el tráfico proveniente de A (iAddr A ) a B (eAddr B ).
      • N B examina el paquete de B y descubre que ya existe una entrada (iAddr B , iPort B , eAddr B , ePort B ) pero el destino es diferente (S). N B creará una nueva entrada con la misma traducción para el tráfico procedente de B (iAddr B ) a A (eAddr A ).
    • Dependiendo del estado de la tabla de traducción de cada NAT al llegar el paquete remoto:
      • Si la nueva entrada ya se agregó a la tabla de traducción de N A antes de la llegada del paquete de B, entonces N A pasa el paquete de B, pero en caso contrario lo descarta.
      • Si la nueva entrada ya se agregó a la tabla de traducción de N B antes de la llegada del paquete de A, entonces N B pasa el paquete de A, pero en caso contrario lo descarta.
  5. Una vez que ambos NAT tienen esas tuplas agregadas, se han "perforado" "agujeros" en los NAT, lo que permite que ambos hosts se comuniquen directamente.

Véase también

Referencias

  1. ^ Ford, Bryan; Kegel, Dan; Srisuresh, Pyda (1 de marzo de 2008). "Perforación de agujeros UDP, estado de la comunicación punto a punto (P2P) a través de traductores de direcciones de red (NAT)". ietf.org . Consultado el 22 de junio de 2016 .
  2. ^ "Seguridad simple en IPv6 Gateway CPE". ietf.org. 2011-01-01 . Consultado el 2016-06-22 .

Enlaces externos