Ajouter un alias IP statique à une interface DHCP sur Windows 8 (et supérieur)

16

J'ai une machine Windows 8 qui n'a qu'un seul port Ethernet. Il doit utiliser DHCP et a également besoin d'une adresse IP statique. Chaque IP se trouve dans un sous-réseau différent et chacune a un objectif différent et incompatible.

Cette machine doit utiliser DHCP car l'administrateur du réseau du site indique que c'est le seul moyen pris en charge pour obtenir une 192.168.x.yadresse. Soit son schéma de réseau n'a pas de bloc IP statique dans ce sous-réseau, soit il n'en attribuera pas un à cette machine.

Je ne peux pas risquer d'utiliser une IP attribuée par DHCP de manière statique, pariant qu'elle ne sera pas réaffectée après l'expiration du bail. Cela me permettrait d'utiliser la capacité de Windows à attribuer plusieurs adresses IP statiques à l'interface, mais il s'agit d'un serveur de production, pas quelque chose que je peux risquer d'être renvoyé du réseau des heures ou des jours plus tard.

Je me rends compte que certains serveurs DHCP vous permettent de configurer des affectations MAC statiques à IP, de sorte que l'adresse IP DHCP de ma machine ne soit jamais réaffectée, mais comme je ne connais aucun serveur DHCP qui émettra deux adresses IP différentes, chacune dans un sous-réseau différent, ce n'est pas aide ici. (Et s'il existe un tel serveur DHCP, mon client ne l'utilise probablement pas et n'y changerait pas si je le lui demandais.)

Comme je ne peux pas le faire entièrement avec DHCP, j'ai besoin d'une adresse IP statique car cette machine fait également office de serveur pour un 10.x.y.zsous - réseau. Les administrateurs du réseau local m'ont donné une adresse IP statique dans ce schéma, mais c'est insuffisant car j'ai également besoin de parler du 192.168.x.ycôté du réseau.

Je suis au courant d'une question similaire ici . Je demande à nouveau parce que:

  1. Cette autre question a été posée lorsque Windows 7 était à jour. Peut-être que Microsoft a utilisé ces 2 ans et plus pour corriger cette faiblesse dans la mise en œuvre de la pile réseau de Windows 8?

    (Oui, faiblesse : Linux autorise une interface réseau avec à la fois un DHCP et une IP statique. Rien sur TCP / IP n'empêche Microsoft de permettre cela. Il suffit d'écrire le code pour le permettre.)

  2. Il semble que l'interface graphique de configuration réseau dans Windows 8 ait la même limitation que Windows 7, mais il y a peut-être un hack de bas niveau qui nous permettra d'attribuer un alias IP statique à l'interface DHCP?

Warren Young
la source

Réponses:

13

Enfin, le DHCP et les adresses IP statiques peuvent être configurés pour coexister sur une seule carte réseau. Cette fonctionnalité a atterri dans la mise à jour des créateurs de Windows 10 (1703).

Il existe une nouvelle propriété appelée dhcpstaticipcoexistencedans la netsh interface ipv4 set interfacecommande, qui peut être définie sur enabledet cette interface peut être configurée avec plusieurs adresses IP statiques avec une adresse IP configurée DHCP. Cependant, cela doit être fait avec la netsh add addresscommande, pas encore possible via l'interface graphique.

Peu de documentation a été publiée sur la mise à jour netshet il y a peu de discussions à ce sujet sur l'ensemble d'Internet (la recherche Google dhcpstaticipcoexistencene donne que 5 résultats au moment de cette réponse). Mais cette fonctionnalité est réelle.

Cecil
la source
5
Cette réponse m'a été très utile car elle a fonctionné à travers les redémarrages et semblait être une bonne solution de première partie. Inclure des exemples de commandes à utiliser aurait été bien. Cette réponse était si proche de donner des exemples de commandes, mais j'ai dû aller sur Google pour trouver la syntaxe exacte. Mes dernières commandes étaient netsh interface ipv4 set interface interface="Ethernet" dhcpstaticipcoexistence=enabledet netsh interface ipv4 add address "Ethernet" 192.168.1.200 255.255.255.0.
jljtgr
13

Voici les commandes exactes requises pour la suggestion de Cecil basée sur la nouvelle fonctionnalité dhcpstaticipcoexistence de Windows 10 :

  1. Découvrez le nom de l'interface:

    netsh interface ipv4 show interface
    
  2. Activez dhcpstaticipcoexistence:

    netsh interface ipv4 set interface interface="interface name" dhcpstaticipcoexistence=enabled
    
  3. Ajoutez une adresse IP statique à votre interface

    netsh interface ipv4 add address "interface name" 192.168.x.xxx 255.255.255.0
    
  4. Utilisez la commande «ipconfig / all» pour vérifier que l'adresse IP statique est ajoutée. Vous ne pouvez pas le faire depuis l'interface graphique.

Michael Zhang
la source
6

J'ai écrit un petit fichier batch. Vous pouvez tester pour voir si cela fonctionne dans votre situation. (ici ça marche bien)

  • Il réinitialisera votre interface sur DHCP.
  • Après cela, il extraira l'IP, le masque de sous-réseau, la passerelle par défaut et le premier serveur DNS. C'est la partie difficile. Surtout si vous avez plusieurs interfaces. Si cela ne fonctionne pas, nous devons jouer un peu ici pour le faire fonctionner.
  • Si vous voulez aussi le deuxième DNS, il devrait être ajouté ici (mais je n'ai pas cherché aussi loin car un DNS devrait aller pour le moment).
  • Il définira ces paramètres "statiques" sur l'interface.
  • Après cela, vous pouvez ajouter l' 10.x.y.zadresse à votre interface sans problème.

Voici le script:

@Écho off
set interface = "Ethernet 2"
set extra_ip = 10.0.0.33
set extra_mask = 255.255.248.0

echo Redéfinition de% interface% sur DHCP
netsh int ipv4 set nom de l'adresse =% interface% source = dhcp
netsh int ipv4 set nom du serveur DNS =% interface% source = dhcp

écho En attente de stabilisation de l'IP ...
timeout / t 5

echo Obtenir l'IP actuelle de% interface%
ipconfig>% temp% \ ipconfig.txt
pour / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "IPv4" ^ | find / v "127.0"'), définissez _IP = %% a
définir IP =% _ IP: ~ 1%
pour / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "Subnet" ^ | find / v "127.0"'), définissez _IP = %% a
définir MASK =% _ IP: ~ 1%
pour / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "Default" ^ | find / v "127.0" ^ | find / v "::"') définissez _IP = %% a
définir GATE =% _ IP: ~ 1%
pour / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "DNS Servers" ^ | find / v "127.0"'), définissez _IP = %% a
définir DNS1 =% _ IP: ~ 1%

echo Réglage de l'adresse IP, du masque de sous-réseau et de la passerelle par défaut ...
écho (IP% IP%, masque% MASK%, gw% GATE%)
netsh int ipv4 set nom de l'adresse =% interface% static% IP%% MASK%% GATE% gwmetric = 1

timeout / t 5
echo Configuration du DNS primaire (% DNS1%) ...
netsh int ipv4 set nom du serveur DNS =% interface% static% DNS1% primary

echo Ajout d'une adresse IP secondaire ...
netsh int ipv4 add address% interface%% extra_ip%% extra_mask%

timeout / t 5
écho.
echo Nouvelle configuration IP:
ipconfig / all

del% temp \ ipconfig.txt

Vous ne devez l'exécuter qu'une seule fois pendant la période de votre bail (ou après un redémarrage). Donc, si votre bail est de 10 jours, vous pouvez le définir dans le planificateur de tâches pour 3 heures du matin le dimanche et après chaque redémarrage. Si votre ordinateur est toujours éteint la nuit, il ne sera nécessaire qu'après redémarrage.

Rik
la source
3

Une solution de contournement pourrait être d'exécuter une machine virtuelle sur la même machine et d'ajouter une adresse IP statique à cette machine virtuelle. Cela fournira essentiellement un adaptateur virtuel sur l'hôte, mais pour le réseau 10.xvz.

La configuration de réseau personnalisée, similaire à celle que vous demandez, est bien documentée ici .

Fergus
la source
L'idée de VM est la chasse aux papillons avec un marteau. L'ajout d'un système VM et l' octroi de licences Windows pour l'utilisation de VM seraient compliqués et probablement plus coûteux que l'ajout d'une deuxième carte réseau à la machine. J'ai seulement besoin de l' 10.x.y.zadresse pour servir un seul programme.
Warren Young
C'est pourquoi je préfère la réponse avec "une solution de contournement pourrait être .."; l'ajout d'une machine virtuelle fonctionnerait certainement. Le multihébergement est évident; mais là encore, votre idée changerait fondamentalement la question d'origine. bonne chance
Fergus
1

Que diriez-vous de planifier un script pour ajouter l'adresse IP après le démarrage:

netsh interface ipv4 add address “Local Area Connection” 10.x.y.z 255.255.255.0
Paul
la source
Excellente idée, mais je suis convaincu que forcer l'adaptateur hors DHCP.
Fergus
Je l'ai testé et @Fergus a raison: dire netsh interface ipv4 show addressaprès cela ne donne que l'IP statique. L'IP DHCP a disparu.
Warren Young
Oups, ouais je me souviens maintenant. L'option serait d'obtenir l'adresse IP actuelle, puis de rajouter les deux. Il est très peu probable qu'un bail DHCP ne soit pas renouvelé lorsqu'il est activement utilisé (il y a un délai de grâce pour éviter cela), donc cela n'a d'importance qu'au moment du démarrage.
Paul
@Paul: Si je rajoute simplement l'adresse DHCP avec netsh, cela n'en fait-il pas une adresse IP statique, de sorte que la pile de la boîte Windows ne continuera pas d'envoyer des renouvellements de bail DHCP au serveur DHCP? Une fois le bail initial écoulé, le serveur DHCP serait alors libre de réaffecter cette adresse.
Warren Young
@WarrenYoung Quelle est la durée du bail que vous obtenez? ( ipconfig /all. pour moi, c'est à 10 jours de mon routeur). Donc, si l'ordinateur est redémarré avant la fin du bail, cela ne devrait pas poser de problème. Sinon, vous pouvez ajouter un ipconfig /releaseet ipconfig /renewau - dessus de ces lignes et le planifier pour qu'il s'exécute à 3 heures du matin (lorsque personne n'est derrière l'ordinateur).
Rik
0

J'ai utilisé Win IP Config version 2.7.2 de 2007 sous Windows 10. Définissez votre NIC sur DHCP, exécutez Win IP Config en tant qu'administration (icône de clic droit au lieu de double-cliquer pour l'option). Cliquez ensuite sur IP + et saisissez l'adresse IP statique souhaitée. J'ai maintenant un DHCP et deux adresses statiques. Maintenant, je peux faire le développement de mon système embarqué et accéder à Internet en même temps avec une seule carte réseau!

Brandon
la source
Cela semble ... alors ... louches ....
paquetp