P12 - SD-WAN et Zero Trust (OpenZiti)
Objectif
Comprendre ce qu’est un SD-WAN (Software Defined Wide Area Network), pourquoi il remplace peu à peu les liens MPLS des opérateurs, et savoir comment s’organise OpenZiti, la solution utilisée en TP par lidstah.
Source
Fiche rédigée à partir de cours de lidstah (cours complet avec captures de l’interface ZAC).
1. Le problème à résoudre
Une entreprise a plusieurs sites, des salariés en télétravail et des serveurs dans le cloud. Avant, on reliait les sites :
| Méthode classique | Défauts |
|---|---|
| Tunnels IPsec entre routeurs de l’opérateur (PME) | Rigide, un ticket à l’opérateur à chaque changement |
| Liens MPLS opérateur (grandes entreprises, voir P11 - Routage avancé (BGP, EIGRP, MPLS)) | Très cher, tous les sites chez le même opérateur |
| VPN nomade séparé (OpenVPN…) | Une deuxième solution à gérer, droits peu fins |
Le SD-WAN construit un réseau privé logiciel par-dessus n’importe quelle connexion (fibre, 4G/5G, ADSL, MPLS…), avec chiffrement, choix automatique du meilleur lien, gestion des utilisateurs et règles d’accès fines.
2. Underlay et overlay
flowchart TB subgraph OV["OVERLAY : le réseau privé virtuel (chiffré)"] C1["Client<br/>télétravail"] -.-> GW["Passerelle / contrôleur"] E1["Edge router<br/>site Nantes"] -.-> GW E2["Edge router<br/>site Saint-Nazaire"] -.-> GW end subgraph UN["UNDERLAY : les vraies connexions"] F["Fibre FAI A"] G["4G / 5G"] I["Internet"] end OV --- UN
- Underlay : les connexions physiques fournies par les opérateurs.
- Overlay : le réseau logique chiffré construit par-dessus.
3. Les composants (norme MEF 70)
| Composant | Rôle |
|---|---|
| Orchestrateur | Interface de gestion : identités, droits, configuration |
| Contrôleur | Calcule les meilleures routes, surveille les liens |
| Passerelle (gateway) | Point de passage des flux sur Internet |
| Edge router | Routeur SD-WAN sur chaque site (machine, VM ou conteneur) |
| Fournisseur d’identité (option) | LDAP, Active Directory, OIDC pour authentifier les humains |
Ce qu’un SD-WAN doit savoir faire : fonctionner sur des liens hétérogènes, choisir le meilleur chemin, basculer si un lien tombe, tout chiffrer, gérer site à site et utilisateurs nomades, suivre les principes Zero Trust (personne n’a accès à rien par défaut).
4. Les solutions
| Catégorie | Exemples |
|---|---|
| Open source « lourdes » | OpenDaylight (8 Go RAM mini), ONAP (cluster Kubernetes de 224 Go RAM !) |
| Open source légères | Netbird (WireGuard), OpenZiti (mTLS en TCP), Defguard |
| Constructeurs | Cisco Meraki/Catalyst, Fortinet, Palo Alto, HPE Aruba |
| SaaS grand public | Tailscale (voir O08 - Tailscale), Cloudflare Magic WAN, Netbird.io, NetFoundry |
Tu l'utilises déjà
Le VPN Netbird du labo EPSI (cours de lidstah) et Tailscale sont des SD-WAN « légers » : ce sont les mêmes idées.
5. OpenZiti en pratique
| Élément OpenZiti | Équivalent |
|---|---|
| Contrôleur + interface web ZAC | Orchestrateur + contrôleur |
| Edge router | Routeur de site (paquet openziti-router) |
Tunneler / client (ziti-edge-tunnel) | Machine qui entre ou sort de l’overlay |
| Identité | Un utilisateur ou une machine, avec des tags (#admins, #mobile) |
| Jeton JWT d’enrôlement | Sert une seule fois à joindre une machine au réseau |
Étapes pour rejoindre le réseau :
# 1. ajouter le dépôt OpenZiti (clé GPG + source apt), puis sur le routeur :
sudo apt install openziti-router
# 2. dans la ZAC : créer l'edge router, télécharger son jeton JWT, le copier
scp routeur.jwt utilisateur@vm-routeur:
# 3. lancer le script de bootstrap avec le jeton (contrôleur par défaut sur le port 1280, routeur 3022)
# sur un client
sudo apt install ziti-edge-tunnel
sudo systemctl enable --now ziti-edge-tunnel
# puis enrôler l'identité avec son jeton JWTPar défaut, personne n’a accès à rien (Zero Trust). Pour exposer un service, il faut toujours 4 objets :
flowchart LR I["Config intercept.v1<br/>quel trafic capturer côté client<br/>(ex. nginx.groupe1.ziti:443)"] --> S["Service"] H["Config host.v1<br/>où l'envoyer à la sortie<br/>(ex. 127.0.0.1:80)"] --> S PIN["Service Policy « in »<br/>qui a le droit d'y accéder<br/>(#groupe1)"] --> S POUT["Service Policy « out »<br/>quel routeur le sert<br/>(@routeur-groupe1)"] --> S
- Router Policies : quelles identités peuvent passer par quels routeurs.
- Terminator : routeur qui a réellement accès à la ressource. Un service sans terminator est inaccessible.
- Posture checks : vérifications supplémentaires (réauthentification OIDC, état du poste) avant d’ouvrir l’accès.
- Côté client, OpenZiti crée une IP locale (plage 100.64.0.0/10) et un petit DNS pour chaque service : un
pingrépond donc toujours très vite (c’est la copie locale qui répond, ICMP ne traverse pas l’overlay).
Exercices
- Quelle différence entre underlay et overlay ?
- Tu as créé un service OpenZiti avec ses deux configurations, mais personne n’y accède. Que manque-t-il probablement ?
- Pourquoi une PME choisirait Netbird ou OpenZiti plutôt qu’ONAP ?
Correction
- L’underlay, ce sont les vraies connexions (fibre, 4G…) ; l’overlay, c’est le réseau privé chiffré construit par-dessus.
- Les deux Service Policies (in : qui peut y accéder ; out : quel routeur le sert), ou bien aucun terminator n’est disponible.
- Ressources : un contrôleur OpenZiti tourne avec 1 vCPU et 1 Go de RAM pour une centaine de machines, ONAP demande un gros cluster Kubernetes.
Erreurs fréquentes / dépannage
| Symptôme | Cause probable |
|---|---|
| Machine enrôlée mais n’accède à rien | Normal en Zero Trust : aucune Service Policy ne la concerne |
| Service inaccessible | Pas de terminator, ou le routeur de sortie ne joint pas la ressource |
| L’interface ZAC exposée sur Internet | Faire écouter la ZAC sur localhost et l’exposer dans l’overlay |
| Le jeton d’enrôlement ne marche plus | Il est à usage unique et expire : en régénérer un |
Voir aussi
- P07 - VPN (WireGuard, IPsec, OpenVPN) · O08 - Tailscale · P11 - Routage avancé (BGP, EIGRP, MPLS) · R05 - VLAN et routage inter-VLAN
- Cours complet : cours de lidstah · cours de lidstah · cours de lidstah
- Retour : P00 - Programme pas encore vu