Como você pode ver, conectar-se ao seu sistema não é tão simples. A essência do seu problema é que mesmo você pode fazer o registro de DNS (o que torna elegível para os servidores encontrarem um ao outro), a conexão ip real entre suas máquinas é ainda mais impossível.
Existem várias soluções para o seu problema.
Os mais simples eram se você tem algum tipo de servidor central (com um IP fixo público) e o servidor VPN é executado nele. Em seu rasperry pi, assim como em seus outros clientes, apenas um cliente VPN é executado. Este servidor funcionou como um gateway intermediário entre seus rasperrys e outros dispositivos.
Raspberry -> Central GW machine <- Your any other system
Resolveu tanto o problema do registro DNS quanto o problema do contato IP.
Do ponto de vista da rede, ninguém se conectou ao seu rasperry. Apenas seu framboesa conectou fora ao seu GW central.
O OpenVPN é uma solução muito bonita para isso.
Também existem soluções mais complicadas. Por exemplo, você poderia de alguma forma dizer ao seu rasperry para conectar fora para seus clientes e fazer o vpn sobre isso. Mas não funcionou se seus clientes também estavam por trás de um NAT, o que é bastante comum atualmente, especialmente em redes móveis.
Ou você pode usar tor também para encontrar servidores intermediários atrás de você. Sim, tor não é realmente uma ferramenta de crackers, pode ser usada para tarefas regulares também. Mas não é realmente confiável e muito lento.