Existe alguma VPN P2P distribuída / mesh-like?

11

Eu tenho minha VPN pessoal, conectando vários dispositivos para que eles possam ter endereços IP fixos em uma rede sempre acessível (desde que estejam conectados à Internet). Isso é necessário para mim, já que meus dispositivos podem estar em movimento, em redes diferentes e imprevisíveis (celular de rede 4G, laptop na universidade, servidor doméstico em casa) e eu tenho um servidor de backup que precisa se conectar a eles (e às vezes , Eu também tenho que).

Eu também estou pensando em instalar algo como o syncthing, que também pode se beneficiar de latências mais baixas e nós mais próximos.

Além disso, sou preguiçoso e gosto de reproduzir / pausar a música que está sendo reproduzida no meu servidor doméstico a partir do meu smartphone, que pode não estar na mesma rede (deveria, mas nem sempre é o caso).

Isso significa que tenho um servidor OpenVPN e o cliente openvpn em execução em todos os dispositivos. Todos eles se conectam ao servidor e qualquer tráfego de dois nós tem que passar pelo servidor, que é relativamente distante, e tem um throughput muito limitado. Isso significa latência e lentidão. E quando pressiono o botão "Pause", pode levar até 10 segundos para pausar a música. Mesmo se ambos os nós estiverem na mesma LAN (já que eles falam através da VPN). Meh.

O ideal seria que houvesse uma maneira de criar uma VPN capaz de encontrar caminhos mais curtos entre os nós e tentar conectá-los diretamente. Algo parecido com o modo como o Skype trabalhava com supernós?

Enquanto o servidor está longe daqui, um dos nós tem um endereço IP público e pode ser alcançado pelos outros nós. Ele poderia funcionar como um servidor deles - mesmo que não seja o servidor em si, embora seja uma escolha melhor para alguns nós.

Eu imagino que eu poderia fazer algo parecido com executar um cliente e um servidor, e conectá-los nesse nó, mas isso não parece elegante. É hackish, complica o PKI, divide a VPN. Eu não gosto disso.

Embora eu possa usar uma VPN simples como PPTP que realmente não garante que as comunicações sejam seguras, decidi que não queria me incomodar em configurar o Bacula para criptografar as conexões entre os nós, o que significa que o tráfego é simples dentro da rede. VPN O encapsulamento VPN é a segurança somente , por isso não deve ser fraco. No entanto, qualquer coisa que resolva a VPN do tipo "malha" sem confidencialidade já seria um bom começo - eu me certificaria de que o tráfego começou a passar por SSL / TLS.

Isso parece um problema que outra pessoa pode ter tido e resolveu agora. Existe algo assim?

Existe também a chance de eu estar olhando para o caminho errado, mas até agora parece a melhor abordagem para garantir que eu possa sempre conectar-me a qualquer um dos meus dispositivos remotamente, não importa onde eu esteja, ou eles estão.

    
por Valmiky Arquissandas 27.04.2015 / 03:05

3 respostas

5

Não tenho certeza se isso satisfaz completamente as suas necessidades, mas provavelmente você deve dar uma olhada no tinc: link . Ele corresponde muito de perto à malha da rede orquestrada por um servidor central, como você descreveu, mas não tenho certeza se conseguirá descobrir pares em sua rede local.

    
por 27.04.2015 / 11:35
3

A vpn de malha mais fácil que eu encontrei e usei é PeerVPN ( link ).

Recursos do PeerVPN

  • Suporte a tunelamento Ethernet usando dispositivos TAP.
  • suporte a IPv6.
  • Topologia de rede de malha completa.
  • Constrói automaticamente túneis através de firewalls e NATs sem mais configuração (por exemplo, encaminhamento de porta).
  • Suporte para criptografia e autenticação de chave compartilhada.

A configuração é simples .. um arquivo de configuração que você edita e para vpn de malha básica existem apenas 6 configurações que você precisa especificar para ver o tutorial PeerVPN, que é de apenas 1 página: link

A chave de criptografia / autenticação do PSK pode ter até 512 bits (64 bytes).

Configurei o peervpn até agora em vários servidores remotos e ele funciona muito bem. Além disso, não há nenhum requisito para um "super-node", como você pode encontrar em outras implementações de vpn de malha.

Os nós no peervpn aprendem sobre os nós recém-adicionados à VPN automaticamente, sem necessidade de alterar as configurações. O tráfego de nó para nó também é direto e não através de algum hub central de VPN.

Nota: leia o arquivo padrão peervpn.conf para aprender sobre muitas outras opções que você "pode" aproveitar. Mas para a malha básica vpn como afirmei você só precisa definir 6 opções (nome da vpn, PSK, endereço IP ponto final do túnel local, interface "nome" você quer ver / usar no seu sistema linux e número da porta para usar para "that" vpn ... note que você pode usar o peervpn para várias VPNs independentes em um servidor)

    
por 14.05.2015 / 13:51
0

Eu tive exatamente o mesmo problema anos atrás. Eu tinha ~ 30 escritórios que todos precisavam para se comunicar diretamente, mas eles foram configurados em uma configuração 'hub-and-spoke'. Eu escrevi uma ferramenta em Python para gerar automaticamente o número n x (n-1)/2 de conexões no OpenVPN entre os escritórios. Mais tarde, acrescentei suporte ao roteamento RIP entre os sites após um problema bizarro da Comcast, em que um escritório podia ver todos os outros, mas não o escritório principal. Por fim, adicionei a capacidade de gerar automaticamente DNS reverso para os IPs de link e a capacidade de enviar os pacotes para cada roteador.

Dê uma olhada em OpenMesher . Só esta manhã eu decidi fazer um projeto para o próximo projeto. Espero que ele faça o que você quer. Se não, sinta-se à vontade para enviar um problema e eu ajudarei.

    
por 03.12.2016 / 18:37