понедельник, 13 ноября 2017 г.

Несколько VLAN в Windows 10

После недавнего обновления (KB4041994) Windows 10 решила сделать мне хорошо и удалила более не поддерживаемую утилиту "Realtek Ethernet Diagnostic Utility".
Незадача в том, что утилита позволяла, пусть и коряво, сделать несколько VLAN на встроенной сетевой карте с чипом RTL8168. Итого образовалась ситуация: чип аппаратно умеет VLAN, а программно как-бы уже не умеет без вышеупомянутой утилиты.

Получилось решить обходным путём через подсистему Hyper-V (должно работать на Windows 10 Pro/Enterprise) путём выполнения следующих действий.

1. Установить компоненты Hyper-V, выполнив в PowerShell из-под администратора
Enable-WindowsOptionalFeature -Online -FeatureName:Microsoft-Hyper-V -All
После этого следует убедиться что выбран пункт "Hyper-V" и все его подпункты в разделе "Панель управления\Все элементы панели управления\Программы и компоненты - Включение и отключение компонентов Windows".

2. Перезагрузить ЭВМ.

3. Запустить "Пуск - Средства администрирования Windows - Диспетчер Hyper-V".
В диспетчере слева в списке выбрать свой компьютер по его имени, справа "Диспетчер виртуальных коммутаторов", посмотреть в нём список "Виртуальные коммутаторы". В списке должен быть "Коммутатор по умолчанию". Тут пришлось создать ещё один виртуальный коммутатор с именем VSwitch0 (имя не принципиально), так как на "Коммутатор по умолчанию" не взлетело. Получилось как на картинке.

4. Далее, следуя инструкциям этой замечательной ссылки, выполнить следующие команды в PowerShell из-под администратора для каждого требуемого VLAN
Add-VMNetworkAdapter -ManagementOS -Name <VLAN_NAME> -StaticMacAddress <MAC> -SwitchName <VIRTUAL_SWITCH_NAME>
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName <VLAN_NAME> -Access -VlanId <VLAN_ID>
где
<VLAN_NAME> - предпочитаемое имя VLAN в системе, например "eth0.1234" или "backup internet";
<VLAN_ID> - идентификатор VLAN;
<MAC> - желаемый MAC-адрес виртуального адаптера вида "DE-AD-11-11-DE-AD";
<VIRTUAL_SWITCH_NAME> - имя виртуального коммутатора из шага 3, в моём случае "VSwitch0".