Если совсем все плохо, можно попробовать
hole punching, шансы есть.
Если на одном роутере (лучше в той локальной сети где будет listen подключения) включен uPnP (обычно на потребительских роутерах включено по умолчанию), то можно с помощью утилит настроить временное перенаправление портов и подключаться напрямую. Например под linux утилиты apt-get install miniupnpc создаем проброс порта:
upnpc -a <локальный_IP> <локальный_порт> <внешний_порт> TCP
наличие и поддержку
upnpc -s
Адрес узнать чем то типа api.ipify.org или посмотреть на роутере (например открываешь админку роутера, страницу где видно ip адрес, копируешь из консоли разработчика браузера curl команду загрузки этой страницы и вытаскиваешь ip адрес любым удобным тебе способом, хоть регулярками хоть приложением из трех строчек)
этот адрес и порт нужно как то сообщить тому кто будет подключаться.
Есть еще NAT-PMP (я хз, на сколько роутеры это умеют, я вообще это узнал, общаясь с ИИ)
sudo apt-get install natpmpc
проброс порта
natpmpc -a <порт> <порт> TCP 3600