HyperV - Statische IP mit Vagrant

526
Jazerix

Ich verwende Laravel Homestead mit Vagrant, und ich dachte, es wäre sinnvoll, Hyper-V anstelle von Virtual Box zu verwenden, da es in Windows integriert ist.

Hier ist mein Problem. Hin und wieder erhält meine virtuelle Hyper-V-Maschine eine neue IP-Adresse, normalerweise etwas 172.20.83.X. Dies führt zu einer Verwirrung meiner hosts-Datei, während ich ips teste, um Domänen zu testen. Jedes Mal, wenn mein Hyper-V-Server eine neue IP erhält, muss ich die neue IP erneut eingeben, was schnell sehr langweilig wird.

Ich frage mich, ob es eine Möglichkeit gibt, die IP so einzustellen, dass sie auf meinem Computer immer gleich ist.

Ich habe versucht, mit dem virtuellen Switch-Manager für den Server zu basteln, verlor aber das komplette Internet.

1
Welche Art von virtuellem Switch gehört Ihnen? extern? intern? oder privat? S.Leon vor 5 Jahren 0
@ S.Leon, es ist extern :) Jazerix vor 5 Jahren 0

2 Antworten auf die Frage

1
S.Leon

Es scheint, dass der externe DHCP-Server mit dem Gültigkeitsbereich 172.20.23.X IP-Adressen für Ihre virtuellen Maschinen bereitstellt. Sie können Filter in der DHCP-Konsole verwenden, um zu verhindern, dass der DHCP-Server Adressen für diese Maschinen ausgibt, indem Sie die MAC-Adresse der virtuellen Maschine eingeben. Wie nachfolgend dargestellt:

Dann können Sie ein anderes DHCP verwenden, um reservierte Adressen für Ihre virtuelle Maschine festzulegen (ich verstehe, dass Sie die Adresse nicht im Bereich 172.20.83.X abrufen möchten, verwenden Sie also ein anderes DHCP) oder konfigurieren Sie statische Adressen manuell Informationen entsprechen dem Inhalt Ihrer Hostdatei.

Stellen Sie außerdem sicher, dass Sie keine dynamische MAC-Adresse auf Ihrer Hyper-V-VM verwenden. Dadurch erhalten Sie auch bei der DHCP-Reservierung neue IPs. Sie können dies unter den erweiterten Einstellungen für Netzwerkadapter überprüfen ... Ich glaube, sie sind standardmäßig auf dynamisch eingestellt. essjae vor 5 Jahren 0
Dies ist in keiner Weise eine Kritik Ihrer Antwort, da sie zumindest eine "Problemumgehung" bietet, die nach der Bereitstellung angewendet werden kann, aber nicht in der Lage zu sein, eine statische IP-Adresse programmatisch anzugeben, während die VM bereitgestellt wird, ist ein großer Schmerz. Bei vielen Workflows müssen diese VM-Typen routinemäßig erstellt und zerstört werden. Daher ist jedes erforderliche Maß an "manueller" Arbeit problematisch. Hoffentlich wird Vagrant dies über https://github.com/hashicorp/vagrant/issues/8384 ansprechen Ben Johnson vor 5 Jahren 0
0
Ben Johnson

Der Asker und jeder, der einen ähnlichen Anwendungsfall hat, arbeitet wahrscheinlich für lokale Entwicklungszwecke auf einer Workstation (nicht Windows Server Edition). In diesem Fall gibt es eine relativ einfache Lösung.

Erstellen Sie den Switch

Erstellen Sie in Hyper-V Manager einen neuen virtuellen Switch unter Actions panel -> Virtual Switch Manager... -> Create Virtual Switch. Wenn sich die VM mit dem Internet verbinden kann, wählen Sie den ExternalSwitch-Typ aus.

Geben Sie auf dem nächsten Bildschirm dem Switch einen Namen, z. B. internet-enabledund wählen Sie die physische Netzwerkschnittstelle, die mit dem Internet verbunden ist.

Der resultierende Schalter sollte ungefähr so ​​aussehen:

Hard-Code der IP-Adresse des Switches (Gateway für die VM)

Suchen Sie den Netzwerkadapter, der dem neuen Switch zugeordnet ist, dh unter Control Panel -> Network and Internet -> Network Connections; sein Name wird den im vorherigen Schritt angegebenen Namen wiedergeben, z vEthernet (internet-enabled). Klicken Sie mit der rechten Maustaste auf den Adapter und wählen Sie Properties.

Klicken Sie anschließend auf Internet Protocol Version 4 (TCP/IPv4)und auf Properties. Geben Sie 192.168.10.1für das IP addressund 255.255.255.0für das ein Subnet mask. Die Einstellungen sollten so aussehen:

Weisen Sie der Gast-VM eine statische IP-Adresse zu

Der letzte Schritt ist das Zuweisen einer statischen IP-Adresse in der Gast-VM.

Leider unterstützt Vagrant (ab Version 2.2.1) keine statische IP-Konfiguration (siehe https://github.com/hashicorp/vagrant/issues/8384 ). Daher kann diese statische IP- Adresse vor der Bereitstellung der VM nicht zugewiesen werden.

Bis Vagrant diese Funktion unterstützt, können Sie die VM einfach normal bereitstellen und die Netzwerkkonfiguration anschließend bearbeiten.

Der Vorgang zum Festlegen einer statischen IP-Adresse variiert je nach Gastbetriebssystem. In Ubuntu 18.04 LTS ist es zum Beispiel so einfach wie das Bearbeiten /etc/netplan/01-netcfg.yamlvon Werten, die der Konfiguration des virtuellen Switches entsprechen, von oben (die Leerzeichen müssen genau sein!).

network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.10.10/24] gateway4: 192.168.10.1 nameservers: addresses: [8.8.8.8,8.8.4.4] 

Übernehmen Sie die Änderungen nach dem Speichern der Datei mit:

$ sudo netplan apply 

Die VM sollte die statische IP-Adresse sofort widerspiegeln. Dies kann bestätigt werden mit ifconfig:

$ sudo ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255 inet6 fe80::215:5dff:fe38:12a prefixlen 64 scopeid 0x20<link> ether 00:15:5d:38:01:2a txqueuelen 1000 (Ethernet) ... 

Der Host kann jetzt einen Ping an 192.168.10.10den Gast senden und der Gast kann an den Host an pingen 192.168.10.1.

Verweise: