Пошаговое руководство для администратора
В локальных сетях часто требуется разделить трафик разных отделов, изолировать гостевой доступ или выделить служебную подсеть для IP-телефонии и видеонаблюдения, не прокладывая дополнительные кабели. Технология VLAN (IEEE 802.1Q) решает эту задачу, позволяя одному физическому интерфейсу передавать кадры нескольких виртуальных сетей. Однако при практической реализации администраторы сталкиваются с тем, что настройки на коммутаторе, Linux и Windows различаются, а неверное конфигурирование может оставить сервер или рабочую станцию полностью изолированной. Настройка VLAN требует понимания, как создавать тегированные интерфейсы на обеих платформах, как назначать им IP-адреса и как проверять прохождение трафика.
Решение
Мы рассмотрим создание VLAN-интерфейсов на Linux с помощью утилиты ip link(команда ip link add link … type vlan) и на Windows через PowerShell с использованием модуля NetAdapter или Hyper-V Virtual Switch. На коммутаторе предполагаем, что порт переведён в режим trunk с разрешёнными нужными VLAN. Для Linux-сервера подойдёт любой дистрибутив с ядром 2.6 и выше (поддержка 802.1Q встроена). Для Windows потребуется сетевая карта с поддержкой VLAN (практически все современные Intel, Realtek, Broadcom) и установленный модуль Hyper-V или использование PowerShell командлетов. Корректная настройка VLAN на обеих платформах позволяет одному физическому порту обслуживать несколько изолированных подсетей, что особенно актуально для серверов виртуализации и шлюзов. Официальные источники: документация ядра Linux VLAN 802.1Q implementation, документация Microsoft Configure VLAN in Windows. Поскольку Windows поддерживает VLAN через несколько механизмов, разберём оба подхода.
Пошаговая инструкция
Шаг 1. Настройка VLAN на Linux
На целевом сервере с Linux выполните следующие действия.
- Убедитесь, что модуль 8021q загружен:
bash
sudo modprobe 8021q
echo "8021q" | sudo tee -a /etc/modules-load.d/vlan.conf
- Создайте VLAN-интерфейс с идентификатором
10на физическом интерфейсеeth0(имя адаптера уточните черезip link):
bash
sudo ip link add link eth0 name eth0.10 type vlan id 10
- Активируйте новый интерфейс и назначьте IP-адрес:
bash
sudo ip link set eth0.10 up
sudo ip addr add 192.168.10.10/24 dev eth0.10
- Чтобы интерфейс создавался автоматически при загрузке, опишите его в сетевых настройках. Для дистрибутивов на базе Debian/Ubuntu с systemd-networkd создайте файл
/etc/systemd/network/eth0.10.network:
[Match]
Name=eth0.10
[Network]
Address=192.168.10.10/24
И соответствующий файл для создания устройства /etc/systemd/network/eth0.10.netdev:
[NetDev]
Name=eth0.10
Kind=vlan
[VLAN]
Id=10
- При использовании NetworkManager создайте соединение:
bash
nmcli con add type vlan con-name eth0.10 dev eth0 id 10 ip4 192.168.10.10/24
- Проверьте создание VLAN и маршрутизацию:
bash
ip -d link show eth0.10
ip route show dev eth0.10
ping 192.168.10.1 # шлюз в данной VLAN
Шаг 2. Настройка VLAN на Windows через PowerShell (NetAdapter)
В Windows Server 2016+ и Windows 10/11 с установленными драйверами сетевой карты, поддерживающими VLAN, можно использовать PowerShell.
- Узнайте имя сетевого адаптера:
powershell
Get-NetAdapter
Пример вывода: Ethernet0.
- Создайте виртуальный VLAN-адаптер (потребуются права администратора). Для универсального варианта с модулем
NetAdapter(поддерживается многими производителями):
powershell
Add-IntelNetVLAN -ParentName "Ethernet0" -VLANID 10
Альтернативно можно использовать встроенный командлет Hyper-V:
powershell
New-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "Ethernet0" -AccessVlan 10
- Назначьте IP-адрес новому виртуальному интерфейсу:
powershell
New-NetIPAddress -InterfaceAlias "Ethernet0 VLAN 10" -IPAddress 192.168.10.10 -PrefixLength 24
- Проверьте настройки:
powershell
Get-NetIPConfiguration -Detailed
- Чтобы сделать настройку постоянной, можно записать команды в скрипт, запускаемый при старте, либо использовать групповые политики для распространения конфигурации.
Если родной драйвер не поддерживает PowerShell-команды, воспользуйтесь следующим способом.
Шаг 3. Настройка VLAN через Hyper-V Virtual Switch (альтернатива для Windows)
Если роль Hyper-V установлена, можно создать виртуальный коммутатор с VLAN-тегированием.
- Создайте внешний виртуальный коммутатор на основе физического адаптера:
powershell
New-VMSwitch -Name "TrunkSwitch" -NetAdapterName "Ethernet0" -AllowManagementOS $true
- Задайте VLAN ID для адаптера управления (управляющая ОС будет видеть трафик этого VLAN):
powershell
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "Ethernet0" -Access -VlanId 10
- Назначьте IP-адрес на интерфейс виртуального коммутатора (он появится в списке сетевых подключений как
vEthernet (TrunkSwitch)):
powershell
New-NetIPAddress -InterfaceAlias "vEthernet (TrunkSwitch)" -IPAddress 192.168.10.10 -PrefixLength 24
- Проверьте связь:
powershell
Test-Connection 192.168.10.1
Этот метод удобен на серверах Hyper-V, где управляющая ОС должна быть доступна только в определённом VLAN, а виртуальные машины могут использовать другие VLAN через тот же физический порт.
Документация по Hyper-V VLAN: Configure VLAN in Hyper-V.
Устранение распространённых проблем
| Симптом | Вероятная причина | Решение |
|---|---|---|
| После создания VLAN-интерфейса нет связи со шлюзом | Коммутаторный порт не настроен как trunk или не разрешён нужный VLAN | Проверьте конфигурацию коммутатора (show interfaces trunk). Убедитесь, что VLAN разрешён на порту (switchport trunk allowed vlan add 10). |
В Linux команда ip link add ... type vlan выдаёт ошибку «Operation not supported» | Модуль 8021q не загружен | Загрузите модуль: sudo modprobe 8021q. |
| В Windows после создания VLAN адаптер не получает IP | Служба DHCP не работает в данном VLAN или адрес задан неверно | Проверьте настройки DHCP-сервера в VLAN 10. Назначьте статический IP вручную. |
| Драйвер сетевой карты в Windows не поддерживает VLAN (отсутствует вкладка VLAN ID в свойствах) | Старый или универсальный драйвер без расширенной поддержки | Обновите драйвер с сайта производителя (Intel, Realtek). Для Intel ищите Intel PROSet. |
| В Windows после перезагрузки пропадает созданный VLAN-интерфейс | Настройка не сохранена в реестре или скрипте | Создайте запланированную задачу, запускающую PowerShell-скрипт при загрузке, либо используйте постоянный виртуальный коммутатор Hyper-V. |
В Linux интерфейс eth0.10 не поднимается после перезагрузки | Не создан конфигурационный файл для systemd-networkd или NetworkManager | Создайте файлы .netdev и .network для systemd-networkd или настройте соединение через nmcli (шаг 1). |
Итог
Настройка VLAN базовая операция, которую должен освоить каждый системный администратор, работающий с коммутаторами. Linux предлагает простой и универсальный способ через ip link, а Windows требует более тщательного подхода, но с помощью PowerShell или Hyper-V также решается стандартными средствами. Главное не забывать о синхронизации с конфигурацией коммутатора (trunk, native VLAN) и проверять, что сетевая карта и её драйвер действительно поддерживают тегирование 802.1Q. При корректной настройке сервер может одновременно обслуживать несколько изолированных сетей через один физический порт, что упрощает кабельное хозяйство и повышает безопасность.







