Colocando túneis L2 no OpenVPN



Recentemente, fui convidado a descobrir como configurar um túnel L2 para uma ponte entre duas LANs remotas e fiquei surpreso com a quantidade de soluções convenientes que consegui encontrar. Anteriormente, eu não estava interessado neste tópico e acreditava ingenuamente que qualquer protocolo VPN adequado pode capturar pacotes de transmissão e encaminhá-los por um túnel L3 comum. Infelizmente, não existem soluções universais prontas para uso. Existem vários protocolos e ferramentas para eles, a maioria dos quais trabalha em condições muito limitadas ou é preterida. Vou compartilhar a opção mais agradável ainda.



Por que exatamente L2?



Eu fiz essa pergunta antes de mais nada: raramente trabalho com periféricos de rede, e me pareceu que, por um longo tempo, todo o equipamento já pode andar no L3. Não importa como: alguém precisa ter acesso a impressoras de escritório, alguém a gravadores de vídeo e alguém só quer morrer com um amigo em um duelo de LAN - sem sair de casa, é claro. Também muito atraente é a idéia de pastas compartilhadas / de rede no escritório, acessíveis em casa, especialmente durante o período de remoção geral.



Ao mesmo tempo, entre os desenvolvedores de clientes VPN, as pontes L2 são, por algum motivo, consideradas algo como um capricho estranho de um ou dois por cento dos usuários, o que geralmente não é necessário para ninguém. A situação é bem diferente nas redes industriais, onde há muitos equipamentos desatualizados ou pouco compatíveis, e o conceito L2VPN (representado por várias outras abreviações) é implementado no nível da rede e do equipamento provedor.



Tecnologia



Existem muitos deles, e todos eles trabalham com estranheza e limitações:



  • Por exemplo, o L2TP (Layer 2 Tunneling Protocol) deve, como o nome sugere, oferecer suporte ao OSI L2, incluindo o encaminhamento de broadcast. Mas não, o pacote L2TP + IPsec geralmente aceito não permite redes de ponte no nível L2!
  • PPTP - tornou-se um meme devido a grandes vulnerabilidades, agora está de alguma forma corrigido, mas não tem nada a ver com L2.
  • MPLS — «» . , RouterOS ( , ).
  • PPPoE PPPoEoE , . PPPoE , Cisco.
  • EoIP L2VPN made right, , . PPTP, GRE, NAT.


E então fiquei surpreso ao descobrir que uma verdadeira ponte Ethernet pode ... OpenVPN!



Geralmente, usamos uma VPN pessoal ou de trabalho, para muitos geralmente é ativada permanentemente para ignorar bloqueios (embora essa tendência esteja diminuindo após a remoção do bloqueio do telegrama). Nas minhas tarefas de trabalho, também uso hosts de desenvolvimento remoto o tempo todo e quase sempre uso o OpenVPN. Durante muito tempo, não entendi por que era necessário um monte de OpenVPN Access Server + OpenVPN Connect no cliente. Para minhas tarefas, a versão clássica com edição manual de configurações sempre foi suficiente para mim, e os painéis de administração e a GUI dedicados pareciam deslocados em um thin client fino. Porém, a interface para configurar a ponte é muito mais conveniente do que as folhas de configurações no terminal, embora nem tudo seja perfeito.



Configurando



O fato é que o Access Server (AS) saiu como um produto pago e bastante caro, então eles cuidadosamente colocaram todos os tipos de pães nele, se o comprassem. Assim, um submenu apareceu no painel de administração da web, permitindo selecionar o modo de rede (ponte L2 / roteamento L3) e, depois de um tempo, ficou bêbado silenciosamente a partir daí pela mesma razão: “ninguém precisa disso”. No entanto, a própria funcionalidade de ponte e os scripts correspondentes não foram excluídos e ainda podem ser personalizados.



Instalação



Precisamos de um servidor ou máquina virtual. A imagem está na página de download e continuaremos analisando o caso com a instalação em um servidor no Ubuntu 18.04:



apt update && apt -y install ca-certificates wget net-tools gnupg
wget -qO - https://as-repository.openvpn.net/as-repo-public.gpg | apt-key add -
echo "deb http://as-repository.openvpn.net/as/debian bionic main">/etc/apt/sources.list.d/openvpn-as-repo.list
apt update && apt -y install openvpn-as


Após a instalação, o servidor aumentará por si próprio, você verá a seguinte mensagem:



+++++++++++++++++++++++++++++++++++++++++++++++
Access Server 2.8.4 has been successfully installed in /usr/local/openvpn_as
Configuration log file has been written to /usr/local/openvpn_as/init.log

Access Server Web UIs are available here:
Admin  UI: https://185.209.31.165:943/admin
Client UI: https://185.209.31.165:943/
+++++++++++++++++++++++++++++++++++++++++++++++


Imediatamente você precisa especificar a senha da conta de administrador:



passwd openvpn


Em seguida, você pode abrir o painel de administração no navegador (em: 943 / admin, como descrito acima), efetue login como usuário do openvpn com a senha especificada e configure o servidor.







O AS é gratuito para uso por dois usuários, então você pode adicioná-lo apenas por US $ 18 / mês por usuário, portanto, é melhor projetar imediatamente seus processos para usar o encapsulamento por dois clientes.



Ponte de volta



cd /usr/local/openvpn_as/scripts
./sacli --key "von.general.osi_layer" --value "2" ConfigPut
./sacli start


Se tudo correu bem, a saída json conterá o seguinte:



{
 "errors": {},
 "last_restarted": "Thu Jul  2 00:07:37 2020",
 "service_status": {
   "api": "on",
   "auth": "on",
   "bridge": "on",
        ...
    }
}


No painel do administrador, o status "Camada OSI: 3 (roteamento / NAT)" será alterado para "2 (ponte)"



Nota: nas versões recentes, as informações sobre o L3 podem permanecer com a ponte ativada. Por que - eu não entendi, seguro a esse respeito versões em torno de 2,4


Na verdade, esse know-how termina e você só precisa configurar o servidor, criar um segundo usuário através da mesma interface da web e efetuar login na página do usuário na porta 943 (sem / admin). Haverá links para fazer o download de clientes OpenVPN Connect para todas as plataformas com uma configuração inicializada para conexão (exceto para aplicativos móveis, você terá que dirigir o endereço manualmente e, em seguida, tudo será instalado automaticamente).







Após uma conexão e ponte bem-sucedidas dos clientes, um túnel L2 com tráfego TCP / UDP estará disponível. Os clientes podem atuar como um volume para a rede interna, tudo isso também é configurado no painel de administração.






All Articles