UDP perforando puerto NAT

8

Acabo de leer un artículo sobre el proceso de "perforar agujeros" con el protocolo UDP. Entiendo cómo se hace, pero tengo una última pregunta para aclarar las cosas. Tenemos el servidor de cita y el cliente A, B.

El cliente A ya hizo un agujero para el cliente B. El cliente B recibe la IP NAT y el puerto NAT del servidor de cita y comienza a enviar datos al mismo puerto que el servidor de cita. Digamos que conozco un segundo puerto que NAT ha abierto para conexiones UDP. ¿Podría enviar mis paquetes a través de este segundo puerto también? ¿O se distingue el puerto para cada conexión UDP saliente? Si es así, ¿por qué podemos usar el mismo puerto para el Cliente B y el servidor de cita? ¿El NAT no abriría un nuevo puerto cuando el Cliente A perfora el agujero y el Cliente B tenía que saber qué nuevo puerto abrió el NAT para esta conexión específica?

Espero que mi pregunta sea algo comprensible.

Tagaeyan Tagan
fuente

Respuestas:

6

El dispositivo NAT mantendrá una tabla con las conexiones actualmente abiertas para que pueda enviar paquetes de devolución al host interno que abrió la conexión. Una entrada en la tabla de estado podría verse así:

IP de origen interno | Puerto S interno | Puerto S externo | IP de destino | Puerto D
192.168.1.12 10123 10123 203.0.113.1 5555

Cuando se recibe un paquete (de la cara externa) del dispositivo NAT se compruebe la IP de origen , puerto de origen y puerto de destino del paquete y compararlo con el Destination IP, D-Porty External S-Portcampos en la tabla de enlaces. Cuando encuentra una coincidencia, reenviará el paquete a Internal Source IPencendido Internal S-Port.

La perforación de agujeros UDP depende del hecho de que los puertos de origen internos y externos son los mismos. Este suele ser el caso a menos que tenga un segundo host interno que use el mismo puerto de origen para conectarse a la misma combinación de destino / puerto D externo.

Cuando suponemos que el puerto S interno y externo son iguales, ambos clientes A, B pueden comunicar su puerto de origen al servidor de encuentro, que luego transmitirá la información al otro cliente respectivamente.

Sebastian Wiesinger
fuente