Linux в Hyper-V (Windows Server 2012 R2)

Доброй ночи!

random image

Вообще я не очень люблю пользоваться продуктами MS (исключение VS Code который офигенен), но иногда по работе возникает необходимость во всем это деле разбираться. На сей раз была довольно простая и тривиальная задача - развернуть в Hyper-V виртуалку с Linux и предоставить ей доступ наружу.

В итоге эта простейшая задача заняла у меня довольно большое количество времени и я пишу этот пост в надежде сэкономить кому-то пару-тройку часов.

Затык был в том что развернутый в Hyper-V Linux не мог получить ip-адрес.

Нерабочий вариант

В инструкциях которые я находил в сети предлагалось поднять внешний виртуальный свич (External vSwitch) и разрешить доступ этому свичу во внешнем сетевом интерфейсе. Затем выбрать этот свич в настройках виртуальной машины (выбираем обычную сетевую камеру, не legacy). Вот собственно это я и делал. Я пытался запустить CentOS 7 и Lubuntu 18.04.

В итоге запущенные линуксы не могли получить ip-адрес по DHCP, а при попытке самостоятельно прописать статичный адрес (допустим 192.168.0.30) и шлюз подключение устанавливалось, но доступа к сети не было.

Исключение составлял лишь вариант с прописыванием ip-адреса и шлюза такого же как на внешнем интерфейсе Windows-сервера. При попытке отправки сетевых запросов в этот момент виртуалка дорывалась до сети, но при этом отваливалось подключение у внешнего хоста =)


Также в интернетах предлагали в качестве решения удалить сетевой интерфейс из настроек виртуальной машины и добавить туда Legacy сетевую карту.
Этот вариант тоже не сработал.


Короче это все не то.

Рабочий вариант

Оказалось что нужно было создать Internal vSwitch, разрешить доступ с этого свича к внешнему сетевому интерфейсу и выбрать этот свич в настройках виртуалки.

1) Создаем Internal vSwitch в Hyper-V

2) Разрешаем доступ из свича во внешний интерфейс

3) Выбираем свич из пункта 1 в настройках нашей виртуальной машины

Вот и все =)

Linux в виртуальной машине получил локальный адрес по DHCP (по-умолчанию из диапазона 192.168.137.2-192.168.137.255) и достучался до интернетов.
Диапазон адресов можно поменять поправив ключ в реестре (это легко гуглится).

А для того чтобы разрешить доступы к виртуальной машине с внешки надо в окне настройки из пункта 2 нажать на Settings и отметить галочками порты которые надо прокинуть снаружи (можно там добавить свои варианты).

Описал я конечно по-дилетантски, но возможно скрины вам помогут =)