Sto sviluppando un'applicazione P2P che sfrutterà la perforazione UDP per connettere due peer dietro NAT.
Quando si tratta di connessioni tra un cono e un NAT simmetrico e imprevedibile, tuttavia, la perforatura non è così banale come potrebbe essere con le connessioni tra i coni NAT. L'unico modo che ho trovato è quello di provare il più possibile finché non riesco a trovare una porta corretta.
La mia strategia funziona come segue:
- Apri un numero elevato di porte sul lato simmetrico e invia i pacchetti alla porta NAT del cono.
- Sul lato cono, invia i pacchetti alle porte casuali fino a quando i peer non riescono a connettersi.
Avendo un NAT simmetrico e un cono a portata di mano, ho fatto il seguente esperimento:
- Ha aperto 32 porte sul lato simmetrico
- Inviato 64 pacchetti ogni 0,1 secondi dal lato cono al NAT simmetrico su porte casuali
In un paio di secondi riesco sempre a connetterti. Tuttavia, mi chiedevo se alcuni firewall e NAT potrebbero utilizzare una qualche forma di blacklist in queste circostanze. Ad esempio, è possibile che un NAT che deve rilasciare diversi pacchetti su porte diverse dalla stessa sorgente per un po 'di tempo fissi la sorgente nera?
Ho provato a scoprirlo in giro e ho scoperto che a volte alcune forme di blacklisting possono essere usate se il NAT è sotto attacco DoS. Tuttavia, questa tecnica di perforazione è da 4 a 6 ordini di grandezza meno pesante di un tipico attacco DoS.
Quindi questa tecnica è fattibile in condizioni ragionevoli o sono suscettibile di incorrere in blacklist o altri problemi?