i když se říká, že na některé NATy UDP hole punching nefunguje
To je velmi prosté. Vezměte si svůj příklad. Na jaký veřejný port se odesílají packety? Na stejné číslo, jako má port soukromý. A to vše funguje jenom proto, že rozumný NAT číslo odchozího portu nemění.
A teď si představte, že za stejným NATem se najde stejný chytrák jako vy. Pokud je NAT chytrý, tak stále ještě může oběma lidem nechat sdílet veřejný port, protože se bude lišit cílová IP adresa. Ale kdyby se celá situace opakovala i za druhým NATem, nebude možné udržet mapování a jeden z NATů změní odchozí port. Přesně tohle je automaticky neřešitelná situace.
Problém by bylo možné obejít volbou jiného portu. Ale to by se nejprve obě strany musely dohodnout. A na to už je třeba třetí strany s veřejnou adresou.