Vous êtes sur la page 1sur 20

LAB 3 - SD-WAN / ADVPN

PRÉSENTATION
Suite à l'architecture Hub & Spoke et SD-WAN abordée précédemment,
nous allons attaquer le sujet du SD-WAN / ADVPN avec un lab
légèrement différent. Les spokes seront, cette fois-ci, reliés au hub par
2 liens internet qui seront gérés par la technologie SD-WAN pour choisir
le meilleur lien. Il est particulièrement utile pour les entreprises ayant
des succursales dispersées géographiquement ou des besoins de
connectivité complexes.

CONTEXTE

Fortinet Auto Discovery VPN (ADVPN) permet d'établir dynamiquement


des tunnels directs (appelés shortcuts) entre les sites distants d'une
architecture Hub and Spoke.
Une fois qu'un tunnel shortcut est établi entre deux sites distants et que
le routage a convergé, le trafic spoke à spoke n'a plus besoin de passer
par le hub. Un chemin direct a été créé.
Serveurs et logiciels utilisés
• VMware-workstation v17.0.0 [lien]
• EVE-NG v5.0.1-19 pour VMware [lien]
• FortiGate v7.0.12 en format kvm (HQ, Branch-x, INET et ISP), 1
Go de RAM pour chaque appliance [lien]
• Virtual PC Simulator (VPCS)
Note : vous devez posséder un compte pour télécharger l'appliance
virtuelle FortiGate. Elle fonctionne pour une durée limitée (15 jours)
sans les algorithmes forts SSL, sans mises à jour, sans FortiGuard etc...
Depuis la v7.2.1, le mode de licensing a changé [lien].
Schéma

SD-WAN / ADVPN
L'appliance FortiGate sera utilisée en tant que firewall et routeur :
• Firewall HQ, 192.168.132.201 (Mgmt)
• Firewall Branch-1, 192.168.132.202 (Mgmt)
• Firewall Branch-2, 192.168.132.203 (Mgmt)
• Routeurs ISP-A et ISP-B, pas de réelle sortie vers internet
• Routeur INET, interco entre ISP-A et ISP-B
Notes :
L'adresse 192.168.132.2 est la passerelle du réseau 192.168.132.0/24
utilisé pour le management.
Configuration de base
On crée les configurations de base pour les firewalls et les 3 routeurs
(qui sont également des FortiGate) : hostname, interfaces, routage et
règles firewall.
Les configurations sont téléchargeables ici.
J'ajoute ici la configuration des PC (VPCS) :
# HQ-PC
ip 172.16.0.10/24 172.16.0.1
save

# Branch-1-PC
ip 172.16.1.10/24 172.16.1.1
save

# Branch-2-PC
ip 172.16.2.10/24 172.16.20.1
save

Note : en cas de perte temporaire de connectivité avec les routes des


sites distants, une bonne pratique consiste à envoyer le trafic destiné à
ces réseaux dans une route blackhole jusqu'à ce que la connectivité
soit rétablie.

Configuration SD-WAN Underlay


Pour chaque site, la configuration SD-WAN pour internet sera assez
simple :
Algorithme en source-dest-ip-based pour la règle implicite
1 route par défaut vers la zone SD-WAN WWW
1 policy firewall LAN vers SD-WAN WWW avec source nat
1 health-check vers une IP située sur "internet" avec les 2 membres
ISP-X
1 règle SD-WAN qui se base sur la qualité des liens (latence) en
préférant l'ISP-A
Exemple de configuration pour HQ :
config system sdwan
set status enable
set load-balance-mode source-dest-ip-based
config zone
edit WWW
next
end
config members
edit 1
set interface port2
set zone WWW
set gateway 20.0.0.1
next
edit 2
set interface port3
set zone WWW
set gateway 30.0.0.1
next
end
config health-check
edit SERV_INET
set server 100.64.0.254
set interval 2000
set failtime 3
set recoverytime 3
set update-static-route disable
set members 1 2
config sla
edit 1
set latency-threshold 100
set jitter-threshold 10
set packetloss-threshold 1
next
end
next
end
config service
edit 1
set name DEFAULT_WWW
set mode priority
set dst all
set src 172.16.0.0/24
set health-check SERV_INET
set link-cost-factor latency
set priority-members 1 2
next
end
end
config router static
edit 2
set distance 1
set comment DEFAULT_ROUTE
set sdwan-zone WWW
next
edit 3
set dst 172.16.0.0 255.255.0.0
set blackhole enable
next
end
config firewall policy
edit 1
set name LAN_to_WWW
set srcintf port4
set dstintf WWW
set action accept
set srcaddr "172.16.0.0/24"
set dstaddr all
set schedule always
set service ALL
set logtraffic all
set nat enable
next
end

Note :
Il ne faut pas oublier de faire aussi la configuration SD-WAN pour le
Branch-1 et Branch-2

Configuration Overlay
On passe à la configuration des IPsec. Cette fois-ci, il y aura 2 tunnels
IPsec par site. Contrairement au lab précédent, les tunnels IPsec sont
en configuration statique, l'administrateur choisit les IP du HUB et de
chaque SPOKE.
2 plages en /24 ont été choisies pour les 2 tunnels IPsec :
• ISP-A : 192.168.254.0/24
• ISP-B : 192.168.255.0/24
Pour le HUB (HQ), les adresses 192.168.25X.254 sont des IPs fictives à
ne pas utiliser par un SPOKE.

• Hub (HQ) :
config vpn ipsec phase1-interface
edit VPN-ISP-A
set type dynamic
set interface port2
set ike-version 2
set proposal des-sha1
set dhgrp 14
set peertype any
set net-device disable
set add-route disable
set dpd on-demand
set dpd-retrycount 3
set dpd-retryinterval 10
set psksecret Password
set auto-discovery-sender enable
next
edit VPN-ISP-B
set type dynamic
set interface port3
set ike-version 2
set proposal des-sha1
set dhgrp 14
set peertype any
set net-device disable
set add-route disable
set dpd on-demand
set dpd-retrycount 3
set dpd-retryinterval 10
set psksecret Password
set auto-discovery-sender enable
next
end
config vpn ipsec phase2-interface
edit VPN-ISP-A
set phase1name VPN-ISP-A
set proposal des-sha1
set keepalive enable
next
edit VPN-ISP-B
set phase1name VPN-ISP-B
set proposal des-sha1
set keepalive enable
next
end
config system interface
edit VPN-ISP-A
set vdom root
set ip 192.168.254.1/32
set type tunnel
set remote-ip 192.168.254.254/24
set interface port2
set allowaccess ping
next
edit VPN-ISP-B
set vdom root
set ip 192.168.255.1/32
set type tunnel
set remote-ip 192.168.255.254/24
set interface port3
set allowaccess ping
next
end

Notes :
• L'appliance FortiGate en mode trial (15 jours) ne permet pas
d'utiliser des algorithmes forts comme AES.
• "set add-route disable" est requis pour le routage dynamique
• "set net-device disable" permet de meilleures performances ; tous
les tunnels partageront la même interface
• Les réseaux src/dst de la phase 2 sont implicitement 0.0.0.0/0,
préférés pour le routage dynamique
• Attention à ne pas donner de noms trop longs aux VPNs. Voir ici.

Mais où est la configuration ADVPN sur le Hub ? La voici :


config vpn ipsec phase1-interface
edit VPN-ISP-A
set auto-discovery-sender enable
next
edit VPN-ISP-B
set auto-discovery-sender enable
next
end

La commande permet au Hub de prévenir l'initiateur de la requête


(Spoke A) qu'il existe un chemin plus direct pour joindre le Spoke B.

Note : "set net-device disable" fait également partie de la configuration


ADVPN mais est déjà inclut dans la configuration overlay Hub & Spoke.

• Spoke A (Branch-1) :

Une IP sera configurée sur chaque interface tunnel en précisant


également l'IP du hub (remote-ip).
config vpn ipsec phase1-interface
edit VPN-ISP-A
set interface port2
set ike-version 2
set proposal des-sha1
set dhgrp 14
set type static
set remote-gw 20.0.0.2
set peertype any
set localid Branch-1-ISP-A
set net-device enable
set add-route disable
set dpd on-idle
set dpd-retrycount 3
set dpd-retryinterval 10
set psksecret Password
set auto-discovery-receiver enable
next
edit VPN-ISP-B
set interface port3
set ike-version 2
set proposal des-sha1
set dhgrp 14
set type static
set remote-gw 30.0.0.2
set peertype any
set localid Branch-1-ISP-B
set net-device enable
set add-route disable
set dpd on-idle
set dpd-retrycount 3
set dpd-retryinterval 10
set psksecret Password
set auto-discovery-receiver enable
next
end
config vpn ipsec phase2-interface
edit VPN-ISP-A
set phase1name VPN-ISP-A
set proposal des-sha1
set auto-negotiate enable
next
edit VPN-ISP-B
set phase1name VPN-ISP-B
set proposal des-sha1
set auto-negotiate enable
next
end
config system interface
edit VPN-ISP-A
set type tunnel
set interface port2
set allowaccess ping
set ip 192.168.254.2/32
set remote-ip 192.168.254.1/24
next
edit VPN-ISP-B
set type tunnel
set interface port3
set allowaccess ping
set ip 192.168.255.2/32
set remote-ip 192.168.255.1/24
next
end
Ci-dessous, la configuration ADVPN pour le spoke :
config vpn ipsec phase1-interface
edit VPN-ISP-A
set auto-discovery-receiver enable
next
edit VPN-ISP-B
set auto-discovery-receiver enable
next
end
config system interface
edit VPN-ISP-A
set allowaccess ping
next
edit VPN-ISP-B
set allowaccess ping
next
end

La commande "set auto-discovery-receiver" autorise le tunnel du spoke


à participer à une offre de shortcut. Le ping des interfaces tunnel est
essentiel au monitoring des shortcut.

• Spoke B (Branch-2) :
config vpn ipsec phase1-interface
edit VPN-ISP-A
set interface port2
set ike-version 2
set proposal des-sha1
set dhgrp 14
set type static
set remote-gw 20.0.0.2
set peertype any
set localid Branch-2-ISP-A
set net-device enable
set add-route disable
set dpd on-idle
set dpd-retrycount 3
set dpd-retryinterval 10
set psksecret Password
set auto-discovery-receiver enable
next
edit VPN-ISP-B
set interface port3
set ike-version 2
set proposal des-sha1
set dhgrp 14
set type static
set remote-gw 30.0.0.2
set peertype any
set localid Branch-2-ISP-B
set net-device enable
set add-route disable
set dpd on-idle
set dpd-retrycount 3
set dpd-retryinterval 10
set psksecret Password
set auto-discovery-receiver enable
next
end
config vpn ipsec phase2-interface
edit VPN-ISP-A
set phase1name VPN-ISP-A
set proposal des-sha1
set auto-negotiate enable
next
edit VPN-ISP-B
set phase1name VPN-ISP-B
set proposal des-sha1
set auto-negotiate enable
next
end
config system interface
edit VPN-ISP-A
set type tunnel
set interface port2
set allowaccess ping
set ip 192.168.254.3/32
set remote-ip 192.168.254.1/24
next
edit VPN-ISP-B
set type tunnel
set interface port3
set allowaccess ping
set ip 192.168.255.3/32
set remote-ip 192.168.255.1/24
next
end

Ci-dessous, la configuration ADVPN pour le spoke :


config vpn ipsec phase1-interface
edit VPN-ISP-A
set auto-discovery-receiver enable
next
edit VPN-ISP-B
set auto-discovery-receiver enable
next
end
config system interface
edit VPN-ISP-A
set allowaccess ping
next
edit VPN-ISP-B
set allowaccess ping
next
end

Configuration BGP

• Hub (HQ) :
config router bgp
set as 65000
set router-id 172.16.0.1
set ibgp-multipath enable
config neighbor-group
edit ISP-A
set remote-as 65000
set interface VPN-ISP-A
set update-source VPN-ISP-A
set route-reflector-client enable
next
edit ISP-B
set remote-as 65000
set interface VPN-ISP-B
set update-source VPN-ISP-B
set route-reflector-client enable
next
end
config neighbor-range
edit 1
set prefix 192.168.254.0 255.255.255.0
set neighbor-group ISP-A
next
edit 2
set prefix 192.168.255.0 255.255.255.0
set neighbor-group ISP-B
next
end
config network
edit 1
set prefix 172.16.0.0 255.255.255.0
next
end
end

Notes :
• "neighbor-group" et "neighbor-range" pour régler la portée du BGP
• "set route-reflector-client enable" permet aux spokes d'apprendre
les réseaux d'autres spokes
• "network" pour annoncer le ou les réseaux souhaités
• "set ibgp-multipath enable" permet le routage ECMP pour les
routes IBGP
On continue avec la configuration des firewalls spoke :

• Spoke (Branch-1) :
config router bgp
set as 65000
set router-id 172.16.1.1
set ibgp-multipath enable
config neighbor
edit 192.168.254.1
set remote-as 65000
set interface VPN-ISP-A
set update-source VPN-ISP-A
next
edit 192.168.255.1
set remote-as 65000
set interface VPN-ISP-B
set update-source VPN-ISP-B
next
end
config network
edit 1
set prefix 172.16.1.0 255.255.255.0
next
end
end

• Spoke (Branch-2) :
config router bgp
set as 65000
set router-id 172.16.2.1
set ibgp-multipath enable
config neighbor
edit 192.168.254.1
set remote-as 65000
set interface VPN-ISP-A
set update-source VPN-ISP-A
next
edit 192.168.255.1
set remote-as 65000
set interface VPN-ISP-B
set update-source VPN-ISP-B
next
end
config network
edit 1
set prefix 172.16.2.0 255.255.255.0
next
end
end

Optimisation BGP

Avec l'option route-reflector activée sur le Hub, chaque spoke apprend


les réseaux des autres spokes.

Par défaut, le FortiGate n'autorise qu'un chemin pour les routes via
route-reflector. Pour modifier ce comportement, on va activer la
fonctionnalité additional path.

• Hub (HQ) :
config router bgp
set additional-path enable
set additional-path-select 2
config neighbor-group
edit ISP-A
set additional-path send
set adv-additional-path 2
next
edit ISP-B
set additional-path send
set adv-additional-path 2
next
end
end

• Spokes Branch-1 et 2) :
config router bgp
config neighbor
edit 192.168.254.1
set additional-path receive
next
edit 192.168.255.1
set additional-path receive
next
end
end

Si on regarde la table de routage de Branch-1, les 4 routes sont


présentes :
Configuration SD-WAN Overlay
Cette partie sera un peu plus graphique ;
Les captures ont été prises sur le hub (HQ) :
• Création de la zone SDWAN utilisant l'overlay via Network > SD-
WAN > SD-WAN Zones > Create New > SD-WAN Zone. On la
nomme SDWAN puis OK.

Création de zone SDWAN

• On ajoute maintenant les membres à la zone SDWAN via Network


> SD-WAN > SD-WAN Zones > Create New > SD-WAN Member

Ajout des membres à la nouvelle zone SDWAN

• On sélectionne pour chaque lien overlay (VPN IPsec), l'interface


(VPN-ISP-X) et la zone associée (SDWAN). Pas besoin de passerelle
ou de modifier les coût et priorité.
Exemple avec le 1er VPN

• Résultat :

Zones SD-WAN Underlay & Overlay


• On crée les policies firewall via Policy & Objects > Firewall
Policy:

Règles firewall sur le Hub

Note : il est important de créer la policy SDWAN to SDWAN car elle va


permettre aux spokes de répondre aux offres shortcut.

Sur les spokes, le mode opératoire est le même : création de la zone


SDWAN, ajout des membres overlay puis création des règles firewall.
Exemple des règles firewall pour Branch-1:

Règles firewall sur Branch-1

• On passe aux règles SD-WAN pour l'overlay sur HQ. Ce sont 2


règles configurées en manuel, avec en préférence le VPN-ISP-A.
Règles SD-WAN sur le hub

Attention à l'ordre des règles. On met les règles les plus fines en début
de liste. Les règles SD-WAN sont traitées de la même manière que des
règles firewall : de haut en bas.

Règles SD-WAN sur Branch-1 et Branch-2 :

Règles SD-WAN sur le spoke Branch-1

Règles SD-WAN sur le spoke Branch-2

Performance SLAs (Overlay)


Pour la mise en place des Performance SLAs sur l'overlay, il faut
s'assurer que le ou les flux soient bien autorisés sur le firewall distant
si les sondes utilisées sont en mode active. En effet, les adresses sources
utilisées pour les sondes seront les adresses IP des tunnels
(192.168.25X.X).
Faisons un test. J'ajoute une sonde sur le firewall HQ pour vérifier les
performances des tunnels vers le firewall Branch-1. L'adresse IP de
destination testée sera l'interface LAN de Sapporo (172.16.1.1).
Un firewall heureux

Notes :
• Il est conseillé d'utiliser une loopback pour les sondes actives.
Celle-ci sera annoncé en BGP aux voisins.
• Pour éviter d'envoyer des sondes toutes les x secondes, on peut
employer le mode Passive des sondes qui se sert du trafic (TCP)
pour déterminer la qualité d'un lien. Le mode Prefer Passive
envoie des sondes lorsqu'il n'y a pas de trafic.

Visualisation Shortcut

Pour voir la création du shortcut :

• Lancer un packet capture sur le spoke (Branch-1) initiateur du


trafic
• Il ne restera plus qu'à lancer un ping entre les spokes via les VPCS
pour voir le tunnel dynamique se créer. Le ping est lancé de
Sapporo vers Okayama.

Packet capture sur Branch-1 :

diagnose sniffer packet any 'host 172.16.1.10' 4 0

• Résultat Packet Capture :

Le 1er ping passe par le hub (VPN-ISP-A). Le second ping passe par le
tunnel créé dynamiquement entre les 2 spokes (VPN-ISP-A_0).
Nouveau tunnel dynamique

• Résultat PING :

Le TTL est passé de 61 (Branch-1 > HUB > Branch-2) à 62 (Branch-1 >
Branch-2). On remarque que le RTT baisse également.
Conclusion

Dans ce lab, on a mis en place :

• Une architecture Hub & Spoke, doubles liens publics et avec un


seul hub ;
• Des tunnels IPsec avec IKE en mode statique ;
• Du routage dynamique via BGP par overlay avec route-reflector ;
• De l'ADVPN permettant la création de tunnels dynamiques entre
spokes.

Vous aimerez peut-être aussi