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, pois meus dispositivos podem estar em movimento, em redes diferentes e imprevisíveis (celular em 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).
Também estou pensando em instalar algo como sincronização, 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 servidor doméstico do meu smartphone, que pode não estar na mesma rede (deveria, mas nem sempre é o caso).
Isso significa que eu tenho um servidor OpenVPN e o openvpn
cliente em execução em todos os dispositivos. Todos eles se conectam ao servidor, e qualquer tráfego de dois nós precisa passar pelo servidor, que é relativamente distante e tem uma taxa de transferência muito limitada. Isso significa latência e lentidão. E quando pressiono o botão "Pausar", pode levar até 10 segundos para pausar a música. Mesmo se os dois nós estiverem na mesma LAN (já que eles falam pela VPN). Meh.
Idealmente, deve existir alguma maneira de criar uma VPN capaz de encontrar os caminhos mais curtos entre os nós e tentar conectá-los diretamente. Algo como a forma como o Skype trabalhou com supernós?
Enquanto o servidor estiver longe daqui, um dos nós tem um endereço IP público e pode ser acessado pelos outros nós. Ele poderia atuar como um servidor a partir deles - mesmo que não seja o próprio servidor, embora seja uma escolha melhor para alguns nós.
Eu imagino que eu poderia fazer algo semelhante para executar um cliente e um servidor, e conectá-los nesse nó, mas isso não parece elegante. É hackish, complica a PKI, divide a VPN. Eu não gosto disso
Embora eu pudesse usar uma VPN simples como PPTP que realmente não garante que as comunicações sejam seguras, decidi que não queria incomodar a configuração do Bacula para criptografar as conexões entre os nós, o que significa que o tráfego é simples dentro da VPN. O encapsulamento da VPN é a única segurança, portanto 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 garantiria que o tráfego começasse a passar por SSL / TLS.
Parece um problema que outra pessoa poderia ter resolvido até agora. Existe algo assim?
Há também a chance de eu olhar para isso da maneira errada, mas até agora parece a melhor abordagem para garantir que eu possa sempre conectar-me remotamente a qualquer um dos meus dispositivos, não importa onde eu esteja ou eles estejam.
fonte
Respostas:
Não tenho certeza se ele atende completamente às suas necessidades, mas você provavelmente deve dar uma olhada no tinc: http://www.tinc-vpn.org/ . Corresponde muito à rede de malha orquestrada por um servidor central, como você descreveu, mas não tenho certeza se será bem-sucedido em descobrir pares na sua rede local.
fonte
O vpn de malha mais fácil que encontrei e usei é o PeerVPN ( http://www.peervpn.net/ ).
Recursos PeerVPN
A configuração é simples .. um arquivo de configuração que você edita e para o vpn de malha básico, existem apenas 6 configurações que você precisa especificar, consulte o tutorial do PeerVPN, que tem apenas 1 página: http://www.peervpn.net/tutorial/
A chave de criptografia / autenticação PSK pode ter até 512 bits (64 bytes).
Eu configurei o peervpn até agora em vários servidores remotos e funciona muito bem. Além disso, não há requisito para um "super nó", como você pode encontrar em outras implementações de malha vpn.
Os nós no peervpn aprendem sobre os nós adicionados recentemente à VPN automaticamente, sem a necessidade de alterar as configurações. O tráfego nó a nó também é direto e não através de algum hub vpn central.
Nota: leia o arquivo peervpn.conf padrão para aprender sobre muitas outras opções das quais você "pode" tirar proveito. Mas para a VPN básica de malha, como afirmei, você só precisa definir 6 opções (nome da VPN, PSK, endereço IP do ponto final do túnel local, "nome" da interface que você deseja ver / usar no seu sistema Linux e número da porta a ser usado. vpn "that" ... note que você pode usar o peervpn para várias VPNs independentes em um servidor)
fonte
Eu tive exatamente o mesmo problema anos atrás. Eu tinha ~ 30 escritórios que todos precisavam ser capazes de se comunicar diretamente, mas eles foram configurados em uma configuração de 'hub-and-spoke'. Eu escrevi uma ferramenta em Python para gerar automaticamente o
n x (n-1)/2
número de conexões no OpenVPN entre os escritórios. Mais tarde, adicionei 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. Finalmente, 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 no OpenMesher . Ainda nesta manhã, decidi tirar o pó para um próximo projeto. Espero que faça o que você quer. Caso contrário, sinta-se à vontade para enviar um problema e eu ajudarei.
fonte