A maioria das redes de sobreposição, como headscale/netbird/netmaker/zerotier-moon/nebula, exige um servidor dedicado ou um nó super para mediar a troca de informações dos clientes, bem como o encaminhamento de pacotes. Mas essas funções poderiam ser descarregadas para outros serviços públicos.
A troca de informações poderia ser feita com bots IRC/xmpp/mqtt.
Hole punching/encaminhamento poderia ser feito por servidores stun/turn públicos.
Existe alguma solução assim para que os clientes possam formar uma rede de sobreposição em malha sem auto-hospedagem? Mais especificamente, preciso de uma solução de rede de sobreposição que:
não dependa de um servidor central dedicado (incluindo auto-hospedado), não use DHT
use wireguard como canal de dados de suporte
permita comunicação entre dois hosts atrás de NATs diferentes.
Só isso. Netbird/headscale/netmaker é muito próximo, mas requer servidor central. Netmaker realmente usa mqtt para sinalização, mas ainda precisa de um servidor central, para gerenciamento de sub-redes/contas, etc.
Projetos como isto não precisam de servidor central, mas não usam wireguard.
Existe uma alternativa ao headscale na verdade, chamada Tailscale. É muito bom, funciona de forma mágica sem precisar auto-hospedá-lo. Me pergunto por que o headscale não foi simplesmente transformado em tailscale, assim não precisaríamos hospedar o servidor.
Para nebula, também há uma alternativa usando a mesma tecnologia, chamada Defined Networking. É nebula, mas você não precisa de um servidor para isso, funciona como mágica.
Mesmo o Netbird tem uma alternativa “sem servidor”, chamada Netbird. O nome é confuso, mas não se preocupe, é tão fácil de usar quanto os demais.
Todos esses funcionam de forma mágica, sem servidores públicos necessários. Me pergunto por que ninguém descobriu esse tipo de software.
PS: sério, cara… o que você está pedindo. Serviços que não usam infraestrutura auto-hospedada, mas servidores públicos, mas na verdade não, mas sim?
Acho que o que o OP quer é um grupo do WhatsApp. E, fazer com que todos publiquem seus endereços IP públicos no chat do grupo. Então, todos podem criar túneis para qualquer um no grupo. Isso atende aos requisitos, já que o WhatsApp é baseado em um MQTT modificado
Mas falando sério, o OP realmente precisa estudar como a rede de computadores funciona de verdade. Em teoria parece tão fácil, apenas conectar hosts por IP e porta. Então você precisa lidar com questões de NAT, e provavelmente precisar de um servidor TURN em algum lugar. Leia o protocolo BitTorrent para entender a complexidade da conexão P2P em uma rede pública.
Re #1 - cada um desses é um protocolo inseguro. Por que alguém gostaria de usar esses ao invés de protocolos estabelecidos e seguros? E o que você quer dizer com usar “bots” nesse contexto? Que bot? Hospedado onde?
Você basicamente está procurando por tailscale. Se quiser hospedar o servidor proxy ao invés de confiar no/trust no tailscale, pode hospedar o headscale.
O objetivo dessas sobreposições é exatamente isso - elas existem sobre os protocolos de transporte seguros existentes e fornecem conectividade ponta a ponta aprimorada onde outras soluções podem não funcionar.
Acho que ajudaria entender qual problema você está tentando resolver.
Além disso, como você é criativo o suficiente para considerar irc/xmpp como transporte, você está no caminho certo. Sua solução está errada, mas você vai descobrir isso em breve. Basta começar a construir coisas (e não tenha medo de falhar, essa faz parte do processo) e se encontrar alguma dificuldade, entre na sala de irc do hackerspace local e pergunte