Linux в Hyper-V (Windows Server 2012 R2)
Доброй ночи!
Вообще я не очень люблю пользоваться продуктами 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 и отметить галочками порты которые надо прокинуть снаружи (можно там добавить свои варианты).
Описал я конечно по-дилетантски, но возможно скрины вам помогут =)