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
- Identifiez précisément l’interface.
- Notez la configuration actuelle avec
ipconfig /all. - Vérifiez les routes.
- Notez les DNS.
- Exportez le pare-feu si vous allez le modifier lourdement.
- Préparez un accès hors bande ou console.
- Effectuez un seul changement logique à la fois.
- 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.
