Windows Server 2019 : gérer deux cartes réseau dans un même sous‑réseau pour une application CCTV

Vous avez migré votre serveur de vidéosurveillance de Windows Server 2012 R2 vers 2019 ; deux cartes réseau (NIC) partagent désormais le même VLAN, mais seule l’une d’elles véhicule le trafic. Cette page détaille toutes les causes, commandes PowerShell et bonnes pratiques pour rétablir une distribution propre des flux « caméras » et « clients/stockage ».

Sommaire

Problématique

Un serveur d’enregistrement CCTV dispose de deux interfaces :

  • NIC 1 (CAM) – doit absorber les flux UDP/TCP entrants des caméras.
  • NIC 2 (CLIENTS) – doit servir les flux décodés aux postes de garde et pousser les archives sur le NAS.

Après mise à niveau vers Windows Server 2019, l’ensemble du trafic transite par une seule carte ; l’autre reste pratiquement à zéro octet. Le double adressage dans le même /24 — sans agrégation — sème le doute dans l’algorithme Windows de sélection d’interface.

Architecture initiale et symptômes observés

  • Deux ports RJ‑45 1 Gb/s reliés au même switch manageable.
  • Adresses IP : 192.168.10.100 (CAM) et 192.168.10.101 (CLIENTS) /24.
  • Une seule passerelle par défaut (192.168.10.1).
  • Dans Get-NetAdapterStatistics la colonne BytesTotal reste nulle sur la NIC « CLIENTS ».
  • Le logiciel NVR propose un sélecteur d’interface mais l’ID GUID a changé après la migration.

Causes les plus fréquentes

CauseExplication
Ordre de liaison / métrique automatiqueWindows compare la InterfaceMetric. Deux valeurs identiques=trafic unique.
Routes ambiguësEntrées 0.0.0.0/0 ou 192.168.10.0/24 doublonnées redirigent vers un seul NextHop.
Conception réseau non recommandéeDeux IP dans le même VLAN sans teaming provoquent une concurrence directe.
Pilotes ou firmware obsolètesAnciennes versions désactivent RSS/VMQ, cassant la distribution.

Fonctionnement interne de la sélection d’interface sous Windows Server 2019

Depuis Windows Vista, la pile TCP/IP choisit la route la plus spécifique (Longest Prefix Match) puis la valeur la plus basse de la colonne Metric (addition de la métrique d’interface et de la métrique de route). Lorsque deux cartes partagent un masque /24 avec la même passerelle, les deux routes 0.0.0.0/0 sont strictement identiques. Sans intervention, AutomaticMetric calcule un score similaire ; la première carte découverte lors du démarrage gagne, d’où l’apparente panne de la seconde.

À cela s’ajoutent :

  • RSS / Receive Side Scaling – répartit les interruptions, mais ne répartit pas les flux entre deux NIC externes.
  • NDIS 6.x – attribue un #Index unique à chaque NIC ; certains pilotes multiplient les chemins DMA, ce qui peut perturber la détection du logiciel CCTV après mise à jour majeure.

Pistes de résolution pas à pas

ÉtapeCommandes / GUIRésultat recherché
1. Fixer l’ordre de liaisonExécutez ncpa.cplParamètres avancésLa NIC « CAM » apparaît avant « CLIENTS ».
2. Forcer les métriquesSet-NetIPInterface -InterfaceAlias "CAM" -InterfaceMetric 10 Set-NetIPInterface -InterfaceAlias "CLIENTS" -InterfaceMetric 20Le routage distingue clairement les deux chemins.
3. Nettoyer la table de routeroute print ou Get-NetRouteAucune route dupliquée, suppression des entrées fantômes.
4. Mettre à jour le piloteSite constructeur + Windows UpdateCompatibilité NDIS 6.8, RSS conforme.
5. Activer le NIC Teaming (optionnel)Gestionnaire de serveur → NIC TeamingSwitch‑Independent / Dynamic : répartition/haute dispo.
6. Lier l’IP dans l’application CCTVPanneau de config du NVRLe logiciel n’utilise que l’interface GUID spécifiée.

Script : configuration rapide en PowerShell

# Variables
$cam   = "Ethernet 1"
$cli   = "Ethernet 2"
# Ordre de liaison
Set-NetIPInterface -InterfaceAlias $cam -InterfaceMetric 10 -AutomaticMetric Disabled
Set-NetIPInterface -InterfaceAlias $cli -InterfaceMetric 20 -AutomaticMetric Disabled
# Routes dédiées
New-NetRoute -DestinationPrefix 239.0.0.0/8     -InterfaceAlias $cam -NextHop 0.0.0.0 -RouteMetric 10
New-NetRoute -DestinationPrefix 192.168.10.0/24 -InterfaceAlias $cam -NextHop 0.0.0.0 -RouteMetric 10
# Vérification
Get-NetRoute -AddressFamily IPv4 | Sort-Object ifMetric,RouteMetric

Exemple complet : passer à deux VLAN distincts

Pour éliminer toute ambigüité, on isole physiquement les flux :

VLANRôlePlage IPPasserelle
10Caméras192.168.10.0/24
20Clients & NAS192.168.20.0/24192.168.20.1

On configure alors :

# CAM sur VLAN 10
New-NetIPAddress -InterfaceAlias $cam -IPAddress 192.168.10.100 -PrefixLength 24
# CLIENTS sur VLAN 20
New-NetIPAddress -InterfaceAlias $cli -IPAddress 192.168.20.100 -PrefixLength 24 -DefaultGateway 192.168.20.1
# Routes unicast caméra → NAS via CLIENTS
New-NetRoute -DestinationPrefix 192.168.20.0/24 -InterfaceAlias $cli -NextHop 192.168.20.1

Le logiciel NVR reçoit toujours les vidéos sur CAM grâce à des flux unicast/multicast internes, tandis que le NAS reste joignable via CLIENTS. Les tests iperf montrent un débit cumulé proche de 2 Gb/s.

Surveillance et validation en production

  • perfmon.exeNetwork Interface\Bytes Total/sec : ajoutez les deux interfaces sur le même graphique.
  • Get-NetAdapterRss pour vérifier que RSS est Enabled.
  • Wireshark : filtre ip.addr==192.168.10.100 puis ip.addr==192.168.20.100 et confirmez la séparation des flux.
  • Event ViewerMicrosoft‑Windows‑NetworkProfile : surveillez les bascules de profil (Privé/Domaine) qui forcent parfois la redétection DHCP.

Alternative : NIC Teaming en mode Switch‑Independent

Si l’objectif principal est la défaillance zéro plutôt qu’un routage différencié, NIC Teaming réunit les deux ports dans une équipe virtuelle unique. Windows distribue alors les sessions TCP à l’aide de l’algorithme Dynamic (hash de flux + pile RSS). La configuration d’un NVR y est souvent transparente ; en revanche :

  1. Les flux multicast des caméras requièrent l’option Enable RSS Load Balancing.
  2. Le switch n’a pas besoin de LACP (mode indépendant).
  3. Le débit maximal reste plafonné à 1 Gb/s par flux lorsqu’il n’y a pas de clients multiples.

Bonnes pratiques complémentaires

  1. Désactiver Auto‑Metric sur toutes les interfaces non routées.
  2. Verrouiller la vitesse & duplex à 1 Gb/s Full pour éviter l’autonégociation asymétrique.
  3. Réserver les adresses DHCP statiquement afin que les caméras sachent toujours où envoyer.
  4. Sécuriser le pare‑feu :
    • Profil Privé → ports RTSP/554, HTTP/80, HTTPS/443, ONVIF/3702.
    • Limiter CLIENTS au seul sous‑réseau de visualisation.
  5. Sauvegarder le fichier netsh advfirewall export avant toute modification « test ».

Foire aux questions

Pourquoi ne pas simplement ajouter une seconde passerelle ?

Deux passerelles par défaut créent deux routes 0.0.0.0/0 équivalentes. Windows ne pratique pas de routage multichemin sur IPv4 sans protocole supplémentaire ; la première route (plus faible métrique) gagne toujours.

Peut‑on utiliser Receive Side Coalescing pour équilibrer ?

Non. RSC consolide les segments TCP sur une NIC, il n’équilibre pas la charge entre deux NIC physiques.

Le Teaming ajoutera‑t‑il de la latence ?

En mode Switch‑Independent, la latence ajoutée est négligeable (<5 µs) car l’équipe fonctionne dans le pilote NDIS. Elle reste inférieure au délai de 33 ms entre deux images vidéo 30 fps.

Comment s’assurer que l’application CCTV choisira toujours la bonne carte ?

Ouvrez le fichier de configuration (XML/INI) ou la base de registre du logiciel NVR ; la plupart référencent le GUID de l’interface (visible dans Get-NetAdapter). Remplacez l’ancien GUID post‑migration.

Conclusion

Avec deux cartes réseau dans un même sous‑réseau, Windows Server 2019 préfère la carte à la métrique la plus basse, laissant la seconde inutilisée. En fixant l’ordre de liaison, en forçant les métriques et, idéalement, en séparant les VLAN, vous contrôlez de manière fiable quel flux emprunte quelle interface. Pour une redondance pure, envisagez plutôt le NIC Teaming. Testez chaque modification avec ping -S, iperf et Wireshark avant de basculer votre parc de caméras en production ; vous éviterez ainsi les pertes de trames, la pixelisation et les alarmes fantômes.

Sommaire