Définir une configuration TCP/IP en PowerShell
Définir une configuration TCP/IP correcte sur une carte réseau fait partie des choses basiques à savoir-faire. PowerShell propose des commandlets adéquats pour parvenir à configurer une interface réseau, dans le but de remplacer le bon vieux netsh.
Quant aux commandes, elles sont intégrées à PowerShell depuis la version 4.0, nous les retrouvons donc sans aucun problème sur les dernières versions de Windows Server.
Sommaire
I. La liste des cartes réseau
Commençons par lister les cartes réseau disponibles sur la machine, cela permettra de repérer le numéro d’index de la carte que l’on souhaite modifier. Ce numéro sera utile lors de la phase de configuration, car il permet d’avoir un numéro unique pour identifier chaque carte réseau.
Deux choix s’offrent à vous :
- Get-NetIPInterface : obtenir la liste des configurations IP (IPv4 et/ou IPv6) de chaque interface
- Get-NetAdapter : obtenir les propriétés basiques des adaptateurs réseau
Dans les deux cas, la colonne « ifIndex » vous donnera le numéro d’index de chaque carte. Repérez celui qui correspond à la carte à configurer, pour ma part c’est « 6 », correspondant à ma carte "Ethernet0".
Note : Pensez à basculer dans une console PowerShell (powershell.exe), si ce n’est pas déjà le cas.
II. Configuration d’une nouvelle adresse IP
En s’appuyant sur le commandlet « New-NetIPAddress », on ajoute l’adresse IP « 192.168.100.13/24 » à l’interface ayant l’index 6, ainsi qu’une passerelle par défaut « 192.168.100.1 »
New-NetIPAddress –InterfaceIndex 6 –IPAddress 192.168.100.13 –PrefixLength 24 –DefaultGateway 192.168.100.1
Quelques précisions concernant les paramètres utilisés :
- InterfaceIndex : numéro d’index de la carte à modifier (il est possible d’utiliser à la place –InterfaceAlias suivit du nom de l’interface si vous préférez au numéro d’index)
- IPAddress : adresse IP à attribuer à la carte
- PrefixLength : longueur du masque de sous réseau, au format CIDR
- DefaultGateway : passerelle par défaut
Note : Il existe également la commande Set-NetIPAddress, qui permet de modifier la configuration d’une IP déjà existante dans les paramètres de la carte. Contrairement à ce que l’on peut voir sur internet, elle ne permet pas l’ajout d’une nouvelle adresse sur une carte (la commande retourne une erreur MSFT_NetIPAddress).
Voici la sortie correspondante à cet exemple New-NetIPAddress :
Si votre carte était configurée en DHCP, le fait d’ajouter une adresse IP désactive le mode DHCP. D’ailleurs au passage, voici comment activer/désactiver le DHCP sur une carte :
Set-NetIPInterface -InterfaceIndex 6 -Dhcp {Enabled/Disabled}
Revenons à l’adresse IP, nous avons vu comment ajouter une adresse IP sur une carte. Cependant, si une adresse IP est déjà en place sur la carte, elle ne sera pas écrasée par celle que nous venons d’ajouter, il faut donc supprimer l’ancienne. Sinon, le risque c'est de cumuler plusieurs adresses IP sur la même carte réseau.
Imaginons que sur ma carte d’index 6, j’ai une ancienne adresse IP qui est « 192.168.100.14 » et que je souhaite la supprimer :
Remove-NetIPAddress –InterfaceIndex 6 –IPAddress 192.168.100.14 –PrefixLength 24
Vous remarquerez que l’on s’appuie sur l’utilisation de la commande Remove-NetIPAddress, en reprenant en modèle la commande d’ajout d’une adresse IP. Confirmez la demande de suppression avec « T » ou deux fois avec « O ».
La notion de Store :
- ActiveStore : appliquer immédiatement l’adresse IP définie
- PersistentStore : l’ordinateur sauvegarde l’adresse IP pour l’appliquer après redémarrage. Quand l’ordinateur redémarre, il copie les paramètres sauvegardés dans l’ActiveStore
III. Ajout d’un DNS en PowerShell
Nous avons configuré l'adresse IP, le masque de sous-réseau et la passerelle par défaut, mais il nous manque un élément important : le DNS. On continue en indiquant le serveur DNS « 192.168.100.11 » qui correspond à mon contrôleur de domaine. Toujours sur la même carte réseau, puis on vérifie que le changement est bien pris en compte :
Set-DnsClientServerAddress -InterfaceIndex 6 -ServerAddresses 192.168.100.11
Pour la vérification :
Get-DnsClientServerAddress -InterfaceIndex 6
Si éventuellement vous souhaitez ajouter un suffixe DNS, utilisez cette commande (exemple avec it-connect.local) :
Set-DnsClient -InterfaceIndex 6 -ConnectionSpecificSuffix it-connect.local
IV. Récupérer la configuration IP avec PowerShell
Pour vérifier que la configuration de la carte réseau est correcte, on utilise la commande suivante :
Get-NetIPConfiguration
Note : Un alias de cette commande est présent par défaut, il suffit de saisir « gip ». Intéressant pour gagner du temps lorsqu’on souhaite visualiser sa configuration, sinon « Get-NetIPConfiguration » est plus ennuyeux à saisir qu’un simple « ipconfig ».
On peut ajouter à la commande le paramètre « InterfaceIndex » ou « InterfaceAlias » si nécessaire pour cible une interface en particulier. Cette commande doit forcément vous rappeler la commande ipconfig.
La configuration de la carte réseau est désormais terminée. N’hésitez pas à vous entraîner sur ces commandes plutôt que d’utiliser les commandes netsh.
Pour ceux qui préfèrent, il est aussi possible d’utiliser « sconfig ».
V. Définir une configuration TCP/IP avec sconfig
Comme d'habitude, pour accéder à sconfig saisissez la commande suivante :
sconfig
Ensuite, faites le choix « 8 » qui correspond à « Paramètres réseau » et appuyez sur Entrée.
Vous devez indiquer le numéro d’index de votre carte afin que SCONFIG sache quelle carte vous souhaitez configurer. Pour cela, repérez-vous à la colonne « Index numéro » (ou "Index#") dans le listing des cartes réseau disponibles, pour ma part l’index est « 1 ». Si vous avez suivi la procédure PowerShell, vous remarquerez que le numéro d'index n'est pas le même.
Indiquez ensuite « 1 » pour définir une adresse à la carte réseau puis « s » pour indiquer que vous souhaitez définir une adresse configuration statique (et donc manuellement).
On va vous demander trois choses : l’adresse IP statique, le masque de sous-réseau et la passerelle par défaut. Complétez les champs un par un.
Patientez quelques secondes pendant l’actualisation de la configuration de la carte réseau. Une fois que c’est fait, vous pourrez vérifier que vos paramètres sont bien pris en compte.
La manipulation ne s’arrête pas là, il nous reste à définir un ou plusieurs serveurs DNS pour pouvoir effectuer de la résolution de noms et donc accéder à internet. Cette fois-ci, au sein du menu "Paramètres de carte réseau", effectuez le choix « 2 » correspondant « Définir les serveurs DNS ».
Ensuite, indiquez l’adresse IP de votre serveur DNS préféré/principal puis appuyez sur « Entrée ». Un message d’avertissement apparaîtra. Faites-en de même pour le serveur DNS auxiliaire/secondaire si nécessaire.
Pour retourner au menu principal de SCONFIG, vous devez simplement appuyer sur "Entrée", sans faire de choix.
Félicitations, vous avez réussi à définir une configuration TCP/IP complète en s’appuyant sur PowerShell et l’utilitaire sconfig.