Да, можно настроить проброс порта без использования белого IP-адреса. Существуют несколько методов, которые можно использовать для достижения прямого доступа между клиентами, находящимися за NAT провайдера.
Один из таких методов называется UDP Hole Punching или TCP Hole Punching. Он состоит в том, чтобы клиенты, находящиеся за NAT, отправляли запросы друг другу через NAT, и все эти запросы пробуждали NAT, чтобы они были перенаправлены на нужные порты. Этот метод требует активного участия обеих сторон (клиент1 и клиент2) и некоторого сервера-посредника, но не требует наличия публичных IP-адресов.
Процесс Hole Punching включает в себя следующие шаги:
1. Клиент1 и клиент2 подключаются к серверу посреднику и сообщают ему свои IP-адреса и порты.
2. Сервер-посредник сообщает каждому клиенту IP-адрес и порт другого клиента.
3. Клиент1 и клиент2 начинают отправлять сообщения друг другу через сервер-посредник.
4. Роутеры обоих клиентов видят эти пакеты и «просыпаются», открывая порты.
5. Теперь клиент1 и клиент2 могут обмениваться непосредственными пакетами, обходя сервер-посредник.
Однако Hole Punching не гарантирует 100% успеха, так как это зависит от особенностей конкретного NAT-устройства и настроек провайдера. Некоторые провайдеры или маршрутизаторы могут блокировать или ограничивать Hole Punching.
Возможно, самым надежным решением для обеспечения прямого доступа между клиентами, находящимися за NAT провайдера, без использования публичного IP-адреса, является использование серверов ретрансляции или TURN (Traversal Using Relays around NAT). Сервер TURN действует как посредник между клиентами и устанавливает прямые соединения между ними.
Однако использование TURN сервера может требовать определенных системных или дополнительных затрат ресурсов.
Важно отметить, что использование нелегальных методов обхода NAT, таких как порты UPnP или NAT-PMP, может нарушать политику сети и привести к потере доступа к сети или другим проблемам.
Информация об этих методах и их реализациях доступна в различных открытых источниках и коммьюнити, поэтому рекомендуется изучить их для подробной реализации в конкретной ситуации.