Normalmente quando trata-se de uma empresa que possui diversas unidades com um Firewall Fortigate em cada local, entre as mais diversas possibilidades, uma forma de comunicação entre as unidades é através de uma VPN Site-to-Site para o roteamento em L3 das redes LAN's de cada local.
Entretanto, há casos em que é necessário realizar um transporte L2 entre os locais distintos para que determinados dispositivos estejam na mesma subrede. Por exemplo, há um Servidor que executa determinados serviços em que ele só busca hosts que estão na mesma subrede (consequentemente, no mesmo domínio de broadcast), ou até mesmo a migração de Servidores entre um local e outro, em que é necessário manter a mesma subrede.
Hoje falaremos sobre uma configuração que é possível ser realizada no Firewall Fortigate, que é transportar pacotes de camada 2 (L2) através de pacotes de camada 3 (L3 - IP). Para isso, utilizaremos uma tecnologia chamada Virtual Extensible LAN (VXLAN) para realizar o transporte L2 em conjunto com o IPSec tunnel que será estabelecido entre as unidades.
Topologia Explicada:
O nosso cliente possuí uma Matriz e uma unidade Filial, onde cada local possuí um Firewall Fortigate como Gateway da rede. Cada local possuí uma rede LAN específica, tendo como Gateway o Firewall de cada local:
Matriz: 192.168.1.0/24 - Gateway 192.168.1.1;
Filial: 192.168.2.0/24 - Gateway 192.168.2.1.
Há também um Servidor em cada local que possuem a mesma rede LAN (192.168.50.0/24), sendo que a Matriz é o Gateway desta rede (192.168.50.1). Os IP's de cada servidor são o seguinte:
Matriz: 192.168.50.10;
Filial: 192.168.50.11.
A comunicação entre as unidades ocorre via um IPSec tunnel criptografado.
Objetivo:
O cliente possuí uma demanda em que será necessário realizar um transporte L2 entre a Matriz e a Filial, pois há um Servidor em cada local que é necessário estarem na mesma rede LAN, onde, conforme já mencionado, tendo como Gateway desta rede o Firewall da Matriz.
A rede LAN deste transporte L2 é a 192.168.50.0/24, sendo que o Gateway desta rede (192.168.50.1) é o Firewall da Matriz.
Os servidores das unidades que terão a mesma subrede estão diretamente conectados na porta 3 do Firewall de cada local, e as redes LAN's específicas estão diretamente conectados na porta 2.
O objetivo será cumprido através de um IPSec tunnel, onde através deste tunnel iremos encapsular uma VXLAN para realização do transporte L2, ou seja, iremos encapsular pacotes L2 (VXLAN) através de pacotes L3 (IPSec).
Utilizando do mesmo tunnel, também é necessário realizar a comunicação L3 entre as redes LAN's 192.168.1.0/24 (Matriz) e 192.168.2.0/24 (Filial).
Organização do Post
Primeiramente iremos demonstrar a configuração conforme objetivo principal, que é realizar a comunicação tanto do Transporte L2 quanto do roteamento entre as LAN's das unidades utilizando o mesmo IPSec tunnel.
Após, faremos uma demonstração de uma configuração mais simples, que é a configuração de um IPSec tunnel dedicado para o Transporte L2 entre os locais, ou seja, este Tunnel será exclusivo para a comunicação dos Servidores que possuem a mesma subrede e não será possível utilizar o mesmo tunnel para o tráfego entre as redes LAN's específicas de cada local.
Topologia Laboratório:
Configurações
Configuração Matriz:
Primeiramente, iremos configurar a Fase 1 e a Fase 2 do IPSec tunnel que será estabelecido com o Firewall da Filial.
config vpn ipsec phase1-interface <--- Configuração Fase 1
edit "Fil01-VXLAN-ph1" <--- Nome da Fase 1
set interface "port1" <--- Interface WAN do Firewall
set peertype any
set net-device disable
set proposal des-sha256 <--- Criptografia da Fase 1
set remote-gw 192.168.100.237 <--- IP WAN do FW Filial
set psksecret testelabvxlanipsec <--- PSK do IPSec
next
end
config vpn ipsec phase2-interface <--- Configuração Fase 2
edit "Fil01-VXLAN-ph2" <--- Nome da Fase 2
set phase1name "Fil01-VXLAN-ph1" <--- Setar a Fase 1 configurada
set proposal des-sha256 <--- Criptografia da Fase 2
next
end
Agora devemos configurar a Interface do IPSec Tunnel criada anteriormente, e setar o IP da interface e também o IP Remoto (estes IP's podem ser configurados de acordo com a range utilizada na rede, é apenas para comunicação entre os Firewalls de cada local). Essa configuração é necessária devido aos apontamentos da VXLAN que será feito posteriormente, através destes IP's configurados:
config system interface
edit "Fil01-VXLAN-ph1"
set vdom "root"
set ip 10.10.10.1 255.255.255.255 <--- IP Local
set type tunnel <--- Interface tipo tunnel
set remote-ip 10.10.10.2 255.255.255.255 <--- IP Remoto FW Filial
set interface "port1" <--- WAN do FW
next
end
Agora iremos configurar a VXLAN ID 10, que será transportada entre Matriz e Filial:
config system vxlan
edit "VXLAN10"
set interface "Fil01-VXLAN-ph1" <--- Atribuir na Fase 1 do IPSec
set vni 10 <--- ID da VXLAN
set remote-ip "10.10.10.2" <--- Mesmo IP do "Remote" da Int IPSec
next
end
Após a configuração do IPSec tunnel e a VXLAN, iremos agrupar a interface em que é conectado o Servidor que faz o Transporte L2 com a Filial (port3), com a VXLAN criada, utilizando switch-interface:
config system switch-interface
edit "VXLAN10-SWIF" <--- Nome do switch-interface
set vdom "root" <--- VDOM utilizada
set member "VXLAN10" "port3" <--- Interfaces
set intra-switch-policy implicit <--- Explicação abaixo
next
end
Referente ao comando set intra-switch-policy, temos duas opções:
set intra-switch-policy implicit (default): com esta configuração, não é necessário realizar a configuração de firewall policy para liberar o tráfego entre as interfaces que são membros do switch-interface. Por default, o tráfego entre as interfaces que estão agrupadas é liberado;
set intra-switch-policy explicit: com esta configuração, é necessário realizar a configuração de firewall policy para liberar o tráfego entre as interfaces agrupadas.
OBS.: Devido a limitações de licenciamento na VM do Fortigate, não foi possível configurar VLAN para atrelar à este transporte, portanto, foi utilizado a port3 do Firewall para atrelar com a VXLAN, entretanto a configuração seria a mesma com VLAN, com exceção que seria incluído a VLAN no Switch Interface invés da porta física.
Na Matriz, também foi configurado o IP 192.168.50.1/24 na Interface do tipo Software Switch que foi criada (conforme CLI demonstrado acima), pois a Matriz que será o Gateway deste transporte com a Filial:
Para o funcionamento da comunicação L3 entre as redes LAN's entre Matriz (192.168.1.0/24) e Filial (192.168.2.0/24), devemos criar as rotas estáticas apontando para o IPSec Tunnel como next-hop:
Também é necessário a criação das Firewalls Policies para a liberação deste tráfego:
Configuração Filial:
As configurações da Filial são praticamente as mesmas da Matriz, entretanto os apontamentos do tunnel são "inversos":
config vpn ipsec phase1-interface <--- Configuração Fase 1
edit "Mat-VXLAN-ph1" <--- Nome da Fase 1
set interface "port1" <--- Interface WAN do Firewall
set peertype any
set net-device disable
set proposal des-sha256 <--- Criptografia da Fase 1
set remote-gw 192.168.100.71 <--- IP WAN do FW Matriz
set psksecret testelabvxlanipsec <--- PSK do IPSec
next
end
config vpn ipsec phase2-interface <--- Configuração Fase 2
edit "Mat-VXLAN-ph2" <--- Nome da Fase 2
set phase1name "Mat-VXLAN-ph1" <--- Setar a Fase 1 configurada
set proposal des-sha256 <--- Criptografia da Fase 2
next
end
Importante lembrar que os tipos de criptografias utilizados tanto na Fase 1 quanto na Fase 2 na configuração do IPSec tunnel em ambos os Firewalls devem dar match para o tunnel funcionar (e claro, a pre-shared key (psk) também).
Agora devemos configurar a Interface do IPSec Tunnel criada anteriormente, e setar o IP da interface e também o IP Remoto (estes IP's podem ser configurados de acordo com a range utilizada na rede, é apenas para comunicação entre os Firewalls de cada local). Essa configuração é necessária devido aos apontamentos da VXLAN que será feito posteriormente, através destes IP's configurados:
config system interface
edit "Mat-VXLAN-ph1"
set vdom "root"
set ip 10.10.10.2 255.255.255.255 <--- IP Local FW Filial
set type tunnel <--- Interface tipo tunnel
set remote-ip 10.10.10.1 255.255.255.255 <--- IP Remoto FW Matriz
set interface "port1" <--- WAN do FW
next
end
Agora iremos configurar a VXLAN ID 10, que será transportada entre Matriz e Filial:
config system vxlan
edit "VXLAN10"
set interface "Mat-VXLAN-ph1" <--- Atribuir na Fase 1 do IPSec
set vni 10 <--- ID da VXLAN
set remote-ip "10.10.10.1" <--- Mesmo IP do "Remote" da Int IPSec
next
end
Após a configuração do IPSec tunnel e a VXLAN, iremos agrupar a interface em que é conectado o Servidor que faz o Transporte L2 com a Matriz (port3), com a VXLAN criada, utilizando switch-interface:
config system switch-interface
edit "VXLAN10-SWIF" <--- Nome do switch-interface
set vdom "root" <--- VDOM utilizada
set member "VXLAN10" "port3" <--- Interfaces
next
end
-
OBS.: conforme na configuração da Filial também foi utilizado o "set intra-switch-policy implicit", por ser o default, não aparece na configuração.
Rota estática do destino rede da Matriz (192.168.1.0/24) tendo como next-hop o IPSec Tunnel:
Criação das Firewalls Policies para a liberação deste tráfego L3:
Desta forma, finalizamos as configurações dos Firewalls, e já obtemos comunicação tanto entre as redes LAN's de cada local, quanto a comunicação do L2 entre os Servidores, utilizando o mesmo IPSec tunnel.
Resultados Obtidos
Após a finalização destas configurações no Firewall da Matriz e Filial, já podemos observar que o IPSec tunnel subiu*:
*Provavelmente, de primeiro momento irá subir apenas a Fase 1 do tunnel, a Fase 2 irá subir quando for gerado tráfego neste tunnel, pois o auto-negotiate da Fase 2 por default é disabled.
Teste do Transporte L2
Acessando o Servidor da Filial, podemos observar que já está pegando IP via DHCP da rede 192.168.50.0/24 (que fica na Matriz), conforme demonstramos abaixo junto ao teste de Captura de Pacote feita via port2 do Firewall da Matriz, onde pegou o IP 192.168.50.11/24.
E a partir do Servidor da Filial, já obtemos comunicação via PING para o Servidor da Matriz (192.168.50.10), através do tunnel criptografado configurado. Podemos observar através da Captura de Pacote realizada na port1 (WAN) do Firewall da Matriz:
Podemos observar acima que o pacote ICMP enviado pelo Servidor da Filial para o da Matriz está sendo criptografado via protocolo ESP do IPSec. Outro fator interessante também é que não visualizamos os IP's de origem e destino desta comunicação (origem 192.168.50.11 e destino 192.168.50.10), pois esta comunicação L2 está sendo encapsulada (e criptografada) através do L3 IP do tunnel (através dos IP's de WAN dos Firewalls).
Teste da comunicação L3 entre as LAN's
Realizando um teste de ping a partir do PC da Filial (192.168.2.2) para o PC da Matriz (192.168.1.2), observamos que a comunicação está ocorrendo através do IPSec tunnel. Ao lado esquerdo, é uma captura de pacote da port1 do Firewall da Matriz.
Desta forma, concluímos os testes e validações do funcionamento das comunicações L2 e L3 entre a Matriz e a Filial através do mesmo IPSec tunnel.
Agora vamos a segunda parte do Post, onde será demonstrado as configurações para a comunicação do L2 através do IPSec Tunnel exclusivo
Objetivo:
Realizar um Transporte L2 entre Matriz e Filial através de um IPSec Tunnel dedicado para isso.
Configurações
Será detalhado apenas as configurações realizadas para o IPSec tunnel e o Transporte L2.
Configuração Matriz:
Primeiramente, iremos configurar a Fase 1 e a Fase 2 do IPSec tunnel que será estabelecido com o Firewall da Filial. A configuração é semelhante com a que realizamos anteriormente, entretanto, setamos o tipo de encapsulamento vxlan no tunnel:
config vpn ipsec phase1-interface <--- Configuração Fase 1
edit "Fil01-VXLAN-ph1" <--- Nome da Fase 1
set interface "port1" <--- Interface WAN do Firewall
set peertype any <--- Interface WAN do Firewall
set net-device disable
set proposal des-sha256 <--- Criptografia da Fase 1
set encapsulation vxlan <--- Modo encapsulamento do tunnel
set encapsulation-address ipv4
set encap-local-gw4 192.168.100.71 <--- IP Local da WAN
set encap-remote-gw4 192.168.100.237 <--- IP WAN do FW Filial
set remote-gw 192.168.100.237 <--- IP WAN do FW Filial
set psksecret testelabvxlanipsec <--- PSK do IPSec
next
end
config vpn ipsec phase2-interface <--- Configuração Fase 2
edit "Fil01-VXLAN-ph2" <--- Nome da Fase 2
set phase1name "Fil01-VXLAN-ph1" <--- Setar a Fase 1 configurada
set proposal des-sha256 <--- Criptografia da Fase 2
next
end
Após a configuração do IPSec tunnel, iremos agrupar a interface em que é conectado o Servidor que faz o Transporte L2 com a Filial (port2), com a interface da Fase 1 do IPSec (Fil01-VXLAN-ph1), utilizando switch-interface:
config system switch-interface
edit "VXLAN_L2" <--- Nome do switch-interface
set vdom "root" <--- VDOM utilizada
set member "Fil01-VXLAN-ph1" "port2" <--- Interfaces
set intra-switch-policy explicit
next
end
Neste caso, para demonstração, utilizamos o intra-switch-policy em modo explícito, onde conforme já explicado acima, é nessário realizar a configuração de firewall policy para liberar o tráfego entre as interfaces que são membros do switch-interface.
A utilização destas duas regras (entre modo implícito ou explícito) depende das políticas de segurança e compliance da empresa. Como utilizamos o modo explicit, foi necessário realizar a liberação do tráfego via firewall policy, conforme demonstramos abaixo:
Na Matriz, também foi configurado o IP 192.168.50.1/24 na Interface do tipo Software Switch que foi criada (conforme CLI demonstrado acima), pois a Matriz que será o Gateway deste transporte com a Filial:
Configuração Filial
As configurações da Filial são praticamente as mesmas da Matriz, entretanto os apontamentos do tunnel são "inversos":
config vpn ipsec phase1-interface <--- Configuração Fase 1
edit "Mat-VXLAN-ph1" <--- Nome da Fase 1
set interface "port1" <--- Interface WAN do Firewall
set peertype any <--- Interface WAN do Firewall
set net-device disable
set proposal des-sha256 <--- Criptografia da Fase 1
set encapsulation vxlan <--- Modo encapsulamento do tunnel
set encapsulation-address ipv4
set encap-local-gw4 192.168.100.237 <--- IP Local da WAN
set encap-remote-gw4 192.168.100.71 <--- IP WAN do FW Matriz
set remote-gw 192.168.100.71 <--- IP WAN do FW Matriz
set psksecret testelabvxlanipsec <--- PSK do IPSec
next
end
config vpn ipsec phase2-interface <--- Configuração Fase 2
edit "Mat-VXLAN-ph2" <--- Nome da Fase 2
set phase1name "Mat-VXLAN-ph1" <--- Setar a Fase 1 configurada
set proposal des-sha256 <--- Criptografia da Fase 2
next
end
Após a configuração do IPSec tunnel, conforme também fizemos na Matriz, iremos agrupar a interface em que é conectado o Servidor que faz o Transporte L2 com a Matriz (port2), com a interface da Fase 1 do IPSec (Mat-VXLAN-ph1), utilizando switch-interface:
config system switch-interface
edit "VXLAN_L2" <--- Nome do switch-interface
set vdom "root" <--- VDOM utilizada
set member "Mat-VXLAN-ph1" "port2" <--- Interfaces
set intra-switch-policy explicit
next
end
Conclusão
Com isso, concluí-se a configuração do IPSec tunnel dedicado para o Transporte L2, e possívelmente já obterá a comunicação entre os dois locais. Os resultados obtidos serão semelhantes ao "Teste do Transporte L2" conforme demonstrado acima.
A diferença desta última configuração para a primeira, é que nesta o modo de encapsulamento do tunnel é do tipo vxlan.
Referências
Incrível muito obrigado pelo compartilhamento