Ir para o conteúdo

OpenVPN Site-to-Site entre OPNsense e pfSense

Introdução

Estabelecer uma VPN site-to-site entre um OPNsense (matriz) e um pfSense (filial) via OpenVPN é um processo direto quando seguimos uma sequência clara: preparar certificados, criar o servidor na matriz, configurar o cliente na filial, ajustar regras de firewall e validar a conectividade.

Antes de começar, confirme que ambos os firewalls estão em versões estáveis e recentes. Diferenças grandes de versão podem introduzir comportamentos inesperados durante a negociação do túnel.


Premissas do Ambiente

  • OPNsense 25.1 (Matriz) e pfSense 2.7.2 (Filial).
  • OPNsense (WAN pública): 200.0.0.1LAN: 192.168.1.0/24.
  • pfSense (LAN): 192.168.2.0/24.
  • A porta 1194/UDP está livre. Se já for utilizada por outra VPN, escolha outra porta (ex.: 1195/UDP) e use-a em todos os passos.

Os exemplos abaixo usam 200.0.0.1 como IP público do OPNsense (matriz) e a porta 1194/UDP. Adapte conforme a sua realidade (IP público/hostname/porta).


Etapa 1 — Criar Certificados (OPNsense e pfSense)

1.1 OPNsense — Autoridade Certificadora (CA) e Certificados

  1. Criar a CA (Autoridade Certificadora)

    • Acesse System → Trust → Authorities+ Add
    • Description: CA-VPN-SITE-A-SITE
    • Lifetime (days): 3650
    • Common Name: CA-VPN-SITE-A-SITE
    • Save
  2. Criar certificado de servidor (será usado pelo OpenVPN Server)

    • System → Trust → Certificates+ Add
    • Description: VPN-SERVER
    • Type: Server Certificate
    • Issuer: CA-VPN-SITE-A-SITE
    • Lifetime (days): 3650
    • Common Name: vpn.empresa.com.br (ou FQDN do seu firewall)
    • Save
  3. Criar certificado de cliente (será importado no pfSense)

    • System → Trust → Certificates+ Add
    • Description: VPN-FILIAL
    • Type: Client Certificate
    • Issuer: CA-VPN-SITE-A-SITE
    • Lifetime (days): 3650
    • Common Name: filial
    • Save
  4. Exportar o certificado do cliente em PKCS#12 (PFX)

    • Ainda em System → Trust → Certificates, localize VPN-FILIALDownload
    • Defina uma senha (ex.: 12345678) para o PFX e salve o arquivo.

1.2 pfSense — Importar CA e Certificado do Cliente

  1. Importar a CA

    • System → Certificates → guia CAs+ Add
    • Descriptive name: CA-VPN-SITE-A-SITE
    • Method: Import an existing Certificate Authority
    • Certificate data: No OPNsense, abra System → Trust → Authorities, edite a CA-VPN-SITE-A-SITE e copie o campo “Certificate data”. Cole aqui.
    • Save
  2. Importar o certificado do cliente (PKCS#12)

    • System → Certificates → guia Certificates+ Add/Sign
    • Method: Import an existing Certificate
    • Descriptive name: VPN-FILIAL
    • Certificate Type: PKCS #12 (PFX)
    • PKCS #12 certificate: selecione o arquivo PFX exportado do OPNsense
    • PKCS #12 certificate password: 12345678 (ou a senha que definiu)
    • Save

Etapa 2 — Servidor OpenVPN na Matriz (OPNsense)

Para facilitar a autenticação e resiliência, vamos usar TLS com CA + certificados e chave estática TLS (tls-auth/crypt).

2.1 Gerar a Chave Estática TLS

  1. VPN → OpenVPN → Instances → guia Static Keys+ Add
  2. Description: FILIAL
  3. Mode: crypt
  4. Clique no ícone da engrenagem para gerar automaticamente a Static key.
  5. Save

2.2 Criar a Instância do Servidor (Instances)

  1. VPN → OpenVPN → Instances+ Add
    • Marque Advanced mode (topo da tela).
    • Description: FILIAL
    • Port number: 1194 (ou a porta alternativa escolhida)
    • Protocol: UDP
    • Server (IPv4): 10.90.0.0/24 (rede de túnel; será atribuída ponto-a-ponto)
    • Topology: p2p
    • Certificate: VPN-SERVER
    • Certificate Authority: CA-VPN-SITE-A-SITE
    • TLS static key: selecione FILIAL (a chave gerada na etapa anterior)
    • Local Network: 192.168.1.0/24 (LAN da matriz)
    • Remote Network: 192.168.2.0/24 (LAN da filial)
    • SaveApply

Se optar por uma porta diferente de 1194, lembre-se de ajustar a porta em todos os locais (regra de firewall e cliente no pfSense).


Etapa 3 — Roteamento da Filial para a Matriz (usando Client Specific Overrides)

Para instruir o firewall da Matriz a carregar a rota da Filial, execute as etapas abaixo no OPNsense da Matriz:

  1. VPN → OpenVPN → Client Specific Overrides+ Add
  2. Servers: FILIAL (1194/UDP)
  3. Description: FILIAL
  4. Common name: filial (deve corresponder ao Common Name do certificado de cliente)
  5. Remote Network: 192.168.2.0/24 (LAN da filial)
  6. Save

Etapa 4 — Regras de Firewall (OPNsense)

4.1 Liberar a Porta do Servidor na(s) WAN(s)

  1. Firewall → Rules → WAN+ Add
    • Protocol: UDP
    • Destination: This Firewall
    • Destination port range: OpenVPN (1194). Se usar outra porta, selecione Other e informe manualmente.
    • Log: marcar
    • Description: Permite conexão OpenVPN site-to-site
    • SaveApply Changes

4.2 Permitir Tráfego Dentro do Túnel

  1. Firewall → Rules → OpenVPN+ Add
    • Action: Pass
    • Protocol: Any
    • Log: marcar
    • Description: Libera tráfego da VPN (Filial ↔ Matriz)
    • SaveApply Changes

Ajuste posteriormente para permitir apenas as origens/destinos/portas necessárias.


Etapa 5 — Cliente OpenVPN na Filial (pfSense)

  1. VPN → OpenVPN → guia Clients+ Add
    • Description: VPN-MATRIZ
    • Interface: Any
    • Server host or address: 200.0.0.1 (IP/hostname público do OPNsense)
    • Server port: 1194 (ou a porta definida no servidor)
    • Protocol: UDP
    • TLS Configuration: marcar Use a TLS Key
    • Automatically generate a TLS Key: desmarcar
    • TLS Key: No OPNsense vá em VPN → OpenVPN → Instances → Static Keys, edite FILIAL e copie toda a Static Key, colando aqui.
    • TLS Key Usage Mode: TLS Encryption and Authentication
    • Peer Certificate Authority: CA-VPN-SITE-A-SITE
    • Client Certificate: VPN-FILIAL
    • SaveApply Changes

5.1 Regras no pfSense para Tráfego do Túnel

  1. Firewall → Rules → guia OpenVPN+ Add
    • Action: Pass
    • Protocol: Any
    • Log: marcar
    • Description: Libera tráfego da VPN (Matriz ↔ Filial)
    • SaveApply Changes

Validação

No pfSense (Filial)

  1. Status → OpenVPN

  2. Verifique se o túnel está “Connected (Success)”.

  3. Diagnostics → Ping

  4. Teste ping para um IP da LAN da Matriz (ex.: 192.168.1.1).

No OPNsense (Matriz)

  • Verifique em VPN → OpenVPN → Connection Status se a instância está ativa e com tráfego.

Se o ping entre sub-redes responder, a VPN está operacional.


Opcional — Endereço Alternativo (Failover simples no pfSense)

Para permitir que o pfSense tente um segundo IP/porta do servidor (OPNsense) caso o principal falhe:

  1. VPN → OpenVPN → guia Clients → edite VPN-MATRIZ
  2. No fim da página, em Custom options, adicione:

remote 157.113.240.90 1194 udp4
3. SaveApply Changes

Você pode adicionar múltiplas linhas remote para destinos alternativos. A VPN conectará na ordem fornecida.


Boas Práticas e Próximos Passos

  • Restringir regras: após validar a conectividade, restrinja as regras em OpenVPN para apenas os fluxos necessários (origem/destino/porta).
  • Roteamento na LAN: crie regras na LAN de cada firewall permitindo tráfego LAN local → LAN remota, sem forçar gateway, e posicione-as no topo.
  • Observabilidade: habilite logs nas regras de VPN e acompanhe periodicamente os eventos.
  • Monitoramento/auto-recuperação: use Monit (ou equivalente) para monitorar conectividade e reiniciar o túnel em caso de falha.
  • Evolução: quando possível, formate o pfSense com OPNsense também na filial para simplificar suporte e automação.