HyperV - Статический Ip с Vagrant

1740
Jazerix

Я использую Laravel Homestead с Vagrant, и я подумал, что будет разумнее использовать Hyper-V вместо Virtual Box, поскольку он интегрирован с Windows.

Здесь моя проблема. Время от времени моя виртуальная машина Hyper-v получает новый IP-адрес, обычно 172.20.83.X. Это портит мой файл hosts, когда я использую ips для тестирования доменов. Таким образом, каждый раз, когда мой сервер hyper-v получает новый ip, мне приходится повторно вводить новый ip, который быстро становится очень утомительным.

Я задаюсь вопросом, есть ли способ, которым я могу установить IP-адрес всегда одинаковым на моей машине.

Я попытался повозиться с виртуальным диспетчером коммутаторов для сервера, но в итоге потерял полный интернет.

1
Какой тип виртуального коммутатора у вас? внешний? внутренний? или частный? S.Leon 5 лет назад 0
@ S.Leon, это внешнее :) Jazerix 5 лет назад 1

2 ответа на вопрос

2
S.Leon

Похоже, что внешний DHCP-сервер с областью действия 172.20.23.X будет предоставлять IP-адреса для ваших виртуальных машин. Вы можете использовать фильтры в консоли DHCP, чтобы запретить DHCP-серверу выдавать адреса этим машинам, введя mac-адрес виртуальной машины. Как показано ниже:

Затем вы можете использовать другой DHCP для установки зарезервированных адресов для вашей виртуальной машины (насколько я понимаю, вы не хотите получать адрес в области 172.20.83.X, поэтому используйте другой DHCP) или вручную настроить статические адреса так, чтобы их информация такая же, как и содержимое вашего хост-файла.

Также убедитесь, что вы не используете динамический MAC-адрес на виртуальной машине Hyper-V. Это приведет к тому, что вы получите новые IP-адреса даже с резервированием DHCP. Вы можете проверить это в разделе Дополнительные настройки сетевых адаптеров ... Я считаю, что по умолчанию они настроены на динамический. essjae 5 лет назад 0
Это ни в коем случае не является критикой вашего ответа, поскольку, по крайней мере, он предоставляет «обходной путь» для применения после предоставления, но не позволяет задавать статический IP-адрес программным путем при подготовке виртуальной машины, это огромная боль. Многие рабочие процессы требуют регулярного создания и уничтожения этих типов виртуальных машин, поэтому любая степень «ручной» работы является проблематичной. Надеемся, что Vagrant обратится к этому через https://github.com/hashicorp/vagrant/issues/8384 Ben Johnson 5 лет назад 0
1
Ben Johnson

Аскер и все, кто имеет подобный вариант использования, скорее всего, работают на рабочей станции (не в редакции Windows Server) для целей локальной разработки, и в этом случае существует относительно простое решение.

Создать переключатель

В диспетчере Hyper-V создайте новый виртуальный коммутатор в разделе Actions panel -> Virtual Switch Manager... -> Create Virtual Switch. Предполагая, что виртуальная машина должна иметь возможность подключаться к Интернету, выберите Externalтип коммутатора.

На следующем экране присвойте коммутатору имя, например internet-enabled, и выберите физический сетевой интерфейс, подключенный к Интернету.

Результирующий переключатель должен выглядеть примерно так:

enter image description here

Жесткий код IP-адреса коммутатора (шлюз для виртуальной машины)

Найдите сетевой адаптер, связанный с новым коммутатором, т. Е. Под Control Panel -> Network and Internet -> Network Connections; его название будет отражать имя, данное в предыдущем шаге, например, vEthernet (internet-enabled). Щелкните правой кнопкой мыши адаптер и выберите Properties.

Далее нажмите Internet Protocol Version 4 (TCP/IPv4)и нажмите Properties. Введите 192.168.10.1для IP address, и 255.255.255.0для Subnet mask. Настройки должны выглядеть так:

enter image description here

Назначить статический IP-адрес в гостевой виртуальной машине

Последний шаг - назначить статический IP-адрес в гостевой виртуальной машине.

К сожалению, Vagrant не поддерживает (начиная с v2.2.1) статическую конфигурацию IP (см. Https://github.com/hashicorp/vagrant/issues/8384 ), поэтому этот статический IP нельзя назначить до подготовки виртуальной машины.

Пока Vagrant не поддерживает эту возможность, можно просто подготовить ВМ в обычном режиме и впоследствии отредактировать конфигурацию сети.

Процесс установки статического IP-адреса варьируется в зависимости от гостевой ОС, но в Ubuntu 18.04 LTS, например, это так же просто, как редактирование, /etc/netplan/01-netcfg.yamlчтобы включить значения, которые соответствуют конфигурации виртуального коммутатора сверху (пробелы должны быть точными!):

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] 

После сохранения файла примените изменения с помощью:

$ sudo netplan apply 

ВМ должна немедленно отражать статический IP-адрес, что можно подтвердить с помощью 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) ... 

Хост теперь может пинговать гостя в 192.168.10.10, а гость может пинговать хоста в 192.168.10.1.

Рекомендации: