Estoy desarrollando una aplicación P2P que utilizará el perforador UDP para conectar a dos pares detrás de NAT.
Sin embargo, cuando se trata de conexiones entre un cono y una NAT simétricas e impredecibles, el perforado no es tan trivial como podría ser con las conexiones entre las NAT del cono. La única manera que encontré para hacerlo es simplemente esforzarme lo más que pueda hasta que logre encontrar el puerto correcto.
Mi estrategia funciona de la siguiente manera:
- Abra una gran cantidad de puertos en el lado simétrico y envíe los paquetes al puerto NAT del cono.
- En el lado del cono, envíe paquetes a puertos aleatorios hasta que los interlocutores logren conectarse.
Teniendo a la mano un NAT simétrico y un cono, hice el siguiente experimento:
- Se abrieron 32 puertos en el lado simétrico
- Envió 64 paquetes cada 0.1 segundos desde el lado del cono a la NAT simétrica en puertos aleatorios
En un par de segundos siempre logro conectarme. Sin embargo, me preguntaba si algunos cortafuegos y NAT podrían utilizar algún tipo de lista negra en estas circunstancias. Por ejemplo, ¿es posible que los NAT que tienen que soltar varios paquetes en diferentes puertos de la misma fuente enlistarán la fuente por un tiempo?
Intenté averiguar esto y descubrí que a veces se puede utilizar alguna forma de lista negra si el NAT está bajo ataque DoS. Sin embargo, esta técnica de perforación es de 4 a 6 órdenes de magnitud menos pesada que un ataque DoS típico.
Entonces, ¿esta técnica es factible en condiciones razonables o es probable que incurra en listas negras u otros problemas?