---
# System prepended metadata

title: "\U0001F4DA Formation SD-WAN Fortinet - TP Final"
tags: [SD-WAN]

---

# 🧠 TP SD-WAN avec FortiGate et GNS3

## 📘 Introduction

Le **SD-WAN (Software Defined WAN)** est une technologie qui vise à simplifier la gestion du WAN en dissociant le plan de gestion et de contrôle du plan de données. Elle permet d’utiliser plusieurs liens WAN (xDSL, 4G, Fibre, etc.) de manière intelligente, tout en garantissant la continuité de service, l'optimisation des coûts, et la sécurité.

## 🎯 Objectifs du TP

- Mettre en place une maquette fonctionnelle SD-WAN avec FortiGate.
- Connecter le FortiGate à deux ISP via des routeurs Cisco avec configuration NAT.
- Configurer le SD-WAN pour équilibrer et superviser les connexions.
- Vérifier l’accès Internet depuis le LAN et via les deux fournisseurs d’accès.

---

## 🧰 Prérequis

### Système

- OS : Windows 10/11 64 bits
- VMware Workstation installé
- GNS3 (dernière version) avec GNS3 VM

### Réseau

- 2 interfaces sur le PC :
  - **Carte Host-Only** → utilisée pour **la connexion entre notre PC et GNS3** : Local
  - **Carte VMware NAT** → utilisée pour **Cloud 2** : NAT via VMware
- Internet actif sur au moins une interface

### Matériel

- CPU avec **Intel VT-x ou AMD-V activé**
- 16 Go RAM minimum
- 50 Go d’espace disque libre

### Logiciel

- Hyper-V désactivé :
  - `cmd (admin)` → `bcdedit /set hypervisorlaunchtype off`
  - Reboot requis
- Images suivantes fournies :
  - FortiGate KVM/VM
  - Routeurs Cisco 3745 pour ISP-A et ISP-B
  - WebTerm pour accéder au Fortigate
  - NETem permet d'ajouter une limite de bande passante, un retard et des pertes de paquets 

---

## 🏗️ Schéma de la topologie

![image](https://hackmd.io/_uploads/H1u7yJgIxx.png)

---

## 🔧 Étapes d'installation

### Étape 1 - Installer GNS3 et la VM GNS3

1. Télécharger GNS3 : https://gns3.com/software/download
2. Installer le client GNS3
3. Télécharger et importer la GNS3 VM dans VMware Workstation : https://www.gns3.com/software/download-vm
4. **Pour GNS3 allouer 4 CPU et 8GB de RAM**
5. Lier le client GNS3 à la VM GNS3 dans les paramètres : `edit > preferences > GNS3 VM`
6. Lancer les deux


### Étape 2 - Préparer VMware NAT & Host-Only

1. Ouvrir **Virtual Network Editor** (via VMware)
2. S’assurer que :
   - `VMnet0` est en **Host-Only**
   - `VMnet8` est en **NAT**

### Étape 3 - Configurer les Clouds (Internet) dans GNS3

#### Cloud 1 : NAT (VMnet8)
- GNS3 > Ajouter un "Cloud"
- Sélectionner l’interface VMnet8 (NAT)

#### Cloud 2 : NAT (VMnet8)
- Ajouter un second Cloud
- Sélectionner l’interface VMnet8 (NAT)

---

## 📦 Ajouter une appliance dans GNS3

Pour importer des équipements comme un **FortiGate**, un **Cisco Router**, ou autre appliance :

### 🧰 Pré-requis :
- Avoir l'image de l'appliance (ex : `.qcow2`, `.vmdk`, `.bin`, `.img`, `.iso`)
- Avoir la GNS3 VM configurée

---

### 🪜 Étapes pour ajouter une appliance :

1. **Ouvrir GNS3**
2. Aller dans la barre de menu → `File > Import appliance` *(ou clic droit dans la liste de gauche > "New template")*
3. Sélectionne le fichier `.gns3a` de l’appliance  

   > Si tu n’as pas ce fichier `.gns3a`, tu peux créer un template personnalisé manuellement.

---

### ⚙️ Méthode manuelle (sans .gns3a)

1. Dans GNS3 → `File > New template`
2. Clique sur **Install an appliance from the GNS3 server**
3. L'appliance name :
   - **Exemple** : Fortigate
4. Laisser les options de base puis cliquer sur create new version et ajouter le fichier demandé (ex: `.qcow2`, `.image`)
5. Configure les **cartes réseau** selon les besoins (ex: 4 interfaces pour FortiGate)
6. Finaliser → L’appliance apparaît désormais dans la liste des équipements

---

### 💡 Bonnes pratiques :

- Active la **GNS3 VM** pour de meilleures performances.
- Renomme les appliances pour mieux les repérer dans les labos.
- Pour FortiGate, tu peux accéder au GUI via l'IP sur `port4` avec HTTPS activé.


---

## 💻 Configuration du Webterm (simulateur de PC dans le LAN)

Sur le terminal Linux (ex. Alpine, Debian dans GNS3), exécute les commandes suivantes :

```bash
ip addr add 10.0.0.254/24 dev eth0
ip route add default via 10.0.0.1
```
`ou`

Si ton Webterm ou ta machine client est basé(e) sur Debian (ou Ubuntu), tu peux rendre l’IP persistante via le fichier de configuration réseau.

#### 📝 Étapes :

1. Édite le fichier interfaces :

```bash
nano /etc/network/interfaces
```

Ajoute cette configuration :

```bash
auto eth0
iface eth0 inet static
    address 10.0.0.254
    netmask 255.255.255.0
    gateway 10.0.0.1
```
> 🎯 Cela permet de définir une IP dans le LAN et de router tout le trafic vers le FortiGate (port4).
```

## 🌐 Configuration des Routeurs ISP

### ISP-A

conf t
hostname ISP-A

interface FastEthernet0/0
 description Vers FortiGate
 ip address 100.64.0.1 255.255.255.252
 ip nat inside
 no shutdown

interface FastEthernet1/0
 description Vers Internet (Cloud)
 ip address dhcp
 ip nat outside
 no shutdown

access-list 1 permit 100.64.0.0 0.0.0.3

ip nat inside source list 1 interface FastEthernet1/0 overload

ip route 0.0.0.0 0.0.0.0 FastEthernet1/0 (IP de la gateway NAT sur VMWARE)
```

### ISP-B

```bash
conf t
hostname ISP-B

interface FastEthernet0/0
 description Vers FortiGate
 ip address 100.64.1.1 255.255.255.252
 ip nat inside
 no shutdown

interface FastEthernet1/0
 description Vers Internet (Cloud)
 ip address dhcp
 ip nat outside
 no shutdown

access-list 1 permit 100.64.1.0 0.0.0.3

ip nat inside source list 1 interface FastEthernet1/0 overload

ip route 0.0.0.0 0.0.0.0 FastEthernet1/0 (IP de la gateway NAT sur VMWARE)
```
IP de la gateway sur vmware : 
Pour mon cas : 192.168.100.2

![image](https://hackmd.io/_uploads/HkGG8FPk-l.png)

---

## 🔐 Configuration du FortiGate

### Interfaces

```bash
config system interface
    edit "port1"
        set ip 192.168.0.201/24
        set allowaccess ping https ssh
    next
    edit "port2"
        set ip 100.64.0.2/30
    next
    edit "port3"
        set ip 100.64.1.2/30
    next
    edit "port4"
        set ip 10.0.0.1/24
        set allowaccess
        set allowaccess ping https http
    next
end
```

### Routes par défaut

```bash
config router static
    edit 1
        set gateway 100.64.0.1
        set device "port2"
        set distance 10
    next
    edit 2
        set gateway 100.64.1.1
        set device "port3"
        set distance 20
    next
end
```

---

## ⚙️ Configuration SD-WAN sur FortiGate (GUI)

1. Accéder à l’interface web via `https://10.0.0.1`
2. Aller dans : **Network > SD-WAN**
3. Activer SD-WAN
4. Ajouter les interfaces :
   - **port2** (ISP-A) avec la gateways
   - **port3** (ISP-B) avec la gateways
   - Pour les gateways, elles sont à configurer au niveau de la zone SDWAN

![image](https://hackmd.io/_uploads/By9utxWIgg.png)

5. Aller dans l’onglet **Performance SLA**
   - Créer un SLA : ping vers 8.8.8.8
  
  ![image](https://hackmd.io/_uploads/H1tlqlZLxx.png)
  
---
![image](https://hackmd.io/_uploads/SyM7clZUeg.png)

6. Dans **SD-WAN Rules** :
   - Créer une règle de charge équilibrée :
     - Mode : **Manual**
     - Members : port2 (weight 1), port3 (weight 1)
     - SLA Target : celui créé précédemment

![image](https://hackmd.io/_uploads/BkVUqgWUee.png)

## 🚦 Mise à jour de la Default Route vers la zone SD-WAN

1. Aller dans **Network > Static Routes**
2. Supprimer toutes les routes existantes (port2 et port3)
3. Créer une nouvelle route :
   - **Destination** : 0.0.0.0/0
   - **Gateway** : SD-WAN
   - **Interface** : SD-WAN Zone
   - **Distance** : 10

---

## 🔒 Policy de sécurité FortiGate vers WAN (via SD-WAN)

1. Aller dans **Policy & Objects > Firewall Policy**
2. Cliquer sur **Create New**
3. Configurer comme suit :
   - **Name** : Webterm_to_Internet
   - **Incoming Interface** : port4
   - **Outgoing Interface** : SD-WAN
   - **Source** : all (ou spécifier 10.0.0.0/24)
   - **Destination** : all
   - **Service** : ALL
   - **Action** : ACCEPT
   - **NAT** : activé
   
## ✅ Test de connectivité

Depuis un terminal dans le LAN ou depuis FortiGate :

```
execute ping 8.8.8.8
```

---

## 🎛️ Appliance NETem (Simulation WAN)

L’appliance **NETem** permet de simuler des conditions WAN réalistes :  
➡️ limitations de bande passante,  
➡️ latence,  
➡️ perte de paquets, etc.

📌 **Positionnement recommandé :**  
- Un NETem sur le lien **port2 ↔ ISP-A**  
- Un autre NETem sur le lien **port3 ↔ ISP-B**

![image](https://hackmd.io/_uploads/HkZWog-Lel.png)

---

### ⚙️ Configurer une perte de paquet de 3% sur ISP-A

1. Ouvrir la console de l’appliance NETem
2. Appliquer la règle suivante :

```bash
tc qdisc add dev eth0 root netem loss 3%
```

![image](https://hackmd.io/_uploads/BJxAcxbIxx.png)

Dans les performances SLA, la perte sera vite visible :

![image](https://hackmd.io/_uploads/ry-Njx-Ieg.png)

---

## 🎓 À retenir

- SD-WAN permet de gérer dynamiquement plusieurs liens WAN
- FortiGate permet une configuration simple et efficace
- Le NAT est géré par les ISP dans ce lab pour simuler un environnement réel

---

## 📎 Liens utiles

- [Documentation Fortinet](https://docs.fortinet.com/)
- [GNS3 Documentation](https://docs.gns3.com/)