[OpenVPN] VPN Site to Site entre dois servidores Linux

Configurar uma VPN site-to-site entre dois servidores Debian pode ser feito usando o OpenVPN. Neste exemplo, vamos considerar que temos dois servidores:

  1. Servidor A: com IP fixo (por exemplo, 203.0.113.1)
  2. Servidor B: sem IP fixo (usando DDNS, por exemplo, servidorb.dyndns.org)

Vamos usar o OpenVPN para configurar a VPN entre esses dois servidores.

Passo 1: Instalar o OpenVPN em ambos os servidores

sudo apt update
sudo apt install openvpn

Passo 2: Gerar os certificados e chaves

Os certificados e chaves serão gerados no Servidor A. Você pode seguir as instruções do script easy-rsa fornecido pelo OpenVPN.

No Servidor A:

  1. Instale o Easy-RSA:
sudo apt install easy-rsa
  1. Configure o Easy-RSA:
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
nano vars

Edite o arquivo vars e ajuste os parâmetros de acordo com suas necessidades (como KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, etc.).

  1. Gere o CA, chave e certificados:
source ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
./build-key client1  # Para o cliente (Servidor B)
  1. Copie os arquivos gerados para o diretório do OpenVPN:
sudo cp keys/{server.crt,server.key,ca.crt,dh2048.pem} /etc/openvpn/
  1. Configure o servidor OpenVPN:
sudo nano /etc/openvpn/server.conf

Adicione as seguintes linhas:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.8.1.0 255.255.255.0"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Passo 3: Configurar o cliente OpenVPN

No Servidor B:

  1. Instale o OpenVPN e copie os arquivos de configuração do Servidor A (ca.crt, client1.crt, client1.key):
sudo apt install openvpn
sudo scp user@203.0.113.1:/etc/openvpn/ca.crt /etc/openvpn/
sudo scp user@203.0.113.1:/etc/openvpn/keys/client1.crt /etc/openvpn/
sudo scp user@203.0.113.1:/etc/openvpn/keys/client1.key /etc/openvpn/
  1. Configure o cliente OpenVPN:
sudo nano /etc/openvpn/client.conf

Adicione as seguintes linhas:

client
dev tun
proto udp
remote 203.0.113.1 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
cipher AES-256-CBC
verb 3

Passo 4: Configuração de IPs fixos (opcional)

Se o servidor B não tiver um IP fixo e usar DDNS, certifique-se de configurar o DDNS corretamente. No exemplo acima, o IP do servidor A é fixo, então não há necessidade de configurar DDNS para ele. Mas para o servidor B, verifique se o serviço de DDNS está atualizado corretamente.

Passo 5: Inicializar o OpenVPN em ambos os servidores

No Servidor A:

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server

No Servidor B:

sudo systemctl start openvpn@client
sudo systemctl enable openvpn@client

Passo 6: Verificar a conexão

Verifique os logs em ambos os servidores para garantir que a conexão foi estabelecida corretamente:

No Servidor A:

sudo tail -f /var/log/openvpn.log

No Servidor B:

sudo tail -f /var/log/openvpn.log

Passo 7: Configurar o roteamento (se necessário)

Certifique-se de que as rotas apropriadas estão sendo configuradas para permitir o tráfego entre as sub-redes dos dois sites.

No Servidor A (para rotear tráfego para a sub-rede do Servidor B):

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

No Servidor B (para rotear tráfego para a sub-rede do Servidor A):

sudo iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 -j MASQUERADE

Conclusão

Com isso, você configurou uma VPN site-to-site entre dois servidores Debian, mesmo que um dos servidores não tenha um IP fixo. Ajuste as configurações conforme necessário para sua rede específica e requisitos de segurança.

CATEGORIES:

Software Livre

Comments are closed