Muitos de nós tem mais de um pfSense (talvez conectando nossa casa ao escritório, nossa casa à casa dos nossos pais, etc) que se beneficiariam com uma conexão direta entre eles. Neste post vou descrever como criar um túnel IPSEC roteado que conecta ambas as extremidades, de forma que o Site A possa acessar diretamente o Site B e vice-versa.
ncontrei vários posts que assumem que 1) ambos os sites possuem IPs estáticos ou 2) no máximo 1 site tem IP dinâmico. Aqui vamos além disso e configurar um túnel com ambas as extremidades usando DDNS!
As vantagens do IPSec são que nenhum software adicional é necessário em ambos os sites, você pode impor regras específicas de firewall para o tráfego, limitar o tráfego que passa para o outro site pelo túnel (ao invés de todo o tráfego saindo do seu roteador), IPSEC é seguro e consome pouca banda!
Pré-requisitos
- Ambos os sites devem estar usando pfSense e trabalhando corretamente em sua própria LAN
- Não é um requisito IPSec, mas limita o escopo deste post
- Ambos os sites não podem usar a mesma sub-rede (por exemplo, 192.168.1.0/24)
- Esta não é uma limitação do IPSec, mas sim de rede de computadores como um todo.
- Se esse for o seu caso, altere a sub-rede em um dos sites para uma sub-rede diferente (por exemplo, 192.168.2.0/24)
- Ambos os dispositivos pfSense devem ser o gateway padrão na LAN onde estão instalados. Existem soluções alternativas usando rotas estáticas, mas para simplificar vou ignorar esta exceção
- Você deve ter o controle de ambos os sites, pois vamos ter de configurar ambos
- Você não pode usar grupos de gateway como interface WAN, pois a outra extremidade espera que um IP específico para fechar a conexão
- DDNS deve ser configurado em ambos os sites
- Não é necessário caso tenha IP estático
Configuração do túnel VPN
Para se ter uma conexão bem sucedida é necessário que ambos os sites tenham configurações idênticas. Vou destacar explicitamente quando houver configurações específicas de cada site! Antes de começar, certifique-se de que ambos os sites tenham DDNS funcionando e anote suas informações de rede. Para este post, usaremos a seguinte suposição:
WAN FQDN | Sub-rede LAN | Gateway | |
Site A | a.domain.com | 10.0.0.0/24 | 10.0.0.1 |
Site B | b.domain.com | 10.100.0.0/24 | 10.100.0.1 |
Os túneis IPsec têm duas fases: a fase 1 define o servidor remoto e como o túnel é autenticado. A fase 2 define como o tráfego é transportado através do túnel. Para começar, vá para VPN >> IPSec >> Tunnels.
Site A
Precisamos configurar tanto o Site A quanto o B!
Fase 1
Para criar a fase 1, clique em Adicionar P1 e faça o seguinte:
- Informação geral
- Desativado: desmarcado
- Descrição: IPSec Site A para Site B – Fase 1
- Configuração de terminal IKE
- Versão da chave de troca: IKEv2
- Protocolo de Internet: IPv4
- Dispositivo: WAN
- Gateway remoto: b.domain.com
- Esta é a primeira diferença entre o Site A e o Site B. O Site A se referirá ao FQDN do Site B como gateway remoto, enquanto o Site B usará o FQDN do Site A como gateway remoto!
- Proposta de Fase 1 (Autenticação)
- Método de autenticação: PSK mútuo
- Meu identificador: (esta é a segunda diferença)
- DNS dinâmico
- a.domain.com
- Identificador de pares:
- Endereço IP
- 0.0.0.0
- Chave pré-compartilhada: Você ou gera sua chave super longa aqui ou aperte o novo botão de tecla pré-compartilhado
- Tome nota deste PSK como ele será usado no outro site também!
- Proposta fase 1 (algoritmo de criptografia)
- Essas configurações são uma espécie de hardware específico, então você pode ter que ajustá-las mais tarde para mais segurança/velocidade
- Algoritmo de criptografia:
- Algoritmo: AES128-GCM
- Comprimento da chave: 128
- Hash: SHA256
- Grupo DH: 19 (nist ecp256)
- Vida útil (Segundos): 28800
- Opções avançadas
- Rekey desativação: desmarcada
- Tempo de vida (Segundos): vazio
- Desabilitar Reauth: vazio
- Somente resposta: desmarcado
- Apenas um dos sites precisa ser verificado. Aquele que tem IPs mudando mais vezes deve ter isso verificado
- Ação de encerramento da Child SA: Padrão
- NAT Traversal: Auto
- MOBIKE: selecionado
- Isso é importante para suportar IPs Dinâmicos!
- Conexões divididas: desmarcado
- Detecção de pares mortos: selecionado
- Atraso: 10
- Falhas máximas: 5
Clique em Salvar e Aplicar alterações e a Fase 1 para o site A está pronta!
Fase 2
Na tabela de Túneis IPSEC , o túnel de fase 1 recentemente criado deve ser listado. Clique no botão Mostrar entradas da Fase 2 (0), seguido de um clique no botão Adicionar P2:
- Informação geral
- Desativado: desmarcado
- Modo: Roteado (VTI)
- Rede local:
- Esta é outra diferença entre os sites A e B
- Tipo: Endereço
- Endereço: 192.168.99.1
- Pode ser qualquer outra sub-rede não usada por nenhum dos sites!
- Rede remota:
- Esta é outra diferença entre os sites A e B
- Tipo: Endereço
- Endereço: 192.168.99.2
- Descrição: IPSec Site A para Site B – Fase 2
- Proposta de Fase 2 (SA/Key Exchange)
- Isso também é específico de hardware e estou usando isso para compatibilidade
- Protocolo: ESP
- Algoritmos de criptografia:
- AES128-GCM
- 128 bits
- Algoritmos hash: SHA256
- Grupo-chave PFS: 19 (nist-ecp256)
- Vida útil: 3600
- Configuração avançada
- Host de ping automático: 10.100.0.1
- Sim, outra configuração específica do site!
- Host de ping automático: 10.100.0.1
Como de costume, clique em Salvar e Aplicar alterações para concluir esta configuração!
Chaves pré-compartilhadas
Como estamos trabalhando com IPs dinâmicos em ambas as extremidades, precisamos dar um passo extra e criar outro registro para a chave pré-compartilhada que usamos antes. Este registro associará o DDNS do FQDN ao PSK! Vá para a guia Teclas Pré-Compartilhadas e clique em Adicionar:
- Editar segredo pré-compartilhado
- Identificador: b.domain.com
- Mais uma configuração específica do site
- Tipo secreto: PSK
- Chave pré-compartilhada: o mesmo usado durante a Fase 1
- Tipo de identificador: Nome de domínio totalmente qualificado do usuário
- Pool de endereços virtuais: vazio
- Servidor DNS: vazio
- Identificador: b.domain.com
Clique em Salvar e Aplicar alterações!
Atribuindo interfaces ao IPSec
Como escolhemos o Roteado (VTI) como modo fase 2, precisamos atribuir uma interface ao nosso túnel. Vá para Interfaces >> Atribuições >> Atribuições de Interface e na parte inferior da lista você deve ver algo como Portas de rede disponíveis: ipsec1000 (nome do seu túnel). Clique em Adicionar, seguido de um clique na interface recém-criada:
- Configuração geral
- Habilitado: selecionado
- Descrição: IPSEC_SITES_A_B
Deixe o resto como está e clique em Salvar e Aplicar alterações!
Criando rota estática para o outro local
Agora que temos uma interface que representa o outro site, podemos criar uma nova rota para ele navegando para o Sistema >> Roteamento >> Rotas Estáticas e clicando em Adicionar:
- Editar entrada de rota
- Rede de destinos: 10.100.0.0
- Gateway: Selecione a interface que você acabou de atribuir ao túnel IPSec
- Desativado: desmarcado
- Descrição: Rota IPSec para o Site B
Cliques em Salvar e Aplicar alterações completam a configuração no site A.
Configuração da substituição de domínio DNS
Cada site será capaz de resolver nomes do seu lado, mas não do outro. Uma correção rápida para isso é criar uma entrada de substituição de domínio no DNS Resolver. Vá para Serviços >> DNS Resolver >> Sobrescrever domínio, clique em Adicionar e faça o seguinte:
- Domínios para substituir com servidores personalizados
- Domínio: lan.domain.com (ou qualquer nome de domínio do site B)
- Endereço IP: 10.100.0.1
- Consultas TLS: desmarcado
- Nome do host TLS: vazio
- Descrição: Substituição de domínio para o túnel IPSec Local A – Site B
Pressione Salvar e Aplicar alterações.
Site B
O site B deve usar as mesmas configurações, então repita o processo como antes. Abaixo só vou destacar as diferenças!
Fase 1
- Informação geral
- Gateway remoto: a.domain.com
- Descrição: IPSec Site B para Site A – Fase 1
- Proposta de Fase 1 (Autenticação)
- Meu identificador:
- DNS dinâmico
- b.domain.com
- Chave pré-compartilhada: Copie e cole o PSK usado no Site A
- Meu identificador:
- Opções avançadas
- Somente respondente: selecionado
Clique em Salvar e Aplicar alterações e a Fase 1 para o site B está pronta!
Fase 2
Na tabela Túneis IPSEC, o túnel de fase 1 recentemente criado deve ser listado. Clique no botão Mostrar entradas da Fase 2 (0), seguido de um clique no botão Adicionar P2 :
- Informação geral
- Rede local:
- Tipo: Endereço
- Endereço: 192.168.99.2
- Rede remota:
- Tipo: Endereço
- Endereço: 192.168.99.1
- Descrição: IPSec Site B para Site A – Fase 2
- Rede local:
- Configuração avançada
- Host de ping automático: 10.0.0.1
Como de costume, clique em Salvar e Aplicar alterações para concluir esta configuração!
Chaves pré-compartilhadas
Da mesma forma que o Site A, vá para a guia Chaves Pré-Compartilhadas e clique em Adicionar:
- Editar segredo pré-compartilhado
- Identificador: a.domain.com
Uma última vez para o site B, clique em Salvar e Aplicar alterações!
Atribuindo interfaces ao IPSec
Da mesma forma que o Site A, vá para Interfaces >> Atribuições>> Atribuições de Interface e clique em Adicionar na porta IPSec disponível, seguido de um clique em seu nome:
- Configuração geral
- Habilitado: selecionado
- Descrição: IPSEC_SITES_B_A
Deixe o resto como está e clique em Salvar e Aplicar alterações!
Criando rota estática para o outro local
Agora que temos uma interface que representa o outro site, podemos criar uma nova rota para ele navegando para o Sistema >> Roteamento >> Rotas Estáticas e clicando em Adicionar:
- Editar entrada de rota
- Rede de destinos: 10.0.0.0
- Gateway: Selecione a interface que você acabou de atribuir ao túnel IPSec
- Desativado: desmarcado
- Descrição: Rota IPSEC para o Site A
Cliques em Salvar e Aplicar alterações completam a configuração no site B.
Configuração da substituição do domínio DNS
- Domínios para substituir com servidores personalizados
- Domínio: lan.domain.com (ou qualquer nome de domínio do site B)
- Endereço IP: 10.0.0.1
- Consultas TLS: desmarcado
- Nome do host TLS: vazio
- Descrição: Substituição de domínio para o túnel IPSec Local A – Site B
Pressione Salvar e Aplicar alterações.
Verifique o status do túnel
Para verificar se tudo foi feito corretamente, temos que ir ao Status >> IPSec >> Status do IPSEC no site B (supondo que você verifique o Responder apenas para o Site A). Haverá uma tabela com seu túnel. Se o Status for “Estabelecido”, show de bola. Se não, tente clicar em Conectar VPN para começar. Se a conexão nunca for estabelecida, verifique todas as configurações. Você provavelmente confundiu alguma coisa!
Adicionar regras de firewall
Tenho certeza que assim que você viu o status estabelecido, a primeira coisa que você tentou foi pingar o outro site … Também fiz isso! Para sua surpresa, não funcionou. Isso é esperado, pois embora seu pfSense saiba sobre a existência do túnel, ele não tem regras de firewall para permitir o tráfego…
Em ambos os sites, vá para Firewall >> Rules >> IPsec e crie uma regra permitir que todas as regras clicando em Adicionar:
- Editar regra de firewall
- Ação: Liberar
- Desativado: desmarcado
- Interface: IPsec
- Família endereço: IPv4
- Protocolo: Qualquer
- Origem
- Origem: Qualquer
- Destino
- Destino: Qualquer
- Opções extras
- Log: desmarcado
- Descrição: Padrão permitir que todas as regras
Finalize clicando em Salvar e Aplicar atualizações!
Regras de firewall mais restritivas são melhores, principalmente quando impõem protocolos, etc!
Verifique se o tráfego está passando
Assim que você tiver adicionado as regras de firewall em ambos os sites e o túnel tiver sido estabelecido, então você deve conseguir pingar a outra extremidade!
Opcional: Adicionando widget do painel
Isso não tem nada a ver com o funcionamento do IPSec.. No entanto, adicionar um widget Dashboard pode ajudá-lo a monitorar se algo está errado. Ou talvez só tenha um visual legal 🙂
No painel pfSense, clique na seção + Status / Dashboard . A lista de widgets aparecerá e você só tem que clicar em +IPSec para adicioná-lo. É isso mesmo!