Смотри как работают сети, используемые приложениями нодами для криптовалют и клиенты торрент, сомотреть как реализован dht
Выход за nat с помощью upnp, при использовании udp можно подключиться к 'чужому' каналу. Каждое устройство должно хранить список последних id:ip:port по каждому устройству или подмножеству, достаточному для связности, каждое устройство при выходе в сети обновляет информацию о себе и загружает оперативно обновление от других.
Первоначальный список ip адресов кто то по любому должен выдать, используя либо жестоко забитый домен в клиенте, где будет гарантировано запущена первая нода, собственно через dns первоначальный список нод так, называется dnsseed, а последствии эту главную ноду можно будет закрыть, а ip адреса в dns выдать о постоянных узлах сети
upd. .. либо спросить пользователя, например для подключения к сети уже рабочая нода должна выдать 'инвайт', например в виде qr-кода, в котором будет адрес эту ноды.
В локальной сети можно искать работающие ноды широковещательными рассылками или тупым перебором адресов, для рассылок нода должна их соответственно слушать.