Você está preocupado com como pode acessar livremente a internet sem muitas restrições e inseguranças de dados? Não se preocupe mais! Comece a hospedar seu servidor VPN usando o OpenVPN no Docker.
Com as tecnologias Docker e OpenVPN, você pode configurar e executar seu servidor VPN em pouco tempo. E neste tutorial, você aprenderá os fundamentos básicos de execução de um servidor OpenVPN hospedado em um contêiner Docker.
Fique ligado e mantenha seu servidor VPN seguro com o OpenVPN Docker!
Pré-requisitos
Este tutorial será uma demonstração prática. Se você acompanhar, precisará do seguinte:
- A Linux-based operating system (OS) – This tutorial uses Ubuntu v22.04, but other Linux distributions will work.
- Docker instalado e em execução – Este tutorial usa o Docker v20.10.17.
- Um dispositivo Android com o aplicativo OpenVPN Connect instalado – Este tutorial usa o Android v11 e o OpenVPN Connect v3.2.7.
Criando um Contêiner Docker para o OpenVPN
Containerizar é como empacotar o código e todas as suas dependências como uma unidade de software padrão para executar sua aplicação de forma rápida e confiável. Existem várias maneiras de criar um contêiner Docker OpenVPN. Você pode construir o contêiner do zero ou baixar um contêiner pronto do Docker Hub.
Mas neste tutorial, você usará um arquivo de imagem Docker OpenVPN existente. Contêineres prontos oferecem várias vantagens, pois são testados minuciosamente contra várias vulnerabilidades com o apoio de uma vasta comunidade de desenvolvedores. Além disso, esses contêineres ajudam a economizar tempo e eliminam a necessidade de reinventar a roda.
Para criar um contêiner Docker OpenVPN:
1. Abra seu terminal e execute o comando OVPN_DATA abaixo, que não fornece saída, mas define um nome de volume de dados como ovpn-data-test para a variável OVPN_DATA.
2. Em seguida, execute o seguinte comando docker volume create para criar um volume de dados com o nome que você definiu na variável $OVPN_DATA.
Este comando não fornece saída, mas cria um contêiner de volume de dados para o OpenVPN, onde todos os dados, arquivos de configuração e certificados são armazenados.
3. Por fim, execute o seguinte comando docker run para baixar e instalar a imagem Docker OpenVPN com o seguinte:
- Especifique o espaço de armazenamento (-v) dentro do contêiner que é separado do restante do sistema de arquivos do contêiner. Neste caso, a imagem Docker do OpenVPN é armazenada no diretório /etc/openvpn.
- Especifique o mecanismo de registro (–log-driver) que mantém as informações em execução dos contêineres e serviços (nenhum).
- Instrui o Docker a remover automaticamente (–rm) o contêiner quando ele já existir.
Certifique-se de substituir (YourPublicIP.com) pelo IP público ou nome de domínio (se tiver um) do seu servidor via protocolo UDP. Mas observe que você também pode usar o protocolo TCP.
O TCP é um protocolo orientado à conexão, enquanto o UDP é um protocolo sem conexão

Observe que se você pretende usar auto-hospedagem ou IP público, é necessário fazer o redirecionamento de porta no seu roteador/modem.
Protegendo o cliente OpenVPN com certificados
Você instalou com sucesso o cliente Docker do OpenVPN em sua máquina, então, parabéns! Mas antes de usar o OpenVPN, você deve configurar a configuração do cliente OpenVPN.
Só porque você está trabalhando com o OpenVPN não significa que você precise abrir seu servidor VPN para o mundo. Você precisará de certificados para proteger seu cliente OpenVPN.
1. Execute o comando docker run abaixo para gerar e obter os certificados da CA e do cliente. Este comando cria contêineres OpenVPN em execução (–it) a partir da imagem especificada dentro do contêiner principal.
Na maioria dos casos, a geração dos certificados do servidor CA leva tempo, dependendo dos recursos da máquina que você está usando.
Digite yes e pressione Enter, como mostrado abaixo, para iniciar o sistema OpenVPN PKI.

2. Em seguida, forneça e confirme uma nova senha para o certificado da CA e pressione Enter. Anote a senha em um local seguro, pois você precisará dela mais tarde ao configurar e gerar um certificado de cliente.

3. Defina um nome único para o certificado da CA e pressione Enter.

4. Agora, digite a frase de acesso da CA que você definiu na etapa dois para verificar se a solicitação corresponde à assinatura.

5. Digite sua frase de acesso novamente para gerar uma chave privada.

6. Em seguida, execute o comando abaixo para iniciar o serviço do servidor OpenVPN no Docker para configurar um cliente OpenVPN, onde:
- A opção -p define a porta (1194) que escuta e inicia a conexão entre o servidor e o cliente.
Você pode alterar a porta 1194 para atender às suas preferências se não estiver confortável em usar a porta padrão do OpenVPN.
- O argumento –cap-add=NET_ADMIN aplica as capacidades adicionais do Linux ao modificar as interfaces de rede que o Docker não concede por padrão.

7. Depois que a porta estiver definida, execute o comando docker run
abaixo para executar o seguinte:
- Gerar o certificado do cliente e baixar o arquivo de configuração do cliente (.ovpn) do contêiner Docker para o servidor host. O certificado gerado não possui senha, conforme especificado no argumento “no-pass” do comando.
- Defina o nome do arquivo do certificado do OpenVPN e a identificação do cliente como CLIENTAPP. O certificado é armazenado no diretório do usuário do host, não no contêiner Docker.
Insira sua frase secreta, conforme mostrado abaixo, para concluir a geração do certificado.

8. Em seguida, execute o comando abaixo para gerar e baixar o arquivo de configuração da conexão OpenVPN (ovpn_getclient) do contêiner para o servidor host.
9. Navegue até o diretório user/home no seu servidor host (máquina Linux) e transfira o arquivo .ovpn (CLIENTAPP.ovpn) para o seu dispositivo Android.
10. Por fim, inicie o aplicativo do cliente OpenVPN Connect no seu dispositivo Android.
Toque em BROWSE na guia FILE e selecione o arquivo .ovpn (CLIENTAPP.ovpn) que você transferiu para o seu dispositivo Android. Isso adicionará um novo perfil ao cliente OpenVPN Connect.

Após a conexão bem-sucedida, você verá o resultado abaixo.

Acessando a interface do usuário web do OpenVPN
Você está preocupado com a quantidade de comandos que teve que executar para acessar seu servidor VPN? Que tal experimentar uma interface de usuário baseada na web simples?
O OpenVPN oferece um conjunto de ferramentas de instalação e configuração baseadas na web que permitem a implantação rápida de soluções de acesso remoto VPN. O conjunto de ferramentas vem em um único pacote chamado servidor de acesso OpenVPN.
Para acessar a interface web do OpenVPN, você deve instalar o pacote:
1. Execute o seguinte comando docker pull para baixar e instalar o último contêiner Docker do OpenVPN (openvpn-as) do Linux Server Docker Hub (linuxserver).

2. Uma vez baixado, execute o comando docker create abaixo para criar um novo contêiner Docker chamado openvpn-as com o seguinte:
-v /home/docker/openvpn-as/config: /config
– Define o diretório para armazenar os arquivos de configuração.
--restart=always
– Garante que o contêiner sempre seja iniciado durante a inicialização do sistema. Você pode optar por não adicionar esse argumento se não quiser reiniciar o contêiner.
-e PGID=1001 -e PUID=1001
– Define o ID do usuário para eliminar problemas de permissão entre o servidor host e o contêiner.
-e TZ=Africa/Nairobi
– Especifica as informações de fuso horário.
- –net=host –privileged – Indica como o OpenVPN Access Server é executado no contêiner.

3. Em seguida, execute o comando docker start abaixo para acessar a interface web do OpenVPN através do contêiner Docker do OpenVPN Access Server que você criou no passo dois.

4. Por último, abra seu navegador favorito e navegue até a interface web do OpenVPN com seu endereço IP local (por exemplo, https://SeuIP:943/admin). Substitua SeuIP pelo endereço IP real do seu servidor.
Você será recebido com a página de login do OpenVPN Access Server se tudo der certo, como mostrado abaixo.
Insira admin e a senha para o Nome de usuário e Senha, e clique em Entrar para acessar o painel de controle do OpenVPN Access Server.
Observe que o nome de usuário e a senha padrão são admin e password, respectivamente. Você pode alterar as credenciais de acordo com suas preferências.

Após fazer login, você verá o painel de controle do OpenVPN Access Server abaixo.

Configurando DNS para uma conexão mais rápida e segura
Neste ponto, o seu OpenVPN Access Server está funcionando corretamente. Mas para melhorar o desempenho do seu servidor VPN, você deve configurar o DNS.
Para configurar o DNS, você deve acessar a interface web do servidor OpenVPN e atualizar as configurações de DNS com os endereços do Google ou do DNS de sua preferência. O Google oferece os servidores DNS mais rápidos disponíveis, que você utilizará no seu OpenVPN Access Server.
1. Clique em Configurações VPN (painel esquerdo) na guia CONFIGURAÇÃO do painel de controle do seu OpenVPN Access Server.
Role para baixo até a seção Configurações de DNS e habilite a opção Usar servidores DNS específicos pelos clientes, conforme mostrado abaixo.

2. Em seguida, atualize o Servidor DNS Primário (8.8.8.8) e o Servidor DNS Secundário (8.8.8.4) com os endereços do DNS do Google como abaixo e clique em Salvar Configurações para salvar as alterações.

3. Após salvar as alterações, clique em Atualizar Servidor em Execução para reiniciar o servidor e que as alterações tenham efeito.

4. Agora, acesse o Servidor de Acesso OpenVPN (por exemplo, https://SeuIP:943/admin) em sua máquina Linux. Substitua SeuIP pelo endereço IP do seu servidor. Se a configuração estiver correta, você verá a mesma página abaixo.
Faça login com as credenciais padrão (admin e senha) para nome de usuário e senha.

5. Clique nos ícones de qualquer plataforma para baixar o aplicativo cliente e clique em Yourself (perfil bloqueado pelo usuário) para baixar o arquivo .ovpn do cliente.

6. Por fim, execute o Cliente OpenVPN que você baixou e importe o arquivo .ovpn como você fez na última etapa de “Securing OpenVPN Client with Certificates”, conforme mostrado abaixo.

Conclusão
Hospedar seu próprio servidor VPN nunca deve ser uma tarefa complexa, muito menos garantir a conexão do seu servidor. Felizmente, o OpenVPN Docker está logo ali para salvar o dia. E neste tutorial, você aprendeu a instalar, configurar e configurar o OpenVPN usando o Docker no Ubuntu. Você também aprendeu como garantir o acesso ao OpenVPN em um contêiner Docker com o OpenVPN CA e os certificados do cliente.
Além de acessar seu servidor OpenVPN por meio de uma interface de linha de comando, agora você tem uma maneira visual de fazer isso por meio da interface web do OpenVPN Access Server. Você percebeu uma implantação rápida de VPN gerando arquivos de configuração do cliente para os aplicativos de cliente OpenVPN.
Por que não aproveitar esse conhecimento recém-descoberto criando serviços de túnel VPN para seus aplicativos usando o WireGuard VPN? Explore o mundo de possibilidades ilimitadas usando serviços de VPN auto-hospedados!