Vamos instalar o servidor Open VPN em uma máquina Linux com o Ubuntu. Além disso, vamos utilizar o TLS Crypt v2 possibilita o fornecimento de uma chave tls-crypt específica para cada cliente.
Ao final do artigo, apresentaremos também a instalação do Open VPN no cliente e a configuração do cliente VPN.
Instalação do Open VPN
Inicialmente vamos instalar o openvpn. Dependendo da data da instalação o repositório já pode conter a versão openvpn ou maior.
Em nosso caso, ainda não está no repositório conforme podemos verificar.
sudo apt-get update && sudo apt-get install openvpn
sudo apt install easy-rsa
Verificando a Versão do Open VPN
Podemos observar que até o momento a versão que está no repositório do ubuntu é a 2.4.7. No entanto, precisamos da versão 2.5 ou maior.
Para verificar a versão pode usar o comando :
openvpn --version
Se a sua versão de OpenVPN é menor que 2.5, click aqui para instalar a versão mais nova.
Criando um diretório para o easy-rsa
Agora vamos criar um diretório para o ease-rsa e vamso criar links simbólicos. Usaremos links simbólicos para que futuras atualizações possam ser replicadas para nossas configurações.
Inicialmente vamos sair do modo root do terminal. Para isso, podemos dar o comando exit.
exit
Agora vamos criar o diretório easy-rsa
mkdir ~/easy-rsa
Criando o link simbólico para /usr/share/easy-rsa/* .
ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Agora, vamos acessar o diretório que criamos e vamos verificar se os links simbólicos já estão lá.
cd ~/easy-rsa/
ls
Inicializando o PKI
Agora vamos inicializar o PKI dentro do diretório que acabamos de criar.
cd ~/easy-rsa/
./easyrsa init-pki
Veremos uma mensagem como a mostrada abaixo. Essa mensagem mostra que estamos prontos para criar a CA Certificate Authority. A CA será a Autoridade Certificadora responsável por validar os certificados.
Observação: Neste tutorial, estamos criando a CA dentro do servidor VPN por uma questão de simplicidade e praticidade.
No entanto, a CA pode estar em um outro servidor separado.
Além disso, existem argumentos relacionados à segurança que pode motivar a separar um servidor CA somente para ter a função de validar certificados.
Criando a CA Certificate Authority
Ao criar a CA teremos a opção de preencher alguns campos. O campo principal é o common name .
Dessa forma esse campo common name será o único que vamos preencher nessa configuração.
O nosso campo common name terá o valor “VPN_CA”. No entanto, você pode usar outro nome.
Além disso vamos usar a opção “nopass” para evitar que tenhamos que usar password quando formos assinar um certificado.
Se desejar, você pode optar por requisitar um password toda vez que assinar, apenas retire a opção “nopass”.
Para criar a CA, vamos usar o comando abaixo:
./easyrsa build-ca nopass
Após o comando, teremos uma mensagem semelhante a abaixo:
“... CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/redes/easy-rsa/pki/ca.crt ...“
Podemos entrar no nosso diretório para verificar os novos arquivos:
cd ~/easy-rsa/pki
ls
Podemos verificar que existe agora um arquivo chamado ca.crt . Futuramente, vamos utilizar esse arquivo.
Podemos também verificar a chave privada da nossa CA. Usando o comando abaixo:
ls ~/easy-rsa/pki/private
Criando a chave do servidor OpenVPN
Para criar a chave do servidor OpenVPN, vamos entrar no diretório ~/easy-rsa/ e usar o comando para cirar a chave:
cd ~/easy-rsa/
./easyrsa build-server-full vpn_server nopass
Após digitar esse comando, você verá um resultado semelhante ao apresentado na figura abaixo:
Agora ao listar o conteúdo do diretório ~/easy-rsa/pki/private/ podemos ver que temos uma nova chave = “vpn_server.key”.
Podemos também verificar o certificado criado para o servidor VPN. Para isso, podemo usar o comando abaixo:
ls ~/easy-rsa/pki/issued
Assinando o certificado do servidor OpenVPN
Agora precisamos assinar o certificado do servidor Open VPN.
Então, para assinar o certificado do servidor Open VPN , vamos entrar no diretório ~/easy-rsa e em seguida digitar o comando abaixo:
cd ~/easy-rsa/
./easyrsa sign-req server vpn_server
Após o comando veremos um resultado semelhante ao da figura abaixo:
Você terá que digitar yes e pressionar ENTER.
Gerando o parâmetro Diffie hellman
Para gerar os parâmetros Diffie hellman vamos para o diretório ~/easy-rsa/ e em seguida vamos executar o comando para gerar o DH.
cd ~/easy-rsa/
./easyrsa gen-dh
A figura abaixo mostra o resultado após executar o comando para gerar o Diffie hellman.
Criando um TLS Crypt v2 para o OpenVPN
Usaremos o TLS Crypt v2 possibilita o fornecimento de uma chave tls-crypt específica para cada cliente.
Dessa forma, podemos reduzir os danos caso a chave tls-crypt de um cliente venha a ser comprometida.
Isso porque, se um cliente tivesse sua tls-crypt exposta, apenas a tls-crypt desse cliente representaria um risco de segurança.
Vale lembrar que --tls-auth
e tls-crypt
usam uma chave de grupo pré-compartilhada, que é compartilhada entre todos os clientes e servidores em uma implantação OpenVPN.
Dessa forma, se algum cliente for comprometido, o invasor terá acesso a essa chave compartilhada e consequentemente prejudicará a segurança.
Criando a chave TLS Crypt v2 para o servidor Open VPN
Agora vamos criar a chave TLS Crypt v2 que será usada pelo servidor Open VPN. Assim, inicialmente vamos entrar no diretório “~/easy-rsa/pki/”.
cd ~/easy-rsa/pki/
Depois disso, vamos digitar o comando abaixo:
openvpn --genkey tls-crypt-v2-server private/vpn_server.pem
Caso queira, você pode verificar que foi criada uma chave vpn_server.pem no diretório “~/easy-rsa/pki/private/”.
Você pode verificar usando o comando :
ls ~/easy-rsa/pki/private/
Configurando o servidor Open VPN
Inicialmente vamos para o diretório /etc/openvpn/server, usaremos o comando:
cd /etc/openvpn/server
Em seguida, vamos criar um arquivo com o nome de server.conf.
sudo nano server.conf
Nesse arquivo, vamos adicionar as linhas de configuração abaixo:
#--------------------
#VPN port
port 1194
#VPN over UDP
proto udp
# "dev tun" will create a routed IP tunnel
dev tun
ca ca.crt
cert vpn_server.crt
key vpn_server.key
tls-crypt-v2 vpn_server.pem
dh dh.pem
#network for the VPN
server 10.8.0.0 255.255.255.0
push "redirect-gateway autolocal"
# Maintain a record of client <-> virtual IP address
# associations in this file.
ifconfig-pool-persist /var/log/openvpn/ipp.txt
# Ping every 10 seconds and assume client is down if
# it receives no response in 120 seconds.
keepalive 10 120
#cryptographic cipher
cipher AES-256-GCM
#avoid accessing certain resources on restart
persist-key
persist-tun
#log of current connections
status /var/log/openvpn/openvpn-status.log
#log verbose level (0-9)
verb 4
# Notify the client when the server restarts
explicit-exit-notify 1
#-----------------------------------------
Explicando as linhas de configuração do server.conf
Agora, vamos descrever as linhas de configuração usadas. Inicialmente temos a linha “port 1194” que indica a porta que o servidor usará para o OpenVPN.
Depois disso, temos a linha “proto udp” que indica que nossa VPN vai usar o protocolo da camada de transporte UDP.
Em seguida, temos a linha “dev tun” que indica que usaremos um túnel de rotas IP para a VPN.
Depois disso, vamos começar a indicar o certificado da autoridade certificadora usando a linha “ca ca.crt“, nesse caso o arquivo é o “ca.crt”.
Neste exemplo, a autoridade certificadora também está na mesma máquina do servidor VPN.
Agora vamos informar qual é o nosso arquivo que tem o certificado do servidor VPN = “cert vpn_server.crt”.
Lembre-se que criamos nosso certificado com o nome vpn_server.crt. Se você usou outro nome, lembre-se de alterar para o nome que você usou.
A próxima linha “key vpn_server.key” indica a chave que será usada pelo servidor VPN.
Além disso, vale a pena lembrar que essa chave é secreta e deve ser mantida em segredo. Em nosso exemplo, criamos a chave com o nome “vpn_server.key”.
Agora vamos usar a linha “tls-crypt-v2 server vpn_server.pem” para apontar para a chave TLS Crypt V2 do servidor OpenVPN.
Em nosso caso o nome do arquivo da chave foi o “vpn_server.pem”.
Agora vamos informar o nome do arquivo Diffie hellman = “dh dh.pem”. Em nosso caso esse arquivo está com o nome dh.pem.
A próxima linha, “server 10.8.0.0 255.255.255.0”, informa o range de IPs que serão usados na VPN. Esse range de IPs pode ser alterado para evitar que coincida com alguma rede interna de sua empresa.
A linha “push “redirect-gateway autolocal”” força a utilização da VPN como gateway.
Depois temos a linha “ifconfig-pool-persist /var/log/openvpn/ipp.txt” que armazena os endereços virtuais dos clientes da VPN.
Em seguida, temos a linha “keepalive 10 120” que indica que vamos enviar um ping a cada 10 segundos para os clientes e que se o cliente ficar 120 segundos sem responder será considerado desconectado.
A próxima linha “cipher AES-256-GCM” indica qual será a cifra criptográfica usada.
As linhas “persist-key” e “persist-tun” são usadas para evitar o acesso aos recursos em caso de restart em caso de redução de privilégios.
A linha “status /var/log/openvpn/openvpn-status.log” informa onde serão armazenados os logs das conexões em andamento.
Em seguida, temos a linha “verb 4” que indica o nivel de detalhamento dos logs. Sendo que o nivel de detalhamento pode variar de 0 até 9.
A última linha , “explicit-exit-notify 1”, indica que o servidor VPN vai avisar os clientes caso tenha que ser reinicializado.
Copiando arquivos para a pasta /etc/openvpn/server
Agora que já criamos o arquivo de configuração, precisos copiar os arquivos de certificados e chaves do servidor VPN para dentro do diretório “/etc/openvpn/server/”.
Copiando o ca.crt e o dh.pem
Inicialmente vamos para o diretório “~/easy-rsa/pki/”.
cd ~/easy-rsa/pki/
Depois vamos copiar o certificado da autoridade certificadora. Em nosso caso é o “ca.crt”.
sudo cp ca.crt /etc/openvpn/server/
Em seguida vamos copiar o arquivo de Diffie hellman. Para isso, vamos copiar o arquivo dh.pem para o diretório “/etc/openvpn/server/”.
sudo cp dh.pem /etc/openvpn/server/
Copiando o vpn_server.key e vpn_server.pem
Depois, vamos para o diretório “~/easy-rsa/pki/private/”.
cd ~/easy-rsa/pki/private/
Dentro desse diretório, vamos copiar os arquivos, “vpn_server.key” e “vpn_server.pem”, necessários para o servidor VPN. Para a copia, usaremos o comando cp.
sudo cp vpn_server.key /etc/openvpn/server/
sudo cp vpn_server.pem /etc/openvpn/server/
Copiando o vpn_server.crt
Agora vamos para o diretório onde temos o certificado do servidor open vpn. Nesse caso é o diretório “~/easy-rsa/pki/issued/”.
cd ~/easy-rsa/pki/issued/
Agora vamos copiar o arquivo vpn_server.crt para o diretório “/etc/openvpn/server/”.
sudo cp vpn_server.crt /etc/openvpn/server/
Permitindo o encaminhamento no servidor Open VPN
Até agora, fomos muito bem na configuração do servidor Open VPN.
Portanto, precisamos habilitar o encaminhamento na máquina que será servidora do Open VPN. Para isso, vamos inserir uma linha no arquivo /etc/sysctl.conf.
Dessa forma, vamos usar o comando abaixo para inserir a linha pelo comando:
sudo nano /etc/sysctl.conf
Em seguida vamos adicionar a linha no final do arquivo:
net.ipv4.ip_forward = 1
Você pode me falar: Juliana essa linha já está no arquivo. A resposta é sim. No entanto, na maioria dos sistemas essa linha vai estar comentada, principalmente se você nunca configurou o servidor para encaminhar pacotes.
Dessa forma, se desejar pode descomnentar a linha ao invés de inserir a linha “net.ipv4.ip_forward = 1” .
Agora vamos recarregar o arquivo usando o comando :
sudo sysctl -p
Após digitar o comando acima, podemos ver um resultado semelhante ao da figura abaixo:
Configurando o servidor VPN para fazer NAT
Depois de toda a configuração inicial, precisamos assegurar que nosso servidor VPN faça NAT corretamente.
Isso porque, as conexões dos clientes serão roteadas por ele e usarão um IP diferente do IP da rede do servidor VPN.
Dessa forma, precisamos criar algumas regras de NAT no IPTABLES.
Inicialmente precisamos verificar qual é a interface do servidor VPN que encaminha dados para o default gateway.
Para isso, vamos usar o comando abaixo:
ip route list default
A figura acima mostra que a interface de nosso servidor VPN que está fazendo o roteamento padrão é a enp0s3 .
Portanto vamos usar a interface “enp0s3” . No seu caso, use o nome da interface que aparecer no comando “ip route list default”.
Inserindo as regras de NAT e redirecionamento para o Open VPN
Agora vamos editar o arquivo que faz a leitura preliminar das regras do firewall. Para isso vamos editar o arquivo “/etc/ufw/before.rules”.
Então, vamos usar o comando abaixo:
sudo nano /etc/ufw/before.rules
Dentro desse arquivo “before.rules”, vamos adicionar as linhas abaixo:
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/16 -o enp0s3 -j MASQUERADE
COMMIT
A figura acima demonstra que devemos inserir essas linhas de configuração no início do arquivo “before.rules”.
Dessa forma, essas linhas que inserimos vão permitir o NAT em nosso servidor VPN.
Importante dizer que aqui devemos colocar a rede que estamos usando para VPN. Dessa forma, em nossas configurações usamos a rede “10.8.0.0/16”.
Além disso, vamos especificar aquela interface que liga o servidor VPN ao default gateway “enp0s3”.
Editando o “/etc/default/ufw”
Agora vamos editar o arquivo “/etc/default/ufw” e alterar uma linha para permitir o redirecionamento.
Para isso vamos encontrar a linha “DEFAULT_FORWARD_POLICY=”DROP” “ e vamos alterar para DEFAULT_FORWARD_POLICY=”ACCEPT”.
Abaixo, temos a configuração alterada:
sudo nano /etc/default/ufw
DEFAULT_FORWARD_POLICY=”ACCEPT”
Permitindo acesso ao servidor Open VPN
Agora, vamos criar uma regra para permitir acesso na porta do servidor Open VPN. Em nosso caso, nosso servidor está operando na porta 1194. Portanto vamos usar a regra abaixo para permitir acesso UDP na porta 1194:
sudo ufw allow 1194/udp
Reiniciando o Firewall
Depois de alterar as linhas vamos reiniciar o Firewall. Para isso vamos usar os comandos abaixo:
sudo ufw disable
sudo ufw enable
Inicializando o servidor Open VPN
Vamos inicializar o servidor Open VPN. Para isso, vamos executar o comando abaixo:
sudo systemctl start [email protected]
Em seguida vamos verificar se o servidor inicializou corretamente com o seguinte comando:
sudo systemctl status [email protected]
A figura abaixo mostra o resultado do status do servidor OpenVPN.
Para garantir que o servidor OpenVPN inicie toda vez que a máquina inicializar, precisamos digitar o comando abaixo.
sudo systemctl enable [email protected]
Configurando o cliente Open VPN
Depois de configurarmos o servidor Open VPN, vamos iniciar a configuração do cliente Open VPN.
Para isso vamos configurar um cliente hipotético chamado Alice. E configuraremos uma outra máquina onde o cliente Alice vai estar usado.
Vale lembrar que estamos usando máquinas virtuais e rede virtualizada para demonstrar a configuração do OpenVPN.
No entanto, o mesmo procedimento se aplica para máquinas que estejam usando IPs públicos.
Além disso, optamos por usar um cenário virtualizado para que nossos leitores possam replicar o cenário como prova de conceito.
Criando e assinando o certificado do cliente OpenVPN
Para criar o certificado do cliente Open VPN , vamos entrar no diretório “~/easy-rsa”, dentro do servidor Open VPN. Em seguida, vamos digitar o comando abaixo:
cd ~/easy-rsa/
./easyrsa gen-req Alice nopass
Lembre-se de pressionar ENTER quando perguntar se deseja usar o Common Name.
*Vale lembrar que estamos usando como exemplo um cliente com o nome Alice. Certamente, você fará alterações para os nomes dos seus clientes.
Depois vamos assinar o certificado do cliente Open VPN , utilizando o o comando abaixo:
./easyrsa sign-req client Alice
Confirme a operação com “yes”.
Criando a chave TLS Crypt v2 para o cliente
Agora vamos criar a TLS Crypt v2 que será usada pelo cliente.
Nesse tutorial, vamos criar uma chave que será usada pelo cliente Alice.
Para isso, dentro do servidor Open VPN, vamos entrar no diretório ~/easy-rsa/pki/ .
cd ~/easy-rsa/pki/
Em seguida, vamos digitar o comando abaixo:
openvpn --tls-crypt-v2 private/vpn_server.pem --genkey tls-crypt-v2-client private/Alice.pem
Podemos verificar que a chave para Alice foi criada dentro do diretório ~/easy-rsa/pki/private/.
ls ~/easy-rsa/pki/private/
Preparando os arquivos de clientes Open VPN
Para configurar o cliente open vpn, vamos precisar criar um diretório onde vamos armazenar os arquivos dos clientes da VPN.
Para isso vamos usar o comando abaixo:
mkdir ~/vpn_clients
Dentro desse diretório vamos criar subdiretórios para cada cliente.
Em nosso caso, temos o cliente Alice. Então vamos criar um subdiretório alice.
cd ~/vpn_clients
mkdir alice
Agora vamos copiar os arquivos ca.crt e os outros arquivos da Alice para o diretório “~/vpn_clients/alice”.
O primeiro arquivo é o ca.crt que está no “~/easy-rsa/pki/” . Então vamos usar o comando abaixo
cd ~/easy-rsa/pki/
cp ca.crt ~/vpn_clients/alice
Agora vamos copiar os arquivos “.crt” e “.key” do cliente. Para isso, vamos para o diretório “~/easy-rsa/pki/issued/”.
cd ~/easy-rsa/pki/issued/
Em seguida vamos copiar o arquivo de certificado de Alice “.crt” para o diretório que criamos para o cliente Alice.
cp Alice.crt ~/vpn_clients/alice
Agora vamos copiar a chave de Alice “.key” e “.pem”. Para isso, vamos para o diretório “~/easy-rsa/pki/private/”.
cd ~/easy-rsa/pki/private/
Depois vamos copiar a chave de Alice “Alice.key” e “Alice.pem” para o diretório da Alice.
cp Alice.key ~/vpn_clients/alice
cp Alice.pem ~/vpn_clients/alice
Agora vamos para o diretório da Alice:
cd ~/vpn_clients/alice
Em seguida vamos dar um comando ls para verificar se os arquivos estão lá.
ls
Criando o arquivo OVPN do Open VPN
Agora vamos criar o arquivo “make_client_ovpn.sh” dentro do diretório da Alice.
Esse arquivo é um script que vai facilitar nossa vida no momento de configurar os clientes.
Obviamente, você poderia digitar manualmente as configurações no arquivo “.ovpn” dos clientes. No entanto, aqui sugerimos o script para automatizar a tarefa.
cd ~/vpn_clients/alice
nano make_client_ovpn.sh
Em seguida, vamos copiar e colar as linhas abaixo:
#!/bin/bash
# 1 argument = Client_identifier
cat <(echo -e 'client') \
<(echo -e 'proto udp') \
<(echo -e 'dev tun') \
<(echo -e 'remote 127.0.0.1 1194') \
<(echo -e 'resolv-retry infinite') \
<(echo -e 'nobind') \
<(echo -e 'persist-key') \
<(echo -e 'persist-tun') \
<(echo -e 'remote-cert-tls server') \
<(echo -e 'cipher AES-256-GCM') \
<(echo -e '#user nobody') \
<(echo -e '#group nobody') \
<(echo -e 'verb 3') \
<(echo -e '<ca>') \
ca.crt \
<(echo -e '</ca>\n<cert>') \
${1}.crt \
<(echo -e '</cert>\n<key>') \
${1}.key \
<(echo -e '</key>\n<tls-crypt-v2>') \
${1}.pem \
<(echo -e '</tls-crypt-v2>') \
> ${1}.ovpn
Explicando as linhas da configuração
Agora, vamos explicar o significado dessas linhas de configuração do cliente Open VPN:
“client” indica que é um cliente Open VPN.
“proto udp” indica que vai usar o protocolo UDP
“dev tun” indica que vai usar túnel IP
“remote” 127.0.0.1 1194″ indica o IP do servidor Open VPN e a porta que será usada. No seu caso, assumindo que você vai usar a VPN na Internet, você deve verificar qual o IP público do seu servidor VPN.
“resolv-retry infinite” Indica que vai ficar tentando resolver o nome do servidor VPN
“nobind” indica não vai usar uma porta específica.
“persist-key” e “persist-tun” permite preservar estado das conexões em caso de reinicialização.
“remote-cert-tls server” indica o tls do servidor
“cipher AES-256-GCM” indica a cifra de criptografia usada
“#user nobody” e “#group nobody” Redução de privilégios em clientes não Linux. Remova o “#” se estiver usando um cliente em uma máquina que não use o sistema operacional Linux.
“verb 3” indica o nível de detalhamento dos logs.
O resto do script indica que vamos ler os arquivos “${1}.crt” + “${1}.key” + “${1}.pem” , sendo o “${1}” o nome de identificação que você designou para o cliente. Esse identificador do cliente é primeiro argumento que vamos passar para nosso script.
Executando o script
Depois de criado o arquivo make_client_ovpn.sh, vamos torná-lo executável. Para isso vamos usar o comando abaixo:
chmod +x make_client_ovpn.sh
Depois disso vamos executar o arquivo utilizando o “./” e seguido do nome de identificação do cliente. No nosso caso, o cliente é a Alice.
./make_client_ovpn.sh Alice
Você vai perceber que foi criado um arquivo “.ovpn” dentro da pasta da Alice. Pode verificar usando o comando “ls”.
ls
Enviando o arquivo OVPN para o cliente
Agora vamos copiar o arquivo Alice.ovpn para o computador do cliente.
Para isso, podemos usar diversas formas para copiar como por exemplo SFTP, email, pendrive.
(Opcional)Vamos usar o netcat para trasnferir o arquivo Alice.ovpn.
Para isso vamos iniciar um servidor netcat na máquina que vai receber o arquivo Alice.ovpn. Para isso vamos usar o comando abaixo:
nc -vnl -w 2 8888 > Alice.ovpn
Esse comando informa que o computador vai ouvir na porta 8888 e vai jogar o conteúdo recebido dentro do arquivo Alice.ovpn.
Agora vamos para a máquina servidor VPN e vamos para a pasta da Alice. Em seguida vamos digitar o seguinte comando:
nc -vn 10.0.2.15 8888 < Alice.ovpn
Nesse caso estamos enviando o conteúdo do arquivo Alice.ovpn para a máquina 10.0.2.15 utilizando a porta TCP 8888.
Caso tenha dúvidas sobre netcat e queira se aprofundar mais, temos uma videoaula:
Editando o arquivo ovpn do cliente
Ok, uma vez copiado o arquivo. Vamos editá-lo e altear o IP da linha “remote 10.0.2.7 1194 “.
Em nosso caso, o IP do servidor VPN é o 10.0.2.7. Verifique o IP que será usado em seu ambiente.
Se estivermos usando uma máquina Linux, podemos comentar as linhas user nobody e group nobody. Para comentar a linha, use o “#”.
Instalando o openvpn no cliente
sudo apt-get update && sudo apt-get install openvpn
Caso a versão seja menor do que a 2.5 faça o mesmo procedimento descrito na sessão Instalando a versão mais nova do Openvpn.
Conectando o cliente na VPN
Agora vamos conectar o cliente na VPN. Em nosso caso, o cliente é a Alice. Portanto, vamos usar o comando abaixo:
sudo openvpn --config Alice.ovpn
Testando a VPN no cliente
Existem diversas formas para testar se o cliente está encaminhando seu tráfego para a VPN. No entanto, vamso usar o comando traceroute para fazer o teste.
Dessa forma, utilizando o comando traceroute para um site da internet, devemos ter um roteamento do tráfego do cliente para o servidor Open VPN.
Consequentemente, o tráfego do cliente vai ser roteado pelo servidor Open VPN para o site da internet.
Vamos usar o comando abaixo:
traceroute www.google.com
Podemos ver na figura acima que o primeiro salto está indo para o IP da VPN “10.8.0.1”.
Depois disso, o próximo salto é o default gateway do servidor Open VPN.
Dessa forma, podemos demonstrar que o tráfego já está sendo roteado do cliente para o servidor Open VPN.
Instalando a versão mais nova do OpenVPN
Se a sua versão de OpenVPN ainda está menor do que 2.5 você pode realizar os passos abaixo para atualizar a versão do OpenVPN de forma manual.
Em nossa instalação, estamos usando Ubuntu. Portanto vamos usar os comandos abaixo:
sudo -s
Em seguida, vamos digitar o comando abaixo para criar o diretório keyrings.
mkdir -p /etc/apt/keyrings
Agora, vamos instalar o curl. Para isso, vamos usar o comando abaixo.
apt install curl
Agora vamos adicionar o novo repositório do OpenVPN.
curl -fsSL https://swupdate.openvpn.net/repos/repo-public.gpg | gpg --dearmor > /etc/apt/keyrings/openvpn-repo-public.gpg
Agora podemos instalar a versão do OpenVPN para a versão do seu sistema operacional com o comando abaixo fazendo as devidas substituições em *** e &&&.
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/openvpn-repo-public.gpg] http://build.openvpn.net/debian/openvpn/*** &&& main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
Nesse caso, vamos substituir o *** pela versão do OpenVPN que você deseja instalar.
Abaixo temos várias opções de versão de OpenVPN.
stable: usa a versão estável e exclui a possibilidade de uso de alphas, betas e RCs
testing: ultima versão incluindo os tipos alphas, betas e RCs
release/2.3: Usa a versão de OpenVPN 2.3
release/2.4: Usa a versão de OpenVPN 2.4 incluindo os tipos alphas, betas e RCs
release/2.5: Usa a versão de OpenVPN 2.5 incluindo os tipos alphas, betas e RCs
release/2.6: Usa a versão de OpenVPN 2.6 incluindo os tipos alphas, betas e RCs
E vamos substituir o &&& pela versão do Linux que você tem.
Abaixo temos várias opções de versão de Linux.
stretch = Debian 9.x
buster = Debian 10.x
bullseye = Debian 11.x
bookworm = Debian 12.x
bionic = Ubuntu 18.04 LTS
focal = Ubuntu 20.04 LTS
jammy = Ubuntu 22.04 LTS
kinetic = Ubuntu 22.10
lunar = Ubuntu 23.04
Como exemplo podemos escolher o comando abaixo para instalar o repositório para a versão OpenVPN 2.6 em uma máquina com o ubuntu 22.04 jammy.
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/openvpn-repo-public.gpg] http://build.openvpn.net/debian/openvpn/release/2.6 jammy main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
Para mais informações sobre outras versões, podemos acessar o site de repositório do openvn: https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos
Agora vamos instalar a nova versão de OpenVPN
apt-get update && apt-get install openvpn
Agora, vamos utilizar o comando para ver a versão do openvpn.
openvpn --version
Podemos ver na figura abaixo que já estamos com uma versão do openvpn maior ou igual a 2.5.
Livros Indicados:
E-Books de Redes e Segurança
Juliana Mascarenhas
Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer
Tem algum comentário ou dúvida? Comenta lá no canal: Simplificandoredes.
Referências
https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos
https://community.openvpn.net/openvpn/wiki/HOWTO
https://github.com/OpenVPN/easy-rsa/blob/master/README.quickstart.md
https://openwrt.org/docs/guide-user/services/vpn/openvpn/server
https://github.com/OpenVPN/openvpn/blob/master/doc/tls-crypt-v2.txt
https://community.openvpn.net/openvpn/ticket/1260
https://askubuntu.com/questions/1436407/ubuntu-22-10-openvpn-cannot-connect-as-a-client