Hinzufügen eines statischen IP-Alias ​​zu einer DHCP-Schnittstelle unter Windows 8 (und höher)

16

Ich habe einen Windows 8-Computer, der nur einen einzigen Ethernet-Port hat. Es muss DHCP verwenden und benötigt auch eine statische IP. Jede IP befindet sich in einem anderen Subnetz und dient einem anderen, inkompatiblen Zweck.

Dieser Computer muss DHCP verwenden, da der Site-Netzwerkadministrator angibt, dass dies der einzige unterstützte Weg ist, um eine 192.168.x.yAdresse abzurufen. Entweder hat sein Netzwerkschema keinen statischen IP-Block in diesem Subnetz, oder er weist diesem Computer keinen davon zu.

Ich kann nicht riskieren, eine von DHCP zugewiesene IP statisch zu verwenden. Ich wette, dass sie nach Ablauf des Mietvertrags nicht neu zugewiesen wird. Auf diese Weise könnte ich die Fähigkeit von Windows nutzen, der Schnittstelle mehrere statische IP-Adressen zuzuweisen. Dies ist jedoch ein Produktionsserver, und ich kann nicht riskieren, dass er Stunden oder Tage später vom Netzwerk abprallt.

Mir ist klar, dass Sie auf einigen DHCP-Servern statische MAC-IP-Zuweisungen einrichten können, sodass die DHCP-IP meines Computers nie neu zugewiesen wird. Da ich jedoch keinen DHCP-Server kenne, der zwei verschiedene IP-Adressen in einem anderen Subnetz ausgibt, ist dies keine Hilfe hier. (Und wenn es einen solchen DHCP-Server gibt, verwendet mein Client ihn wahrscheinlich nicht und würde nicht darauf umsteigen, wenn ich danach frage.)

Da ich dies nicht vollständig mit DHCP tun kann, benötige ich eine statische IP, da dieser Computer auch als Server für ein 10.x.y.zSubnetz fungiert. Die lokalen Netzwerkadministratoren haben mir in diesem Schema eine statische IP- Adresse zugewiesen , die jedoch nicht ausreicht, da ich auch mit der 192.168.x.ySeite des Netzwerks sprechen muss .

Mir ist hier eine ähnliche Frage bekannt . Ich frage noch einmal, weil:

  1. Diese andere Frage wurde gestellt, als Windows 7 aktuell war. Vielleicht hat Microsoft diese 2+ Jahre genutzt, um diese Schwachstelle in der Windows 8-Netzwerkstapel-Implementierung zu beheben?

    (Ja, Schwäche : Linux erlaubt eine Netzwerkschnittstelle sowohl mit einer DHCP- als auch einer statischen IP-Adresse. TCP / IP hindert Microsoft nicht daran, dies zuzulassen. Sie müssen lediglich den Code schreiben, um dies zuzulassen.)

  2. Es scheint, dass die Netzwerkkonfigurations-GUI in Windows 8 die gleichen Einschränkungen aufweist wie in Windows 7, aber vielleicht gibt es einen Hack auf niedriger Ebene, mit dem wir der DHCP-Schnittstelle einen statischen IP-Alias ​​zuweisen können?

Warren Young
quelle

Antworten:

13

Schließlich können DHCP und statische IPs so konfiguriert werden, dass sie auf einer Netzwerkkarte nebeneinander existieren. Diese Funktion ist im Windows 10 Creators Update (1703) enthalten.

dhcpstaticipcoexistenceDer netsh interface ipv4 set interfaceBefehl enthält eine neue Eigenschaft , die festgelegt werden kann, enabledund diese Schnittstelle kann mit mehreren statischen IPs zusammen mit einer DHCP-konfigurierten IP konfiguriert werden. Dies muss jedoch mit dem netsh add addressBefehl erfolgen, der über die GUI noch nicht möglich ist.

Über das Update auf netshwurde nur wenig Dokumentation veröffentlicht, und im gesamten Internet wird wenig darüber diskutiert (die Google-Suche dhcpstaticipcoexistenceliefert zum Zeitpunkt dieser Antwort nur 5 Ergebnisse). Aber diese Funktion ist real.

Cecil
quelle
5
Diese Antwort war für mich sehr nützlich, da sie über Neustarts hinweg funktionierte und wie eine gute Lösung für Erstanbieter schien. Es wäre schön gewesen, Beispiele für die zu verwendenden Befehle anzugeben. Diese Antwort war so nah dran, Beispielbefehle zu geben, aber ich musste zu Google gehen, um die genaue Syntax herauszufinden. Meine letzten Befehle waren netsh interface ipv4 set interface interface="Ethernet" dhcpstaticipcoexistence=enabledund netsh interface ipv4 add address "Ethernet" 192.168.1.200 255.255.255.0.
jljtgr
13

Hier sind die genauen Befehle, die für Cecils Vorschlag erforderlich sind, basierend auf der neuen dhcpstaticipcoexistence- Funktion von Windows 10 :

  1. Finden Sie den Namen der Schnittstelle heraus:

    netsh interface ipv4 show interface
    
  2. Aktivieren Sie die dhcpstaticip-Koexistenz:

    netsh interface ipv4 set interface interface="interface name" dhcpstaticipcoexistence=enabled
    
  3. Fügen Sie Ihrer Schnittstelle eine statische IP-Adresse hinzu

    netsh interface ipv4 add address "interface name" 192.168.x.xxx 255.255.255.0
    
  4. Verwenden Sie den Befehl 'ipconfig / all', um zu überprüfen, ob die statische IP-Adresse hinzugefügt wurde. Sie können es nicht über die GUI tun.

Michael Zhang
quelle
6

Ich habe eine kleine Batch-Datei geschrieben. Sie können testen, ob es in Ihrer Situation funktioniert. (hier funktioniert es gut)

  • Dadurch wird Ihre Schnittstelle wieder auf DHCP zurückgesetzt.
  • Danach werden IP, Subnetzmaske, Standardgateway und der erste DNS-Server extrahiert. Das ist das Schwierige. Vor allem, wenn Sie mehrere Schnittstellen haben. Wenn es nicht funktioniert, müssen wir hier ein bisschen herumspielen, damit es funktioniert.
  • Wenn Sie auch das zweite DNS möchten, sollte es hier hinzugefügt werden (aber ich habe nicht so weit geschaut, weil ein DNS vorerst in Ordnung sein sollte).
  • Diese Einstellungen werden auf der Schnittstelle auf "statisch" gesetzt.
  • Danach können Sie die 10.x.y.zAdresse problemlos zu Ihrer Schnittstelle hinzufügen .

Hier ist das Skript:

@echo aus
set interface = "Ethernet 2"
setze extra_ip = 10.0.0.33
setze extra_mask = 255.255.248.0

echo% interface% auf DHCP zurücksetzen
netsh int ipv4 set address name =% interface% source = dhcp
netsh int ipv4 set dnsservers name =% interface% source = dhcp

echo Warten auf IP, um sich zu stabilisieren ...
Timeout / t 5

echo Aktuelle IP von% interface% abrufen
ipconfig>% temp% \ ipconfig.txt
für / f "tokens = 2 delims =:" %% a in ('Typ% temp% \ ipconfig.txt ^ | find "IPv4" ^ | find / v "127.0"') setze _IP = %% a
setze IP =% _ IP: ~ 1%
für / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "Subnet" ^ | find / v "127.0"') setze _IP = %% a
setze MASK =% _ IP: ~ 1%
für / f "tokens = 2 delims =:" %% a in ('Typ% temp% \ ipconfig.txt ^ | find "Default" ^ | find / v "127.0" ^ | find / v "::"') setze _IP = %% a
setze GATE =% _ IP: ~ 1%
für / f "tokens = 2 delims =:" %% a in ('Typ% temp% \ ipconfig.txt ^ | find "DNS-Server" ^ | find / v "127.0"') setze _IP = %% a
setze DNS1 =% _ IP: ~ 1%

echo IP-Adresse, Subnetzmaske und Standard-Gateway einstellen ...
Echo (IP% IP%, Maske% MASK%, gw% GATE%)
netsh int ipv4 set address name =% interface% static% IP %% MASK %% GATE% gwmetric = 1

Timeout / t 5
Echo Einstellen des primären DNS (% DNS1%) ...
netsh int ipv4 set dnsserver name =% interface% static% DNS1% primary

echo Hinzufügen einer sekundären IP ...
netsh int ipv4 Adresse hinzufügen% interface %% extra_ip %% extra_mask%

Timeout / t 5
Echo.
echo Neue IP-Konfiguration:
ipconfig / all

del% temp \ ipconfig.txt

Sie müssen dies nur einmal pro Zeitraum Ihres Leasingvertrags (oder nach einem Neustart) ausführen. Wenn Ihr Mietvertrag also 10 Tage beträgt, können Sie dies im Taskplaner für 3 Uhr morgens am Sonntag und nach jedem Neustart festlegen. Wenn Ihr Computer nachts immer ausgeschaltet ist, wird er erst nach dem Neustart benötigt.

Rik
quelle
3

Eine Problemumgehung könnte darin bestehen, eine VM auf demselben Computer auszuführen und dieser VM eine statische IP hinzuzufügen. Dies stellt im Wesentlichen einen virtuellen Adapter auf dem Host bereit, jedoch für das 10.xvz-Netzwerk.

Die benutzerdefinierte Netzwerkkonfiguration, die der von Ihnen angeforderten ähnlich ist, ist hier gut dokumentiert .

Fergus
quelle
Die VM-Idee ist die Schmetterlingsjagd mit einem Vorschlaghammer. Das Hinzufügen eines VM-Systems und die Lizenzierung von Windows für die VM-Nutzung wäre kompliziert und wahrscheinlich teurer als das Hinzufügen einer zweiten Netzwerkkarte zum Computer. Ich brauche nur die 10.x.y.zAdresse, um ein einziges Programm zu bedienen.
Warren Young
Deshalb stelle ich der Antwort "eine Problemumgehung könnte sein ..." voran; Das Hinzufügen einer VM würde sicherlich funktionieren. Multihoming ist offensichtlich; Andererseits würde Ihre Idee die ursprüngliche Frage grundlegend ändern. Viel Glück
Fergus
1

Wie wäre es, wenn Sie ein Skript planen, um die IP-Adresse nach dem Start hinzuzufügen:

netsh interface ipv4 add address “Local Area Connection” 10.x.y.z 255.255.255.0
Paul
quelle
Tolle Idee, aber ich bin zuversichtlich, dass der Adapter aus DHCP entfernt wird.
Fergus
Ich habe es getestet, und @Fergus hat Recht: Wenn Sie danach sagen, erhalten Sie netsh interface ipv4 show addressnur die statische IP. Die DHCP-IP ist weg.
Warren Young
Hoppla, ja, ich erinnere mich jetzt. Die Option wäre, die aktuelle IP abzurufen und dann beide wieder hinzuzufügen. Es ist sehr unwahrscheinlich, dass ein DHCP-Lease während der aktiven Nutzung nicht erneuert wird (es gibt eine Nachfrist, um dies zu vermeiden), daher ist dies nur beim Booten von Bedeutung.
Paul
@Paul: Wenn ich nur die DHCP-Adresse wieder mit hinzufüge netsh, wird sie dann nicht zu einer statischen IP- Adresse , sodass der Stapel der Windows-Box keine DHCP-Lease-Erneuerungen mehr an den DHCP-Server sendet. Wenn die anfängliche Lease-Zeit abgelaufen ist, kann der DHCP-Server diese Adresse neu zuweisen.
Warren Young
@WarrenYoung Wie lange ist der Mietvertrag, den Sie erhalten? ( ipconfig /allFür mich sind es 10 Tage von meinem Router). Wenn der Computer vor Ablauf des Leasingvertrags neu gestartet wird, sollte dies kein Problem sein. Andernfalls können Sie ein ipconfig /releaseund ipconfig /renewüber diesen Zeilen hinzufügen und festlegen, dass es um 3 Uhr morgens ausgeführt wird (wenn sich niemand hinter dem Computer befindet).
Rik
0

Ich habe Win IP Config Version 2.7.2 von 2007 unter Windows 10 verwendet. Stellen Sie Ihre Netzwerkkarte auf DHCP ein und führen Sie Win IP Config als Verwaltung aus (Rechtsklick-Symbol anstelle von Doppelklick für die Option). Klicken Sie dann auf IP + und geben Sie die gewünschte statische IP-Adresse ein. Ich habe jetzt eine DHCP- und zwei statische Adresse. Jetzt kann ich meine eingebettete Systementwicklung durchführen und gleichzeitig mit einer Netzwerkkarte auf das Internet zugreifen!

Brandon
quelle
Das sieht aus ... also ... shaddy ...
paquetp