top of page
Foto do escritorvictor tirloni

[Fortigate] Transporte L2 utilizando VXLAN através de IPSec Tunnel

Atualizado: 30 de mai. de 2024


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:


Topologia feita no EVE-NG

Topologia Demonstrativa

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:


  1. 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;

  2. 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:


Rota da rede LAN da Filial no FW Matriz
  • Também é necessário a criação das Firewalls Policies para a liberação deste tráfego:

Firewall Policy para liberar tráfego L3 - FW Matriz

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:


Rota da rede LAN da Matriz no FW Filial

  • Criação das Firewalls Policies para a liberação deste tráfego L3:

Firewall Policy para liberar tráfego L3 - FW Filial

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*:


Status IPSec Tunnel

*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:


Configurações Firewall Policy entre as Interfaces membros

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 Interf. Software Switch

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



53 visualizações1 comentário

Posts recentes

Ver tudo

1 Comment

Rated 0 out of 5 stars.
No ratings yet

Add a rating
Leandro Grecco Martins
Leandro Grecco Martins
May 13, 2024

Incrível muito obrigado pelo compartilhamento

Like
bottom of page