Passer au contenu principal
OS, Réseau, Windows

Netsh : configurer et dépanner le réseau en ligne de commande

Quand l’interface graphique de Windows fonctionne, administrer le réseau paraît presque civilisé.

On ouvre les Paramètres, on clique sur « Réseau et Internet », on modifie une adresse, Windows affiche quelques interrupteurs arrondis et tout le monde rentre chez soi avant 18 heures.

Puis arrive le jour où :

  • l’adresse IP doit être changée sur un serveur distant ;
  • le DNS pointe vers le mauvais résolveur ;
  • une interface doit être désactivée ;
  • le pare-feu refuse un flux ;
  • Winsock semble avoir développé une personnalité propre ;
  • le Wi-Fi ne veut plus entendre parler de son ancien profil ;
  • ou il faut automatiser la même configuration sur vingt machines.

C’est dans ce genre de moment que réapparaît :

netsh

Netsh — Network Shell est un outil en ligne de commande intégré à Windows permettant de consulter et modifier de nombreux composants réseau.

Il peut notamment intervenir sur :

  • IPv4 ;
  • IPv6 ;
  • les interfaces réseau ;
  • DNS ;
  • Wi-Fi ;
  • Winsock ;
  • le pare-feu Windows ;
  • WinHTTP ;
  • certains mécanismes de tunneling ;
  • les proxys de ports ;
  • les traces réseau.

Netsh est puissant parce qu’il dialogue directement avec de nombreux composants réseau de Windows. Cette puissance implique qu’une commande parfaitement valide peut également couper la connexion depuis laquelle vous êtes en train de l’exécuter.

Le réseau n’a pas disparu.

Vous venez parfois simplement de lui demander de disparaître.

Netsh est un shell organisé en contextes

Netsh ne correspond pas à une seule commande gigantesque.

Il est organisé en contextes.

Par exemple :

netsh interface
netsh wlan
netsh winsock
netsh advfirewall
netsh winhttp
netsh trace
netsh dnsclient

Chaque contexte possède ses propres commandes.

Pour voir les contextes disponibles :

netsh ?

Ou entrez simplement :

netsh

puis :

?

Mode interactif ou commande directe

Netsh peut être utilisé de deux manières.

Mode interactif

C:\> netsh
netsh>

Puis :

netsh> interface
netsh interface> ipv4
netsh interface ipv4> show config

Vous naviguez alors à travers les contextes.

Commande complète depuis CMD ou PowerShell

netsh interface ipv4 show config

Pour des scripts ou des procédures documentées, cette deuxième forme est généralement plus lisible.

Afficher l’aide avant d’improviser

Netsh possède une aide intégrée.

Par exemple :

netsh interface ipv4 ?
netsh interface ipv4 set ?
netsh interface ipv4 set address ?
netsh advfirewall firewall ?
netsh wlan ?
netsh winsock ?

Cette habitude possède un excellent rapport entre effort et nombre de catastrophes évitées.

Elle est particulièrement recommandée avant d’utiliser une commande copiée depuis un forum publié lorsque Windows Vista était encore une nouveauté inquiétante.

Les privilèges administratifs

Les commandes de consultation peuvent souvent fonctionner sans élévation.

Les commandes qui modifient réellement la configuration nécessitent généralement une console exécutée avec des privilèges administratifs.

Vous pouvez ouvrir :

  • Windows Terminal ;
  • PowerShell ;
  • l’Invite de commandes ;

avec :

Exécuter en tant qu'administrateur

Une commande refusée pour manque de privilèges ne signifie donc pas nécessairement que sa syntaxe est mauvaise.

Windows vous informe parfois simplement que vous avez parfaitement compris la commande mais pas votre place dans la hiérarchie sociale.

Identifier les interfaces réseau

Avant de configurer :

"Ethernet"

vérifiez que l’interface porte réellement ce nom.

Utilisez :

netsh interface show interface

Vous pouvez obtenir quelque chose comme :

État admin    État          Type             Nom de l'interface
-----------------------------------------------------------------
Activé        Connecté      Dédié            Ethernet
Activé        Connecté      Dédié            Wi-Fi
Activé        Déconnecté    Dédié            Ethernet 2

Les noms contenant des espaces doivent être protégés

Pour :

Ethernet 2

utilisez :

name="Ethernet 2"

ou :

"Ethernet 2"

selon la syntaxe de la commande.

L’important n’est pas d’offrir une cérémonie particulière à la casse des caractères.

L’important est d’utiliser le bon alias et de protéger correctement les espaces.

Utiliser l’index de l’interface

Pour IPv4, on peut également afficher :

netsh interface ipv4 show interfaces

Exemple :

Idx     Mét     MTU          État                 Nom
---     ---     ----------   -------------------  ----------------
1       75      4294967295   connected            Loopback Pseudo-Interface 1
7       25      1500         connected            Ethernet
12      35      1500         connected            Wi-Fi

L’index peut ensuite remplacer le nom dans certaines commandes.

Par exemple :

netsh interface ipv4 show config name=7

C’est pratique lorsque l’adaptateur s’appelle :

Connexion réseau locale virtuelle Hyper-V numéro 4

et que vous commencez à regretter l’alphabet.

Afficher la configuration IPv4

Pour toutes les interfaces :

netsh interface ipv4 show config

Pour une seule :

netsh interface ipv4 show config name="Ethernet"

Vous pouvez notamment examiner :

  • l’adresse IPv4 ;
  • le masque ou préfixe ;
  • la passerelle ;
  • l’utilisation de DHCP ;
  • les serveurs DNS.

Afficher IPv6

L’équivalent existe pour IPv6 :

netsh interface ipv6 show config

Ou :

netsh interface ipv6 show interfaces

IPv6 n’est pas réservé aux personnes ayant commis quelque faute dans une vie antérieure.

Sur Windows moderne, il fait partie du fonctionnement normal du réseau.

Configurer une adresse IPv4 statique

Supposons que l’interface :

Ethernet

doive recevoir :

Adresse     : 192.168.1.42
Masque      : 255.255.255.0
Passerelle  : 192.168.1.1

Utilisez :

netsh interface ipv4 set address name="Ethernet" source=static address=192.168.1.42 mask=255.255.255.0 gateway=192.168.1.1

Une syntaxe positionnelle historique fonctionne également sur de nombreux Windows :

netsh interface ipv4 set address "Ethernet" static 192.168.1.42 255.255.255.0 192.168.1.1

Pour un article ou un script destiné à durer, la syntaxe avec paramètres nommés possède cependant une qualité appréciable :

six mois plus tard, on sait encore quel nombre correspond à quoi.

Avant de configurer une IP statique

Vérifiez au minimum :

  • que l’adresse appartient au bon sous-réseau ;
  • qu’elle n’est pas déjà utilisée ;
  • que le masque est correct ;
  • que la passerelle est joignable sur le lien approprié ;
  • qu’aucune réservation DHCP ne provoquera de conflit ;
  • que vous avez prévu ce qui arrivera à votre session distante.

Changer l’IP d’un ordinateur distant : la téléportation administrative

Si vous êtes connecté en RDP ou PowerShell distant à :

192.168.1.42

et que vous exécutez :

netsh interface ipv4 set address name="Ethernet" source=static address=192.168.20.42 mask=255.255.255.0 gateway=192.168.20.1

il est parfaitement possible que votre connexion disparaisse immédiatement.

Ce n’est pas un bug.

Vous venez de déplacer la maison pendant que vous étiez encore au téléphone avec son occupant.

Avant une modification réseau distante, prévoyez toujours une méthode de récupération : console hyperviseur, iDRAC/iLO, accès physique, KVM distant ou autre canal hors bande.

Revenir à DHCP pour l’adresse

Pour demander à nouveau l’adresse via DHCP :

netsh interface ipv4 set address name="Ethernet" source=dhcp

Cela remet l’adressage IPv4 de cette interface en DHCP.

Mais attention :

cela ne garantit pas que vos serveurs DNS statiques disparaissent également.

Revenir complètement à DHCP : IP et DNS

Si vous aviez également configuré les DNS manuellement :

netsh interface ipv4 set address name="Ethernet" source=dhcp
netsh interface ipv4 set dnsservers name="Ethernet" source=dhcp

Vous remettez ainsi séparément :

  • l’adressage IPv4 ;
  • les serveurs DNS ;

sous le contrôle de DHCP.

C’est un détail important.

Le poste qui récupère correctement :

192.168.1.73

tout en continuant d’interroger un vieux DNS :

10.12.4.8

hors service depuis 2021 peut produire une panne suffisamment subtile pour occuper votre après-midi.

Configurer un serveur DNS statique

Pour remplacer la liste actuelle par :

1.1.1.1

utilisez :

netsh interface ipv4 set dnsservers name="Ethernet" source=static address=1.1.1.1

Pour ajouter un second serveur :

netsh interface ipv4 add dnsservers name="Ethernet" address=8.8.8.8 index=2

L’ordre est important.

index=2 place ici le serveur en deuxième position dans la liste statique.

Afficher les DNS configurés

netsh interface ipv4 show dnsservers

Ou pour une interface précise :

netsh interface ipv4 show dnsservers name="Ethernet"

DNS public et domaine Active Directory

Configurer :

1.1.1.1
8.8.8.8

peut être parfaitement raisonnable sur certains postes.

Mais sur une machine membre d’un domaine Active Directory, utiliser directement un DNS public au lieu du DNS de l’infrastructure peut casser :

  • la localisation des contrôleurs de domaine ;
  • Kerberos ;
  • les GPO ;
  • la résolution des zones internes.

Le fait qu’un DNS réponde vite à :

www.example.com

ne signifie pas qu’il connaît :

_ldap._tcp.dc._msdcs.corp.example.com

Votre DNS préféré n’est donc pas toujours celui qui possède le logo le plus célèbre.

Le contexte dnsclient

Windows moderne possède aussi :

netsh dnsclient

Par exemple :

netsh dnsclient show global

ou pour définir un DNS :

netsh dnsclient set dnsserver name="Ethernet" source=static address=192.168.10.10 register=primary validate=yes

Ce contexte permet également, sur les versions prises en charge, de gérer certains paramètres liés au DNS chiffré comme :

  • DNS over HTTPS ;
  • DNS over TLS ;
  • Discovery of Designated Resolvers.

Ce n’est plus exactement le petit monde où :

DNS = une IP dans resolv.conf

mais Windows n’a jamais manifesté un engagement particulier envers la simplicité nostalgique.

Ajouter une adresse IPv4 supplémentaire

Une interface Windows peut posséder plusieurs adresses IPv4.

Par exemple :

netsh interface ipv4 add address name="Ethernet" address=192.168.1.50 mask=255.255.255.0

Vous ajoutez alors une adresse sans nécessairement remplacer celle déjà présente.

C’est différent de :

set address

qui configure la source et l’adressage principal selon les paramètres utilisés.

Afficher les routes IPv4

Netsh sait également afficher la table de routage :

netsh interface ipv4 show route

On peut aussi utiliser :

route print

ou PowerShell :

Get-NetRoute

Ajouter une route statique

Exemple :

netsh interface ipv4 add route prefix=10.20.0.0/16 interface="Ethernet" nexthop=192.168.1.254 store=persistent

Cette commande indique que le réseau :

10.20.0.0/16

doit être atteint via :

192.168.1.254

sur l’interface Ethernet.

store=active et store=persistent

Plusieurs commandes Netsh acceptent :

store=active

ou :

store=persistent

De manière générale :

Valeur Effet
active Configuration active pour la session actuelle
persistent Configuration conservée après redémarrage

Lorsque ce paramètre existe, vérifiez bien ce que vous êtes en train de modifier.

Une solution temporaire peut devenir une tradition familiale après trois redémarrages si quelqu’un l’a rendue persistante.

Afficher les voisins IPv4

Pour afficher les entrées de voisinage :

netsh interface ipv4 show neighbors

Cela correspond notamment aux associations utilisées pour atteindre les voisins IPv4 sur les liens locaux.

On peut également utiliser :

arp -a

ou PowerShell :

Get-NetNeighbor

Supprimer le cache ARP IPv4

Netsh peut supprimer certaines informations du cache ARP :

netsh interface ipv4 delete arpcache

C’est parfois utile lors d’un diagnostic précis.

Mais vider systématiquement tous les caches jusqu’à ce que le réseau fonctionne n’est pas vraiment une méthode scientifique.

C’est davantage une purification rituelle.

MTU et sous-interface

Pour voir les sous-interfaces :

netsh interface ipv4 show subinterfaces

On peut notamment voir leurs MTU.

Pour modifier celle d’une interface :

netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent

Ne modifiez pas le MTU simplement parce que :

« 1400 a l’air plus rapide que 1500. »

Les problèmes de MTU existent réellement, notamment avec certains VPN ou tunnels, mais la valeur doit être déterminée selon l’architecture.

Activer ou désactiver une interface

Pour désactiver :

netsh interface set interface name="Ethernet" admin=disabled

Pour réactiver :

netsh interface set interface name="Ethernet" admin=enabled

Vous pouvez vérifier l’état :

netsh interface show interface

Désactiver l’interface distante : rapide et définitif

Si votre session RDP passe précisément par :

Ethernet

et que vous exécutez :

netsh interface set interface name="Ethernet" admin=disabled

vous venez de découvrir une propriété intéressante de l’administration distante :

une commande peut parfaitement réussir tout en empêchant immédiatement de lire sa confirmation.

Avant ce type de manipulation, assurez-vous encore une fois de disposer d’un accès de secours.

Wi-Fi : voir les interfaces WLAN

Le contexte :

netsh wlan

gère différents aspects du Wi-Fi Windows.

Pour afficher les interfaces :

netsh wlan show interfaces

Vous pouvez voir notamment :

  • interface ;
  • SSID ;
  • BSSID ;
  • type radio ;
  • canal ;
  • état ;
  • vitesse de connexion ;
  • niveau du signal.

Afficher les réseaux Wi-Fi détectés

netsh wlan show networks

Avec davantage d’informations :

netsh wlan show networks mode=bssid

Cela peut afficher plusieurs points d’accès pour un même SSID.

Afficher les profils Wi-Fi enregistrés

netsh wlan show profiles

Un profil représente une configuration Wi-Fi enregistrée sur le poste.

Par exemple :

Profil Tous les utilisateurs : CorpWiFi
Profil Tous les utilisateurs : Maison
Profil Tous les utilisateurs : Hotel-2019

Le dernier profil peut évidemment rester présent pendant sept ans parce que personne n’ose demander pourquoi.

Afficher un profil Wi-Fi

netsh wlan show profile name="CorpWiFi"

Pour afficher certaines informations sensibles lorsque les droits le permettent :

netsh wlan show profile name="CorpWiFi" key=clear

Cette commande peut révéler la clé en clair pour certains profils.

Une console administrateur ouverte devant plusieurs personnes n’est donc pas le meilleur endroit pour lancer key=clear pendant une présentation.

Exporter un profil Wi-Fi

Pour exporter :

netsh wlan export profile name="CorpWiFi" folder="C:\WiFiProfiles"

Le dossier doit exister et être accessible.

Sans :

key=clear

la clé n’est normalement pas exportée en clair.

Exporter avec la clé en clair

Pour un administrateur local :

netsh wlan export profile name="CorpWiFi" folder="C:\WiFiProfiles" key=clear

peut inscrire la clé dans le XML exporté en clair.

Ce fichier doit alors être considéré comme sensible.

Ne le déposez pas dans :

C:\Users\Public\WiFiProfiles

puis dans un ticket de support partagé à toute l’entreprise.

La fonction d’export est destinée notamment au déploiement et à la sauvegarde de profils.

Elle n’oblige pas à transformer leur mot de passe en document collaboratif.

Importer un profil Wi-Fi

Un profil XML exporté peut être ajouté avec :

netsh wlan add profile filename="C:\WiFiProfiles\Wi-Fi-CorpWiFi.xml"

C’est pratique pour :

  • les déploiements ;
  • les laboratoires ;
  • la reconstruction d’un poste ;
  • certains environnements non gérés par une politique centrale.

Se connecter à un profil

netsh wlan connect name="CorpWiFi"

En précisant l’interface :

netsh wlan connect name="CorpWiFi" interface="Wi-Fi"

Se déconnecter du Wi-Fi

netsh wlan disconnect interface="Wi-Fi"

Cette commande déconnecte le Wi-Fi.

Elle ne désactive pas nécessairement l’adaptateur lui-même.

Pour désactiver administrativement l’interface :

netsh interface set interface name="Wi-Fi" admin=disabled

Les deux opérations ne répondent donc pas à la même question.

Supprimer un profil Wi-Fi

netsh wlan delete profile name="AncienWifi"

Après cela, Windows ne possède plus ce profil enregistré et devra recréer ou recevoir une nouvelle configuration pour se connecter.

À éviter cinq secondes avant le début d’une visioconférence si le profil concerné est précisément celui de la salle.

Générer un rapport Wi-Fi

Windows propose également :

netsh wlan show wlanreport

Cette commande génère un rapport WLAN permettant d’examiner différents événements et sessions sans se contenter de :

« Le Wi-Fi coupe parfois. »

La phrase de l’utilisateur reste utile.

Un journal horodaté l’est généralement davantage.

Winsock : l’interface réseau des applications Windows

Winsock — Windows Sockets fournit les interfaces utilisées par de nombreuses applications pour communiquer sur le réseau.

Pour afficher son catalogue :

netsh winsock show catalog

Réinitialiser Winsock

La commande :

netsh winsock reset

réinitialise le catalogue Winsock dans un état propre et retire notamment les fournisseurs LSP personnalisés concernés par ce catalogue.

Elle peut résoudre certains problèmes causés par une corruption de la configuration Winsock.

Mais elle ne signifie pas :

« Répare absolument tout ce qui touche au réseau. »

Ce que winsock reset peut perturber

Des logiciels ayant ajouté des composants spécifiques à Winsock peuvent nécessiter une réparation ou une réinstallation après une réinitialisation.

Historiquement, cela peut notamment concerner :

  • certains VPN ;
  • logiciels de sécurité ;
  • filtres réseau ;
  • anciens composants applicatifs.

On n’exécute donc pas :

netsh winsock reset

tous les vendredis simplement pour que « le réseau reparte propre ».

Réinitialiser TCP/IP

La commande historique très connue est :

netsh int ip reset

On peut également produire un journal :

netsh int ip reset C:\resetlog.txt

Microsoft décrit cette opération comme une réinitialisation de paramètres TCP/IP comparable, pour certains composants, au fait de retirer puis réinstaller TCP/IP.

Elle réinitialise notamment différentes valeurs de configuration associées à :

TCP/IP
DHCP

Une réinitialisation IP n’est pas une simple purge de cache

Cette commande peut modifier une quantité importante de paramètres réseau.

Après son exécution, un redémarrage est généralement nécessaire pour terminer correctement l’opération.

Si vous aviez :

  • des réglages TCP/IP particuliers ;
  • des paramètres ajoutés par un produit tiers ;
  • une configuration spéciale de certaines interfaces ;

ils peuvent devoir être examinés après la réinitialisation.

Le duo classique de dépannage

On voit souvent :

netsh int ip reset
netsh winsock reset

puis :

shutdown /r /t 0

Ce duo peut être utile lorsqu’un diagnostic indique réellement un problème de pile réseau ou Winsock.

Il ne devrait cependant pas être la première réponse à :

« example.com ne s’ouvre pas. »

Avant le reset : diagnostiquez

Commencez plutôt par :

ipconfig /all

Puis :

ping 127.0.0.1
ping <passerelle>
nslookup example.com
route print

et, selon le problème :

Test-NetConnection example.com -Port 443

La réinitialisation est un outil.

Ce n’est pas un diagnostic.

Le pare-feu Windows avec advfirewall

Le contexte moderne de Netsh pour Windows Defender Firewall with Advanced Security est :

netsh advfirewall

Pour afficher l’état :

netsh advfirewall show allprofiles

Ajouter une règle entrante TCP

Pour autoriser TCP 8080 :

netsh advfirewall firewall add rule name="Autoriser HTTP test 8080" dir=in action=allow protocol=TCP localport=8080

Pour le port 80 :

netsh advfirewall firewall add rule name="HTTP" dir=in action=allow protocol=TCP localport=80

Une règle de port n’ouvre pas magiquement un service

Si aucun programme n’écoute sur :

TCP 80

ajouter une règle de pare-feu ne fait pas apparaître Apache par génération spontanée.

Il faut distinguer :

service qui écoute
+
pare-feu qui autorise
+
routage qui permet d'atteindre

Pour voir les ports en écoute :

netstat -ano

ou PowerShell :

Get-NetTCPConnection -State Listen

Limiter une règle à un profil

Par exemple :

netsh advfirewall firewall add rule name="HTTP-Domaine" dir=in action=allow protocol=TCP localport=80 profile=domain

Vous évitez ainsi de nécessairement ouvrir le même port sur :

  • le profil Domaine ;
  • le profil Privé ;
  • le profil Public.

Une machine n’a pas nécessairement besoin de la même exposition dans le réseau de l’entreprise et dans le Wi-Fi gratuit d’un aéroport.

Limiter les adresses distantes

Une règle peut être limitée à certains réseaux :

netsh advfirewall firewall add rule name="RDP-LAN" dir=in action=allow protocol=TCP localport=3389 remoteip=192.168.10.0/24

C’est généralement préférable à :

remoteip=any

lorsqu’un besoin réel permet de restreindre la portée.

Afficher les règles

Toutes :

netsh advfirewall firewall show rule name=all

Une règle précise :

netsh advfirewall firewall show rule name="HTTP"

Supprimer une règle

netsh advfirewall firewall delete rule name="HTTP"

Attention : si plusieurs règles correspondent aux critères fournis, la suppression peut concerner plusieurs règles.

Les noms explicites et les critères précis sont donc appréciables.

Exporter le pare-feu avant de faire des expériences

Avant une modification importante :

netsh advfirewall export "C:\Backup\firewall.wfw"

Pour restaurer :

netsh advfirewall import "C:\Backup\firewall.wfw"

Un fichier de sauvegarde n’a aucune valeur s’il est stocké dans un emplacement qui disparaît précisément avec la machine que vous êtes en train de reconfigurer.

Détail trivial jusqu’au premier incident.

Désactiver le pare-feu

Techniquement :

netsh advfirewall set allprofiles state off

Pour le réactiver :

netsh advfirewall set allprofiles state on

Mais désactiver le pare-feu complet pour résoudre :

« Mon application n’arrive pas à communiquer. »

revient à enlever toutes les portes du bâtiment parce qu’une clé ne fonctionne plus.

Pour du diagnostic, préférez :

  • identifier le port ;
  • identifier le programme ;
  • examiner les règles ;
  • créer une exception ciblée ;
  • consulter les journaux.

Réinitialiser entièrement le pare-feu

Netsh possède également :

netsh advfirewall reset

Cette commande remet la politique locale du pare-feu dans son état par défaut.

Ce n’est pas :

« supprimer uniquement ma dernière mauvaise règle ».

Avant de l’utiliser sur une machine importante :

netsh advfirewall export "C:\Backup\firewall-before-reset.wfw"

est une idée nettement plus professionnelle.

Portproxy : rediriger un port TCP

Netsh propose :

netsh interface portproxy

Par exemple :

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8080 connectaddress=192.168.1.10 connectport=80

Le système écoute alors sur :

127.0.0.1:8080

et transmet les connexions TCP vers :

192.168.1.10:80

Portproxy n’est pas du NAT généraliste

C’est une correction importante.

portproxy agit comme un proxy de connexions TCP.

Il permet notamment :

  • IPv4 vers IPv4 ;
  • IPv4 vers IPv6 ;
  • IPv6 vers IPv4 ;
  • IPv6 vers IPv6 selon les commandes disponibles.

Le protocole configuré est :

TCP

Ce n’est donc pas un mécanisme générique :

tout le trafic UDP et TCP
+
NAT complet
+
routage automatique

Attention à listenaddress=0.0.0.0

Cette commande :

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8080 connectaddress=192.168.1.10 connectport=80

demande une écoute IPv4 sur toutes les adresses locales appropriées.

Cela peut donc exposer le port au réseau, selon :

  • les interfaces ;
  • le pare-feu ;
  • le routage ;
  • la connectivité de la machine.

Si vous vouliez uniquement :

localhost

utilisez plutôt une adresse d’écoute correspondante, par exemple :

127.0.0.1

lorsque c’est bien l’intention.

Portproxy et pare-feu sont deux choses différentes

Créer :

portproxy

ne signifie pas nécessairement que Windows Firewall autorise les connexions entrantes correspondantes.

Il peut également être nécessaire d’ajouter une règle adaptée.

Par exemple :

netsh advfirewall firewall add rule name="Portproxy 8080" dir=in action=allow protocol=TCP localport=8080

Encore une fois :

écoute
pare-feu
routage

sont trois éléments distincts.

Afficher les portproxy

netsh interface portproxy show all

Supprimer une redirection v4tov4

Par exemple :

netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=8080

Vérifiez ensuite :

netsh interface portproxy show all

WinHTTP : le proxy que le navigateur ne voit pas forcément

Le contexte :

netsh winhttp

gère les paramètres de :

WinHTTP

utilisés par les applications s’appuyant sur cette API.

Pour voir la configuration :

netsh winhttp show proxy

Définir un proxy WinHTTP

Par exemple :

netsh winhttp set proxy proxy-server="proxy.example.com:8080"

Avec une liste d’exclusion :

netsh winhttp set proxy proxy-server="proxy.example.com:8080" bypass-list="*.example.com;<local>"

Réinitialiser le proxy WinHTTP

netsh winhttp reset proxy

WinHTTP n’est pas « le proxy de tout Windows »

C’est un piège fréquent.

Le proxy WinHTTP concerne les applications utilisant WinHTTP.

D’autres applications peuvent utiliser :

  • leurs propres paramètres ;
  • les paramètres proxy utilisateur ;
  • WinINET ou d’autres API ;
  • une configuration automatique ;
  • un proxy intégré à l’application.

Ainsi :

« netsh winhttp show proxy dit Direct access, donc aucun logiciel Windows n’utilise de proxy. »

est une conclusion trop rapide.

Importer certains paramètres proxy

Netsh propose notamment :

netsh winhttp import proxy source=ie

selon les mécanismes et paramètres disponibles sur le système.

Encore une raison pour laquelle le mot :

proxy

sous Windows mérite toujours la question :

« Proxy de quelle pile exactement ? »

Tracer le réseau avec netsh trace

Netsh n’est pas uniquement un outil de configuration.

Il peut lancer des traces réseau et ETW.

Par exemple :

netsh trace start capture=yes tracefile="C:\Logs\networktrace.etl"

Puis reproduisez le problème.

Ensuite :

netsh trace stop

Pourquoi utiliser netsh trace ?

Une trace peut fournir des informations sur :

  • les événements réseau ;
  • les connexions ;
  • certains paquets ;
  • les composants Windows impliqués ;
  • le moment exact où une panne survient.

C’est particulièrement utile lorsque le diagnostic atteint le stade :

« Ça ne marche que le mardi après 14 h quand le VPN est connecté. »

À ce niveau de précision, les captures deviennent généralement plus productives que l’intuition.

Attention à la taille et aux données sensibles

Une trace réseau peut :

  • grossir rapidement ;
  • contenir des adresses ;
  • contenir des noms de machines ;
  • contenir certaines portions de trafic ;
  • révéler des informations sensibles selon ce qui est capturé.

Stockez et partagez les fichiers :

.etl

avec les précautions adaptées.

Afficher les scénarios de trace

netsh trace show scenarios

Netsh peut ainsi cibler différents scénarios de diagnostic selon la version de Windows.

Scripts Netsh

Netsh sait exécuter un fichier de commandes.

Par exemple :

netsh -f C:\Scripts\reseau.txt

Un script pourrait contenir :

interface ipv4 set address name="Ethernet" source=static address=192.168.1.42 mask=255.255.255.0 gateway=192.168.1.1
interface ipv4 set dnsservers name="Ethernet" source=static address=192.168.1.10
advfirewall set allprofiles state on

Ce mécanisme est utile pour :

  • des laboratoires ;
  • des installations automatisées ;
  • des procédures répétables ;
  • certaines tâches de déploiement.

Automatiser une erreur reste une optimisation

Une mauvaise commande exécutée manuellement peut casser une machine.

La même mauvaise commande dans un script peut casser cinquante machines avant la première pause café.

La répétabilité n’est pas toujours une qualité.

Elle dépend beaucoup de ce que l’on répète.

dump : exporter des commandes de configuration

Plusieurs contextes Netsh possèdent :

dump

qui génère une représentation sous forme de commandes pouvant aider à :

  • examiner une configuration ;
  • la reproduire ;
  • l’archiver ;
  • documenter un état.

Exemple :

netsh interface ipv4 dump

Ou :

netsh advfirewall dump

Toutes les parties de Windows ne sont pas forcément restituables parfaitement par cette méthode, mais elle reste très utile pour comprendre ce que Netsh voit.

Netsh ou PowerShell ?

Netsh reste disponible et utile.

Mais Windows moderne dispose aussi de nombreux cmdlets PowerShell spécialisés.

Besoin Netsh PowerShell moderne
Afficher les interfaces netsh interface show interface Get-NetAdapter
Afficher IP netsh interface ipv4 show config Get-NetIPConfiguration
Créer une IP netsh interface ipv4 set/add address New-NetIPAddress
DNS netsh interface ipv4 set dnsservers Set-DnsClientServerAddress
Routes netsh interface ipv4 add route New-NetRoute
Interfaces netsh interface set interface Enable-NetAdapter / Disable-NetAdapter
Pare-feu netsh advfirewall Get/New/Set-NetFirewallRule

Pourquoi PowerShell est souvent préférable pour l’automatisation

Netsh produit essentiellement du texte.

PowerShell manipule des objets structurés.

Par exemple :

Get-NetAdapter |
    Where-Object Status -eq "Up"

retourne des objets que l’on peut filtrer, comparer et transmettre à d’autres cmdlets.

Cela évite certains scripts bâtis autour de :

findstr
tokens=3
et une confiance absolue dans l'espacement d'une sortie texte

Configurer une IPv4 avec PowerShell

Par exemple :

New-NetIPAddress `
    -InterfaceAlias "Ethernet" `
    -IPAddress 192.168.1.42 `
    -PrefixLength 24 `
    -DefaultGateway 192.168.1.1

Le :

PrefixLength 24

correspond à :

255.255.255.0

Configurer les DNS avec PowerShell

Set-DnsClientServerAddress `
    -InterfaceAlias "Ethernet" `
    -ServerAddresses 192.168.1.10,192.168.1.11

Pour revenir aux adresses fournies automatiquement :

Set-DnsClientServerAddress `
    -InterfaceAlias "Ethernet" `
    -ResetServerAddresses

Netsh reste particulièrement utile

Il conserve plusieurs avantages :

  • présent depuis longtemps sur Windows ;
  • très pratique dans CMD ;
  • disponible dans de nombreux environnements de dépannage ;
  • énorme quantité de documentation historique ;
  • certains contextes spécialisés restent très pratiques ;
  • les commandes sont faciles à insérer dans des fichiers batch.

La bonne question n’est donc pas :

« Netsh ou PowerShell : lequel doit mourir ? »

mais :

« Quel outil exprime le mieux l’opération que je dois automatiser ou diagnostiquer ? »

Diagnostic réseau : une méthode avant le reset

Supposons qu’un utilisateur annonce :

« Internet est mort. »

Avant de réinitialiser plusieurs piles réseau, procédez par étapes.

1. Vérifier les interfaces

netsh interface show interface

ou :

Get-NetAdapter

2. Vérifier l’adressage

ipconfig /all

et :

netsh interface ipv4 show config

Regardez notamment :

  • adresse ;
  • masque ;
  • passerelle ;
  • DHCP ;
  • DNS.

3. Vérifier localhost

ping 127.0.0.1

4. Tester la passerelle

ping 192.168.1.1

si ICMP est autorisé.

5. Tester une destination IP

ping 1.1.1.1

Un échec de ping ne suffit cependant pas à prouver l’absence de connectivité, car ICMP peut être filtré.

6. Tester DNS

nslookup example.com

ou :

Resolve-DnsName example.com

7. Tester un vrai service TCP

Test-NetConnection example.com -Port 443

8. Examiner les routes

route print

ou :

netsh interface ipv4 show route

9. Examiner le pare-feu si nécessaire

netsh advfirewall show allprofiles

10. Seulement ensuite envisager un reset

netsh int ip reset
netsh winsock reset

Le diagnostic permet de savoir ce que vous réparez.

Le reset permet surtout de constater si remettre quelque chose à zéro a changé le comportement.

Cas pratique : passer un poste en IP statique

Situation :

Interface   : Ethernet
Adresse     : 192.168.10.50
Préfixe     : /24
Passerelle  : 192.168.10.1
DNS 1       : 192.168.10.10
DNS 2       : 192.168.10.11

Vérifiez d’abord :

netsh interface show interface
netsh interface ipv4 show config name="Ethernet"

Puis :

netsh interface ipv4 set address name="Ethernet" source=static address=192.168.10.50 mask=255.255.255.0 gateway=192.168.10.1

netsh interface ipv4 set dnsservers name="Ethernet" source=static address=192.168.10.10

netsh interface ipv4 add dnsservers name="Ethernet" address=192.168.10.11 index=2

Enfin :

ipconfig /all
netsh interface ipv4 show config name="Ethernet"

Cas pratique : revenir entièrement en DHCP

netsh interface ipv4 set address name="Ethernet" source=dhcp
netsh interface ipv4 set dnsservers name="Ethernet" source=dhcp
ipconfig /renew

Puis :

ipconfig /all

pour vérifier ce qui a effectivement été reçu.

Cas pratique : ouvrir temporairement un service Web interne

Un service écoute sur :

TCP 8080

Vous pouvez ajouter une règle limitée au réseau local :

netsh advfirewall firewall add rule name="Application interne 8080" dir=in action=allow protocol=TCP localport=8080 remoteip=192.168.10.0/24

Vérifiez :

netsh advfirewall firewall show rule name="Application interne 8080"

Et lorsque le test est terminé :

netsh advfirewall firewall delete rule name="Application interne 8080"

Cas pratique : exposer un service local via portproxy

Supposons qu’une application écoute sur :

192.168.50.20:5000

et que Windows doive accepter :

192.168.10.10:8080

puis transmettre la connexion.

On peut utiliser :

netsh interface portproxy add v4tov4 listenaddress=192.168.10.10 listenport=8080 connectaddress=192.168.50.20 connectport=5000

Puis créer une règle pare-feu adaptée :

netsh advfirewall firewall add rule name="Portproxy 8080" dir=in action=allow protocol=TCP localport=8080

Vérifiez :

netsh interface portproxy show all

et :

netstat -ano | findstr :8080

Cas pratique : problème après installation d’un VPN

Supposons que :

  • la carte possède une bonne adresse ;
  • la passerelle répond ;
  • DNS fonctionne ;
  • mais plusieurs applications réseau échouent depuis une installation ou désinstallation de logiciel réseau.

Commencez par examiner :

netsh winsock show catalog

Puis, si le diagnostic le justifie :

netsh winsock reset

et redémarrez.

Si vous allez plus loin avec :

netsh int ip reset

considérez l’impact sur la configuration existante.

Cas pratique : connexion Wi-Fi instable

Commencez par :

netsh wlan show interfaces

Puis :

netsh wlan show networks mode=bssid

Et générez éventuellement :

netsh wlan show wlanreport

Vous pouvez ainsi obtenir davantage d’informations sur :

  • signal ;
  • SSID ;
  • point d’accès ;
  • déconnexions ;
  • événements WLAN.

Supprimer immédiatement tous les profils Wi-Fi est une option.

Tout comme jeter le trousseau de clés lorsque la porte grince.

Les erreurs classiques

Configurer le mauvais adaptateur

Avant :

name="Ethernet"

utilisez :

netsh interface show interface

Remettre l’IP en DHCP mais oublier les DNS

Utilisez les deux :

netsh interface ipv4 set address name="Ethernet" source=dhcp
netsh interface ipv4 set dnsservers name="Ethernet" source=dhcp

Changer l’adresse d’une machine distante sans plan B

Préparez un accès console.

Une adresse IP modifiée ne se sent pas obligée de maintenir votre session RDP par politesse.

Désactiver le pare-feu complet pour tester un port

Créez plutôt une règle ciblée.

Confondre portproxy et NAT

portproxy travaille sur des connexions TCP et ne remplace pas un routeur NAT général.

Utiliser 0.0.0.0 sans comprendre son effet

Pour :

listenaddress=0.0.0.0

vous demandez une écoute sur toutes les adresses IPv4 locales appropriées.

Cela peut changer considérablement l’exposition du service.

Exporter un profil Wi-Fi avec key=clear puis oublier le XML

Le fichier peut contenir la clé en clair.

Traitez-le comme un secret.

Confondre WinHTTP et paramètres proxy du navigateur

netsh winhttp gère WinHTTP.

Ce n’est pas automatiquement le proxy de toutes les applications de la machine.

Faire winsock reset pour chaque problème

Une réinitialisation est justifiée lorsqu’un problème lié à la pile correspondante est suspecté.

Elle n’améliore pas :

  • un câble coupé ;
  • un DHCP absent ;
  • un DNS mal configuré ;
  • une route manquante ;
  • un point d’accès hors tension.

Confondre reset avec diagnostic

Le réseau fonctionne après le reset ?

Très bien.

Mais si vous ne savez pas ce qui avait été modifié, vous ne savez toujours pas réellement ce qui était cassé.

Commandes Netsh essentielles

Commande Fonction
netsh interface show interface Afficher les interfaces réseau
netsh interface ipv4 show interfaces Afficher les interfaces IPv4 et leurs index
netsh interface ipv4 show config Afficher la configuration IPv4
netsh interface ipv6 show config Afficher la configuration IPv6
netsh interface ipv4 set address Configurer l’adressage IPv4
netsh interface ipv4 set dnsservers Configurer la source ou le premier DNS
netsh interface ipv4 add dnsservers Ajouter un DNS statique
netsh interface ipv4 show route Afficher les routes IPv4
netsh interface set interface Activer ou désactiver une interface
netsh wlan show interfaces Afficher l’état Wi-Fi
netsh wlan show profiles Lister les profils Wi-Fi
netsh wlan export profile Exporter des profils Wi-Fi
netsh winsock show catalog Afficher le catalogue Winsock
netsh winsock reset Réinitialiser le catalogue Winsock
netsh int ip reset Réinitialiser TCP/IP
netsh advfirewall show allprofiles Afficher l’état du pare-feu
netsh advfirewall firewall add rule Créer une règle de pare-feu
netsh advfirewall firewall delete rule Supprimer une règle
netsh advfirewall export Sauvegarder la politique pare-feu
netsh interface portproxy show all Afficher les proxys de ports
netsh winhttp show proxy Afficher le proxy WinHTTP
netsh trace start Démarrer une trace réseau
netsh trace stop Arrêter la trace

Les commandes qui méritent une attention particulière

Commande Risque principal
set address Perte de connectivité ou conflit IP
set dnsservers Résolution DNS ou AD cassée
set interface ... disabled Coupure immédiate de l’interface
int ip reset Réinitialisation de paramètres TCP/IP
winsock reset Suppression de personnalisations Winsock
advfirewall reset Perte de règles locales personnalisées
advfirewall set allprofiles state off Suppression temporaire de la protection fournie par le pare-feu
wlan delete profile Perte de la configuration Wi-Fi enregistrée
portproxy add ... 0.0.0.0 Exposition réseau plus large que prévu

Une checklist avant de modifier un serveur distant

  1. Identifiez précisément l’interface.
  2. Notez la configuration actuelle avec ipconfig /all.
  3. Vérifiez les routes.
  4. Notez les DNS.
  5. Exportez le pare-feu si vous allez le modifier lourdement.
  6. Préparez un accès hors bande ou console.
  7. Effectuez un seul changement logique à la fois.
  8. Testez depuis une deuxième session avant de fermer la première.

Cette liste paraît paranoïaque.

Puis vient le jour où vous changez :

adresse IP
+
passerelle
+
DNS
+
pare-feu

dans la même commande de maintenance sur un serveur situé dans un datacenter à 500 kilomètres.

À ce moment-là, le mot :

console distante

acquiert une chaleur émotionnelle rarement rencontrée dans la documentation réseau.

La bonne méthode de dépannage

Netsh devient réellement puissant lorsque ses commandes sont utilisées avec une méthode.

Une séquence saine ressemble à :

OBSERVER
↓
IDENTIFIER
↓
TESTER
↓
MODIFIER
↓
VÉRIFIER

Par exemple :

netsh interface show interface
ipconfig /all
route print
nslookup example.com
Test-NetConnection example.com -Port 443

Puis seulement la modification correspondant à la cause identifiée.

Pas :

netsh int ip reset
netsh winsock reset
ipconfig /flushdns
reboot
croiser les doigts

dès qu’un utilisateur annonce que « Google est lent ».

Netsh, ipconfig, route, nslookup et PowerShell : chacun son rôle

Outil Usage typique
netsh Configuration et diagnostic de nombreux composants réseau Windows
ipconfig État IP, DHCP, DNS, renouvellement et caches associés
route Table de routage
nslookup Interrogation DNS
netstat Connexions et ports
ping Test ICMP
tracert Observation du chemin IP
Test-NetConnection Tests réseau PowerShell, notamment TCP
Get-Net* Administration réseau PowerShell structurée

Conclusion : Netsh n’est pas suicidaire, il est simplement très obéissant

Netsh possède une réputation de couteau suisse réseau.

La comparaison est assez juste.

Il permet de :

  • configurer IPv4 et IPv6 ;
  • gérer DNS ;
  • modifier les interfaces ;
  • administrer des profils Wi-Fi ;
  • intervenir sur Winsock ;
  • gérer le pare-feu ;
  • configurer WinHTTP ;
  • créer des proxys de ports ;
  • capturer des traces ;
  • automatiser certaines configurations.

Mais la meilleure compétence avec Netsh n’est pas de connaître cinquante commandes de mémoire.

C’est de comprendre ce que chacune modifie.

Retenez notamment :

  • vérifiez toujours le nom ou l’index de l’interface ;
  • IP et DNS possèdent des configurations distinctes ;
  • remettre l’adresse en DHCP ne suffit pas nécessairement à remettre DNS en DHCP ;
  • portproxy est un proxy TCP, pas un NAT universel ;
  • WinHTTP ne représente pas tous les proxys du système ;
  • winsock reset et int ip reset ne réinitialisent pas la même chose ;
  • le pare-feu doit être ajusté par règles plutôt que désactivé globalement ;
  • un profil Wi-Fi exporté avec key=clear contient potentiellement un secret ;
  • changer une interface distante peut détruire précisément la connexion qui vous permettait de la réparer ;
  • et PowerShell constitue souvent un meilleur choix pour une automatisation moderne et structurée.

Netsh ne décide jamais :

« Cette commande semble risquée, je vais attendre que l’administrateur ait dormi huit heures. »

Il reçoit :

netsh interface set interface name="Ethernet" admin=disabled

et répond essentiellement :

« Très bien. »

Puis la session distante disparaît.

Ce n’est donc pas réellement un outil suicidaire.

C’est un outil extrêmement professionnel : il exécute les décisions de la direction, même lorsqu’elles sont mauvaises.