Ответ: Node js UDP
В целом тут непонятно о каком уровне сетевого взаимодействия мы тут говорим.
Если соединение установлено то оно будет с вполне конкретным клиентом. С другим клиентом будет своё соединение. Все пакеты что придут по соединению будут от одного клиента.
Вся проблема с NAT это невозможность хостить за ним сервер.
С точки зрения клиентов никакой разницы нет с тем что они за NAT.
Хостить сервер за NAT тоже возможно, но нужна вынесенная во вне часть для поиска клиентов, как баттлнет например.
__________________
|