Дайте мне посмотреть, если у меня есть это прямо. У вас есть два клиента, которые находятся за NAT и сервер, который не находится за ним. Оба клиента подключаются к серверу и получают информацию об общедоступном IP-адресе другого. Поскольку у каждого из них теперь есть пункт назначения, они отключаются от сервера и подключаются друг к другу напрямую через свои соответствующие блоки NAT. Это твое мышление? Если это так, у меня могут быть плохие новости для вас.
Чтобы это работало вообще, в каждой конфигурации NAT должны быть настроены выделенные порты для перенаправления хотя бы одного внешнего порта на предварительно определенный внутренний IP-адрес / номер порта. При общей настройке NAT исходящие запросы соединения будут перехвачены NAT, который откроет временный внешний порт. Этот номер внешнего порта используется только для связи с этим одним исходным адресом и портом. Когда соединение закрыто, этот внешний порт исчезает и будет переназначен для другого соединения позже. Поэтому, если оба клиента общаются с сервером, а затем отключаются, информация, отправленная им сервером, теперь недействительна.
Предполагая, что вы как-то обошли это, должно быть довольно просто просто подключить обоих клиентов к «внутренней» стороне NAT, а серверный ПК - к «внешней» стороне. Тогда вы должны надеяться, что ваш NAT-блок достаточно умен, чтобы зацикливать пакеты с одного локального внешнего порта на другой. Я уверен, что netfiler мог бы быть настроен таким образом, но я сомневаюсь, что домашний интернет-маршрутизатор (например, Linksys, NetGear и т. Д.) Сделает это с полки.