Les darses avant les portiques

Sur Le Port, personne ne commence par les grues. On creuse d'abord les darses, on drague les chenaux, on pose le balisage qui dit par où passe un navire de trois cents mètres et par où il ne passe pas. Ensuite seulement on parle de portiques.

Ce tracé a une propriété désagréable : il est presque définitif. Ajouter un bassin au fond du terminal, c'est possible. Élargir un chenal déjà bordé d'entrepôts, beaucoup moins.

Le réseau virtuel est exactement cette couche-là. Il se pose avant les machines, avant les bases, avant les conteneurs, et il décide de ce qui sera possible après.

La nuance compte, parce que le raccourci « un plan d'adressage est immuable » est faux au sens strict. On peut ajouter une plage d'adresses à un réseau virtuel existant. En revanche, un sous-réseau ne se redimensionne ni ne se supprime tant qu'il contient une ressource, et un chevauchement d'adresses avec le réseau interne de l'entreprise ne se règle jamais autrement qu'en redéployant ce qui vit dedans.

Le réseau est la décision la plus coûteuse à défaire, non parce qu'elle est irréversible, mais parce que la défaire suppose de vider ce qui tourne déjà dessus.

Ce billet traite la construction à l'intérieur, puis le raccordement à l'extérieur. La répartition de charge et le filtrage du trafic ont leur propre billet, le suivant dans la série.


Ce qui est régional et ce qui ne l'est pas

Un terminal appartient à un bassin. Une voie ferrée, elle, traverse le pays. Confondre les deux échelles est la première erreur de conception.

Un réseau virtuel Azure vit dans une région et un abonnement. Il porte un ou plusieurs espaces d'adressage en notation CIDR, découpés en sous-réseaux. Toutes les ressources qui y sont attachées se joignent entre elles par défaut, sans configuration supplémentaire.

Autour de cet objet régional gravitent des services dont la portée est différente, et cette différence change les topologies possibles.

Objet Portée Ce que ça implique
Réseau virtuel et sous-réseaux Une région, un abonnement Deux régions signifient deux plans d'adressage à réconcilier
Appairage de réseaux virtuels Entre deux réseaux, même région ou non Un lien à la fois, non transitif, sans chevauchement possible
Zone DNS privée Ressource globale Se lie à des réseaux virtuels de n'importe quelle région
Passerelle VPN ou ExpressRoute Régionale, dans le réseau qui la porte Les autres réseaux l'empruntent par transit de passerelle
Virtual WAN Ressource globale, moyeux régionaux Le routage entre moyeux est pris en charge par le service

La topologie la plus répandue est le moyeu et les rayons. Un réseau central porte ce qui est mutualisé, la passerelle hybride, le pare-feu, la résolution de noms. Les réseaux applicatifs s'y raccrochent et n'exposent rien eux-mêmes.

flowchart LR OP["Site interne
192.168.0.0/16"] --> GW["Passerelle
VPN ou ExpressRoute"] GW --> HUB["Moyeu
10.10.0.0/16"] HUB --> FW["Pare-feu et
résolution de noms"] HUB -->|appairage| S1["Rayon applicatif
10.20.0.0/16"] HUB -->|appairage| S2["Rayon données
10.30.0.0/16"] HUB -->|appairage| S3["Rayon conteneurs
10.40.0.0/16"] classDef ext fill:#ede9e1,stroke:#8a4d16,color:#1f2428; classDef hub fill:#b5651d,stroke:#8a4d16,color:#f5f2ec; classDef spoke fill:#d89253,stroke:#8a4d16,color:#2c3338; class OP,GW ext; class HUB,FW hub; class S1,S2,S3 spoke;
Le moyeu répond à un besoin très concret : mutualiser une passerelle et un pare-feu au lieu d'en déployer un exemplaire dans chaque réseau applicatif.

Le plan d'adressage

Le balisage d'un chenal ne s'invente pas au moment où le navire arrive. On calcule le tirant d'eau, la largeur, la marge de manœuvre, et on ajoute de la marge pour les navires qui n'existent pas encore.

Trois règles cadrent le plan d'adressage, et la première est la plus violée.

Ne jamais chevaucher le réseau interne. Un espace d'adressage qui recoupe une plage déjà utilisée au siège ou dans une filiale interdit définitivement l'appairage et casse le raccordement hybride. Cela se vérifie avant de créer la première ressource, auprès de l'équipe qui tient le plan d'adressage de l'entreprise, pas après.

Prévoir la croissance. Un espace en /16 par région coûte exactement la même chose qu'un /24, puisque les adresses privées ne se facturent pas. Le réflexe de découper au plus juste vient du monde physique et n'a aucun sens ici.

Compter les adresses réservées. Azure en prélève cinq par sous-réseau : l'adresse de réseau, la passerelle par défaut, deux adresses pour le service de noms, et l'adresse de diffusion. Sur un grand sous-réseau, la ponction est indolore. Sur un petit, elle est décisive.

Préfixe Adresses totales Utilisables Usage réaliste
/29 8 3 Le plus petit accepté, à réserver aux cas imposés
/28 16 11 Quelques points de terminaison privés
/27 32 27 Sous-réseau de passerelle, petit pool applicatif
/26 64 59 Pare-feu managé, hôte de rebond managé
/24 256 251 Un groupe de machines identiques avec de la marge
/21 2048 2043 Un cluster de conteneurs qui adresse chaque pod

Certains services n'acceptent pas n'importe quel sous-réseau : ils en exigent un dédié, parfois portant un nom imposé au caractère près.

Service Sous-réseau attendu Calibre Contrainte
Passerelle VPN ou ExpressRoute GatewaySubnet /27 recommandé Nom imposé, aucune autre ressource dedans
Azure Firewall AzureFirewallSubnet /26 minimum Nom imposé
Azure Bastion AzureBastionSubnet /26 ou plus large Nom imposé
Azure Route Server RouteServerSubnet /27 minimum Nom imposé
Bases managées, intégration applicative, stockage fichier avancé Nom libre, mais délégué Variable Le sous-réseau devient exclusif au service

Le cas qui fait exploser les plans d'adressage est le cluster de conteneurs. Posons le calcul.

Avec le modèle réseau qui attribue à chaque pod une adresse du réseau virtuel, chaque nœud réserve à l'avance ses adresses de pods, qu'elles servent ou non. Sur un pool prévu pour monter à 50 nœuds avec 30 pods par nœud, la réservation vaut 50 × (30 + 1) = 1 550 adresses, auxquelles s'ajoutent les 5 réservées et la marge des nœuds temporaires créés pendant une montée de version. Un /22 offre 1 019 adresses utilisables : insuffisant. Il faut un /21.

Le même cluster en modèle superposé place les pods dans un espace d'adressage privé distinct du réseau virtuel. Le sous-réseau ne porte plus qu'une adresse par nœud, soit 50 adresses : un /26 suffit, avec de la marge. Trente-deux fois moins d'espace consommé, pour une décision prise en une ligne de configuration au moment de la création du cluster.

az network vnet create \
  --resource-group rg-reseau-moyeu \
  --name vnet-moyeu-westeurope \
  --address-prefixes 10.10.0.0/16 \
  --subnet-name GatewaySubnet \
  --subnet-prefixes 10.10.0.0/27

az network vnet subnet create \
  --resource-group rg-reseau-moyeu \
  --vnet-name vnet-moyeu-westeurope \
  --name AzureFirewallSubnet \
  --address-prefixes 10.10.1.0/26
Un sous-réseau ne se redimensionne pas tant qu'il contient une ressource. C'est ce qui justifie la marge : corriger le calibre après coup oblige à vider ce qui vit dedans.

Relier des réseaux

Deux bassins voisins ne communiquent pas parce qu'ils sont voisins. Il faut un chenal, et ce chenal relie exactement deux points.

L'appairage de réseaux virtuels crée ce chenal. Le trafic passe par le réseau fédérateur du fournisseur, pas par Internet, et les ressources se joignent par leurs adresses privées comme si elles partageaient un même réseau. Deux réseaux dans des régions différentes s'appairent de la même façon.

La propriété qui structure tout est la non-transitivité. Si le moyeu est appairé au rayon A et au rayon B, A ne parle pas à B. Le chenal relie deux bassins, il ne fait pas carrefour.

Trois sorties existent. Appairer directement A et B, ce qui donne un maillage dont le nombre de liens croît vite. Faire transiter par le moyeu, ce qui suppose une route définie manuellement pointant vers un pare-feu ou un équipement de routage dans le moyeu. Ou passer à Virtual WAN, dont le moyeu managé assure le routage de tous vers tous sans écrire une seule route.

L'appairage porte quatre interrupteurs qui décident de ce qui traverse.

az network vnet peering create \
  --resource-group rg-reseau-moyeu \
  --name moyeu-vers-rayon-applicatif \
  --vnet-name vnet-moyeu-westeurope \
  --remote-vnet vnet-app-westeurope \
  --allow-vnet-access \
  --allow-forwarded-traffic \
  --allow-gateway-transit

Côté rayon, l'appairage symétrique porte --use-remote-gateways : c'est ce qui permet au rayon d'emprunter la passerelle hybride du moyeu au lieu d'en déployer une à lui. Sans --allow-forwarded-traffic côté moyeu, le trafic qu'un pare-feu y relaie est rejeté, et le symptôme ressemble à s'y méprendre à une règle de filtrage mal écrite.

Critère Appairage direct Moyeu et rayons Virtual WAN
Routage de tous vers tous Non, un lien par paire Par routes manuelles vers le moyeu Pris en charge par le service
Effort de configuration Faible au début, croissant Moyen, routes à maintenir Faible, déporté sur le service
Point de contrôle du trafic Aucun Le pare-feu du moyeu Le pare-feu du moyeu managé
Nombre de sites distants Peu adapté Correct Conçu pour l'échelle
Quand c'est le bon choix Deux ou trois réseaux, pas de filtrage central Une région, une équipe réseau Beaucoup de sites et de régions
L'appairage ne fait jamais carrefour. Tout ce qui ressemble à du transitif dans Azure est soit une route écrite à la main, soit un service managé qui l'écrit pour vous.

Résoudre les noms

Connaître la position du quai 14 ne suffit pas : encore faut-il savoir quel navire y est attendu. Le tableau d'affectation compte autant que le balisage.

Par défaut, chaque réseau virtuel dispose d'un résolveur fourni par la plateforme, joignable à l'adresse 168.63.129.16. Il résout les noms publics et les noms des machines du même réseau virtuel. Il ne résout ni les noms internes de l'entreprise, ni les noms privés d'un autre réseau virtuel.

Les zones DNS privées comblent ce trou. Une zone se crée comme une ressource globale, puis se lie à un ou plusieurs réseaux virtuels. Sans ce lien, la zone existe et ne sert à rien : c'est l'oubli le plus fréquent du sujet.

az network private-dns zone create \
  --resource-group rg-reseau-moyeu \
  --name privatelink.blob.core.windows.net

az network private-dns link vnet create \
  --resource-group rg-reseau-moyeu \
  --zone-name privatelink.blob.core.windows.net \
  --name lien-rayon-applicatif \
  --virtual-network vnet-app-westeurope \
  --registration-enabled false

Le cas qui remplit le plus de tickets réseau est celui du point de terminaison privé. La ressource managée conserve son nom public, mais ce nom doit désormais renvoyer une adresse privée. Le mécanisme repose sur une zone dédiée, du type privatelink.blob.core.windows.net pour le stockage objet ou privatelink.database.windows.net pour les bases relationnelles, liée au bon réseau virtuel.

sequenceDiagram participant APP as Machine du rayon participant DNS as Résolveur de la plateforme participant PZ as Zone privée liée participant PE as Point de terminaison privé APP->>DNS: résolution du nom public de la ressource DNS->>PZ: consultation de la zone privatelink PZ-->>DNS: adresse privée du point de terminaison DNS-->>APP: adresse privée du point de terminaison APP->>PE: connexion interne au réseau virtuel Note over APP,PE: sans lien de zone, la réponse est une adresse publique et le trafic sort

Reste le sens inverse, celui des machines du site interne qui doivent résoudre ces mêmes noms privés. Historiquement, on déployait une machine virtuelle jouant le redirecteur DNS dans le moyeu. Azure DNS Private Resolver rend ce bricolage inutile : un point de terminaison entrant permet au réseau interne d'interroger les zones privées, un point de terminaison sortant plus un jeu de règles de transfert permet à Azure d'interroger les serveurs de l'entreprise.

Un point de terminaison privé sans la zone DNS qui va avec ne produit pas d'erreur claire. Il produit un nom qui résout vers Internet, une connexion refusée par le pare-feu du service, et deux heures de recherche du côté du filtrage.

Le raccordement hybride

Le Port ne vit pas seul. Il est raccordé au réseau ferré national par une voie dédiée, et à l'arrière-pays par une route de desserte. La voie ferrée coûte cher, se négocie avec un opérateur, et met des mois à se poser. La route existe déjà.

Les deux mécanismes hybrides d'Azure suivent exactement cette opposition.

Le VPN site à site monte un tunnel IPsec entre une passerelle Azure et un équipement sur site, à travers Internet. Il se déploie dans la journée. La passerelle se configure en mode actif-actif pour survivre à la perte d'une instance, et sait annoncer ses routes en BGP. Il existe aussi un mode point à site, où c'est un poste isolé qui se connecte, utile pour l'administration et les postes nomades.

ExpressRoute ne passe pas par Internet. Un circuit est provisionné chez un opérateur partenaire, avec un appairage privé vers les réseaux virtuels et, si besoin, un appairage Microsoft vers les services accessibles par adresses publiques. Trois options comptent : FastPath, qui fait contourner la passerelle au trafic de données pour réduire la latence, Global Reach, qui permet à deux sites de l'entreprise de communiquer entre eux via le réseau de l'opérateur de cloud, et ExpressRoute Direct, qui raccorde l'entreprise directement à l'infrastructure sans intermédiaire.

Critère VPN site à site ExpressRoute
Chemin emprunté Internet public, tunnel IPsec Liaison opérateur, hors Internet public
Chiffrement Par construction Absent par défaut, IPsec possible par-dessus
Débit et latence Ce que vaut le lien Internet du jour Contractuels et stables
Mise en service Quelques heures Plusieurs semaines, opérateur dans la boucle
Coût Passerelle et trafic sortant Port, abonnement opérateur, trafic
Redondance Passerelle actif-actif, second tunnel Paire de connexions par circuit, second circuit sur un autre site d'appairage

Les deux coexistent, et c'est souvent la bonne réponse : un circuit dédié pour le trafic de production, un tunnel VPN en secours, avec un basculement piloté par BGP. Reste une limite qu'on découvre trop tard : un circuit unique, même livré en paire de connexions redondantes, dépend d'un seul site d'appairage. La résilience réelle commence à deux circuits sur deux sites distincts.

Un circuit dédié protège du débit variable et de la latence variable. Il ne protège pas de la panne du site d'appairage par lequel il entre.

Le routage

Le balisage indique le chemin par défaut. Un capitaine peut recevoir une consigne particulière qui prime sur le balisage, et c'est là que les collisions arrivent.

Azure installe des routes système dans chaque sous-réseau, sans qu'on les demande : à l'intérieur du réseau virtuel, vers les réseaux appairés, vers la passerelle hybride, et une route par défaut vers Internet. Une table de routes attachée à un sous-réseau ajoute des routes définies par l'utilisateur, qui prennent le pas sur les routes système.

az network route-table route create \
  --resource-group rg-reseau-moyeu \
  --route-table-name rt-rayon-applicatif \
  --name defaut-vers-pare-feu \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address 10.10.1.4
Saut suivant Effet Piège associé
VirtualNetworkGateway Envoie vers la passerelle VPN ou ExpressRoute Tunnel forcé involontaire si appliqué à 0.0.0.0/0
VnetLocal Reste dans le réseau virtuel Écrase un chemin attendu vers le pare-feu
Internet Sortie directe Contourne le point de contrôle central
VirtualAppliance Envoie vers une adresse privée d'équipement Boucle si la table est appliquée au sous-réseau de l'équipement
None Jette le trafic Panne silencieuse, sans message d'erreur

Deux règles de sélection décident du reste. Le préfixe le plus spécifique gagne, comme partout. À spécificité égale, une route définie par l'utilisateur l'emporte sur une route apprise en BGP, qui l'emporte elle-même sur une route système.

Le tunnel forcé consiste à pousser 0.0.0.0/0 vers la passerelle hybride, pour que toute sortie Internet passe par le proxy et le filtrage de l'entreprise. C'est une exigence de conformité fréquente, et une source de pannes tout aussi fréquente : les services managés qui ont besoin de joindre le plan de contrôle du fournisseur se retrouvent coupés si les exceptions ne sont pas écrites.

Écrire une route par défaut vers un équipement de filtrage sans exclure explicitement le sous-réseau de cet équipement produit une boucle de routage. Le symptôme est un service qui ne répond plus du tout, pas un service lent.

Points de terminaison de service ou points de terminaison privés

Deux façons de faire entrer un entrepôt sous douane dans le périmètre du terminal. Soit on reconnaît le camion à l'entrée et on le laisse emprunter la voie interne, soit on construit un embranchement privé qui ne dessert que cet entrepôt.

Le point de terminaison de service relève du premier cas. Le sous-réseau est reconnu par le service managé, le trafic emprunte le réseau fédérateur du fournisseur, et le pare-feu du service n'accepte plus que ce sous-réseau. La ressource conserve néanmoins une adresse publique, et le mécanisme ne fonctionne pas depuis un site interne.

Le point de terminaison privé relève du second. Une carte réseau est créée dans votre sous-réseau, avec une adresse privée à vous, associée à une instance précise de la ressource. Le trafic n'a plus besoin de la moindre adresse publique, et fonctionne depuis le site interne à travers le lien hybride, à condition que la résolution de noms suive.

Critère Point de terminaison de service Point de terminaison privé
Ce qui est créé Une reconnaissance du sous-réseau Une carte réseau dans votre sous-réseau
Adresse utilisée Publique, sur le réseau fédérateur du fournisseur Privée, dans votre plan d'adressage
Granularité Le service pour tout un sous-réseau Une instance de ressource précise
Accès depuis le site interne Non Oui, via VPN ou ExpressRoute
Dépendance au DNS Aucune Forte, zone privée obligatoire
Coût Sans supplément À l'unité et au trafic traité
Consommation d'adresses Nulle Une adresse par point de terminaison

Le choix se tranche vite. Accès depuis le site interne ou besoin de cibler une instance et non un service entier : point de terminaison privé. Trafic strictement interne à la région, budget serré et plan d'adressage tendu : point de terminaison de service.

Le point de terminaison privé est la seule des deux options qui permette de couper l'accès public d'un service de données pour de bon. C'est aussi la seule qui casse dès que le DNS n'est pas configuré.

Scénario B : Facebook, le 4 octobre 2021

Le meilleur cas public sur ce que tiennent réellement le routage et la résolution de noms a été publié par l'entreprise elle-même, dans son compte rendu d'ingénierie sur la panne du 4 octobre 2021.

Ce jour-là, pendant une opération de maintenance de routine, une commande destinée à évaluer la capacité disponible du réseau fédérateur mondial a coupé l'ensemble des connexions de ce réseau. Les centres de données de l'entreprise se sont retrouvés déconnectés les uns des autres.

Un outil d'audit existait précisément pour interdire ce type de commande. Le compte rendu indique qu'un défaut dans cet outil l'a empêché de la bloquer.

La suite tient à un enchaînement de conception. Les serveurs de noms faisant autorité de l'entreprise annoncent leurs routes en BGP, et sont conçus pour retirer ces annonces s'ils perdent le contact avec les centres de données. Le réseau fédérateur étant tombé, ils ont fait exactement ce pour quoi ils avaient été programmés : ils se sont retirés d'Internet. Plus aucun nom ne résolvait, donc plus aucun service n'était joignable, y compris ceux qui fonctionnaient encore parfaitement.

Le compte rendu détaille ensuite ce qui a rendu la reprise si longue. Les outils internes utilisés pour diagnostiquer et corriger reposaient sur le même réseau et le même DNS, et étaient donc hors service. Il a fallu envoyer des ingénieurs physiquement sur les sites, où l'accès et la remise en service du matériel se sont révélés lents par construction. L'interruption a duré plusieurs heures.

Une panne de routage et une panne de résolution de noms ne dégradent pas un service : elles le font disparaître. Et elles emportent avec elles les outils censés servir à le réparer.

L'image portuaire est directe. Si le balisage disparaît et que le registre des postes d'amarrage devient illisible, il ne sert à rien que les quais soient intacts et les portiques en état de marche : plus aucun navire ne sait où accoster. Le port n'est pas endommagé, il est simplement devenu introuvable.

La transposition côté conception se lit en deux points. Le plan de routage et la résolution de noms sont des dépendances de premier rang, au même titre que l'identité. Et le chemin d'administration doit être conçu pour survivre à la panne du chemin de production, ce qui interdit de le faire reposer sur les mêmes zones DNS privées et le même tunnel unique.


Points clés

  • L'espace d'adressage se négocie avant la première ressource. Un chevauchement avec le réseau interne interdit définitivement l'appairage et le raccordement hybride, et ne se corrige qu'en redéployant.
  • Les cinq adresses réservées par sous-réseau changent tout sur les petits calibres. Un /29 offre trois adresses utilisables, un /24 en offre 251.
  • Le modèle réseau d'un cluster de conteneurs pèse plus lourd que tout le reste. Cinquante nœuds à trente pods réservent 1 550 adresses, soit un /21, contre un /26 en modèle superposé.
  • L'appairage n'est pas transitif. Le trafic entre deux rayons passe par une route écrite à la main vers le moyeu, ou par un service managé qui l'écrit à votre place.
  • Le point de terminaison privé ne fonctionne qu'avec la zone DNS privée liée au bon réseau virtuel. Sans elle, le nom résout vers une adresse publique et le diagnostic part dans la mauvaise direction.

Dans la série

Palier 2 : Construire les terminaux. Domaine : Réseau & connectivité.


Pour aller plus loin