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 classiqueDé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)

ComposantRôle
OrchestrateurInterface de gestion : identités, droits, configuration
ContrôleurCalcule les meilleures routes, surveille les liens
Passerelle (gateway)Point de passage des flux sur Internet
Edge routerRouteur 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égorieExemples
Open source « lourdes »OpenDaylight (8 Go RAM mini), ONAP (cluster Kubernetes de 224 Go RAM !)
Open source légèresNetbird (WireGuard), OpenZiti (mTLS en TCP), Defguard
ConstructeursCisco Meraki/Catalyst, Fortinet, Palo Alto, HPE Aruba
SaaS grand publicTailscale (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 ZACOrchestrateur + contrôleur
Edge routerRouteur 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ôlementSert 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 JWT

Par 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 ping répond donc toujours très vite (c’est la copie locale qui répond, ICMP ne traverse pas l’overlay).

Exercices

  1. Quelle différence entre underlay et overlay ?
  2. Tu as créé un service OpenZiti avec ses deux configurations, mais personne n’y accède. Que manque-t-il probablement ?
  3. Pourquoi une PME choisirait Netbird ou OpenZiti plutôt qu’ONAP ?

Erreurs fréquentes / dépannage

SymptômeCause probable
Machine enrôlée mais n’accède à rienNormal en Zero Trust : aucune Service Policy ne la concerne
Service inaccessiblePas de terminator, ou le routeur de sortie ne joint pas la ressource
L’interface ZAC exposée sur InternetFaire écouter la ZAC sur localhost et l’exposer dans l’overlay
Le jeton d’enrôlement ne marche plusIl est à usage unique et expire : en régénérer un

Voir aussi