REDE ONLINE · 7 fabricantes · 84 artigos · 1.2k comandos
v2.1.0 PT_BR
CircuitoCarioca
Home
↳ Visão geral Datacom Nokia Huawei Mikrotik Cisco Intelbras Parks
↳ Visão geral VLAN QinQ MPLS BGP OSPF
Ferramentas
↳ Visão geral Linux Windows Zabbix Grafana LibreNMS Firewall VPN Hardening
Wiki Comunidade Sobre
entrar cadastrar
vpn · userspace · padrão histórico

OpenVPN

PKI completa com certificado por cliente, revogação individual, compatibilidade ampla — da arquitetura à operação real em ISP.

Nesta página

1. Contexto histórico e normativo 2. Arquitetura interna 3. Instalação 4. PKI com easy-rsa 5. Configuração do servidor 6. Perfil de cliente (.ovpn) 7. Revogação de acesso 8. TCP Meltdown 9. DCO — Data Channel Offload 10. Verificação e logs 11. Monitoramento e métricas 12. Backup e recuperação 13. Dimensionamento e performance 14. Comparativo com WireGuard 15. Troubleshooting 16. Glossário 17. Referências

1. Contexto histórico e normativo

O OpenVPN foi criado em 2001 por James Yonan como uma alternativa open source aos protocolos VPN proprietários da época. Utiliza a biblioteca OpenSSL para criptografia e pode operar sobre UDP ou TCP, o que lhe confere flexibilidade única para atravessar firewalls restritivos e redes que bloqueiam UDP.

Por mais de duas décadas, foi o padrão de fato para VPNs de acesso remoto e túneis site‑a‑site. Sua principal força está na PKI completa (Public Key Infrastructure) com emissão e revogação de certificados individuais, algo que o WireGuard não possui nativamente.

Embora tenha perdido espaço para o WireGuard em cenários de alta performance e simplicidade, o OpenVPN continua amplamente suportado em roteadores, firewalls (incluindo pfSense), appliances e sistemas legados — e segue sendo a escolha quando compatibilidade máxima é requisito.

2. Arquitetura interna

O OpenVPN opera em espaço de usuário (userspace), o que significa que os pacotes são processados fora do kernel. Isso adiciona overhead de troca de contexto, mas permite uso flexível da biblioteca OpenSSL para negociação de cifras e protocolos.

  • Interface virtual tun/tap — cria uma interface de rede virtual para o túnel.
  • PKI — usa certificados X.509, chaves privadas e CRLs (Certificate Revocation Lists).
  • Transporte UDP ou TCP — flexível, mas com trade‑off (seção 8).
  • Data Channel Offload (DCO) — em versões recentes, move parte do processamento para o kernel, melhorando performance (seção 9).

3. Instalação

apt update
apt install openvpn easy-rsa

4. PKI com easy-rsa

make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa

./easyrsa init-pki
./easyrsa build-ca nopass          # cria a CA própria
./easyrsa gen-req servidor-vpn nopass
./easyrsa sign-req server servidor-vpn

./easyrsa gen-dh                  # chave Diffie-Hellman

# Um certificado por técnico/PoP
./easyrsa gen-req tecnico-joao nopass
./easyrsa sign-req client tecnico-joao

5. Configuração do servidor

# /etc/openvpn/server/server.conf
port 1194
proto udp
dev tun

ca ca.crt
cert servidor-vpn.crt
key servidor-vpn.key
dh dh.pem

server 10.200.0.0 255.255.255.0
push "route 10.0.0.0 255.255.0.0"   # rede interna do ISP

data-ciphers AES-256-GCM:CHACHA20-POLY1305
auth SHA256

keepalive 10 60
persist-key
persist-tun

status /var/log/openvpn/status.log
log-append /var/log/openvpn/openvpn.log
verb 3
systemctl enable --now openvpn-server@server

6. Perfil de cliente (.ovpn)

client
dev tun
proto udp
remote vpn.exemplo-isp.com.br 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
data-ciphers AES-256-GCM:CHACHA20-POLY1305
verb 3

<ca>
... ca.crt ...
</ca>
<cert>
... tecnico-joao.crt ...
</cert>
<key>
... tecnico-joao.key ...
</key>

7. Revogação de acesso

Diferencial estrutural frente ao WireGuard: o OpenVPN possui processo formal de revogação via CRL (Certificate Revocation List).

cd /etc/openvpn/easy-rsa
./easyrsa revoke tecnico-joao
./easyrsa gen-crl

cp pki/crl.pem /etc/openvpn/server/
# server.conf precisa referenciar: crl-verify crl.pem
systemctl restart openvpn-server@server

8. TCP Meltdown

Rodar OpenVPN sobre TCP pode degradar performance de forma não óbvia, conhecida como "TCP Meltdown": quando pacotes TCP (do tráfego real do usuário) são encapsulados dentro de outra camada TCP (o túnel), qualquer perda de pacote dispara controle de congestionamento nas duas camadas simultaneamente. Use UDP sempre que possível; TCP só se a rede de trânsito bloquear UDP de forma incontornável.

9. DCO — Data Channel Offload

Versões recentes do OpenVPN suportam DCO (Data Channel Offload), que move parte do processamento de dados para o kernel, reduzindo o overhead histórico de userspace. Com DCO, a diferença de throughput para o WireGuard em transferência sustentada diminui consideravelmente, embora a simplicidade e o handshake rápido do WireGuard continuem sendo diferenciais.

10. Verificação e logs

# Clientes conectados
cat /var/log/openvpn/status.log

# Log detalhado
tail -f /var/log/openvpn/openvpn.log

11. Monitoramento e métricas

Script de health check para Zabbix/PRTG:

#!/bin/bash
# check_openvpn.sh
if systemctl is-active openvpn-server@server >/dev/null 2>&1; then
  echo "OK: OpenVPN ativo"
  exit 0
else
  echo "CRITICAL: OpenVPN inativo"
  exit 2
fi

Métricas úteis: número de clientes conectados, bytes transferidos, tempo médio de sessão, erros de autenticação. Todas extraíveis dos logs e do arquivo status.log.

12. Backup e recuperação

O backup deve incluir toda a PKI e configurações, seguindo a regra 3‑2‑1‑1‑0:

  • Diretório easy-rsa/etc/openvpn/easy-rsa/pki/ (CA, chaves, certificados).
  • Configurações/etc/openvpn/.
  • CRLcrl.pem, para manter revogações.

A perda da chave privada da CA significa ter que emitir novos certificados para todos os clientes — mantenha backup seguro e atualizado.

13. Dimensionamento e performance

O OpenVPN em userspace pode lidar com centenas de túneis simultâneos em hardware adequado, mas é mais sensível à CPU do que o WireGuard:

  • CPU — criptografia AES‑GCM consome CPU; hardware com AES‑NI é recomendado.
  • DCO — ative para melhorar throughput em até 3‑5x em cenários de alta carga.
  • MTUtun-mtu 1500 pode ser ajustado para evitar fragmentação em enlaces com overhead.
  • Número de clientes — para dezenas de túneis, é suficiente; para centenas, considere hardware dedicado.

14. Comparativo com WireGuard

CaracterísticaOpenVPNWireGuard
CódigoDezenas de milhares~4.000 linhas
TransporteUDP e TCPSomente UDP
CriptografiaNegociável (TLS/OpenSSL)Fixa (Curve25519, ChaCha20)
PKI e revogaçãoCompleta (CRL)Não possui (remover chave manualmente)
CompatibilidadeMuito amplaModerna (RouterOS v7+, Linux)
PerformanceBoa com DCOExcelente (kernel)

Para ISP, o OpenVPN é ideal quando se precisa de revogação individual, compatibilidade com equipamentos legados ou tunelamento via TCP. O WireGuard vence em simplicidade, performance e handshake rápido.

15. Troubleshooting

TLS handshake falha

Verificar se o certificado não foi revogado, se a CA bate entre servidor e cliente, e se o relógio do sistema está correto — data/hora errada é causa comum e não óbvia.

Throughput muito abaixo do esperado

Confirmar que está em UDP (não TCP, ver seção 8), e avaliar DCO se disponível.

Cliente conecta mas não alcança rede interna

Checar push "route ..." no server.conf, ip_forward habilitado e regras de firewall para a interface tun0.

16. Glossário

PKI Public Key Infrastructure — conjunto de CA, certificados e chaves para autenticação.
CA Certificate Authority — entidade que assina certificados.
CRL Certificate Revocation List — lista de certificados revogados.
easy-rsa Ferramenta para gerenciar a PKI do OpenVPN.
DCO Data Channel Offload — aceleração de processamento no kernel.
TCP Meltdown Degradação de performance quando TCP é encapsulado em TCP.
TLS handshake Negociação inicial de criptografia entre cliente e servidor.
tun0 Interface virtual criada pelo OpenVPN para o túnel.

17. Referências

Conteúdo técnico independente. Nenhum trecho é cópia literal de fonte de terceiro.