Настройка VLAN интерфейса в Linux CentOS/Fedora/RHEL
Создаем VLAN через subinterface
Для настройки тегированного интерфейса, на сервере должен быть загружен модуль ядра Linux — 8021q. Для загрузки модуля, выполните:
Если модуль уже загрузен, появится ошибка: modprobe: ERROR: could not insert '8021q': Module already in kernel
.
Проверим, загрузился ли модуль:
8021q 33080 0 garp 14384 1 8021q mrp 18542 1 8021q
Так же нужно добавить данный модуль в автозагрузку при рестарте системы:
# echo 8021q >> /etc/modules-load.d/8021q.conf
Создадим VLAN c ID 7 для сетевого интерфейса eth0. Добавляем конфигурационный файл ifcfg-eth0.7 (7 после точки это назначаемый номер VLAN). В этом файле содержится описание подинтерфейса VLAN.
# nano /etc/sysconfig/network-scripts/ifcfg-eth0.7
И вписываем следующее содержимое:
ONBOOT=yes TYPE=Ethernet VLAN=yes DEVICE=eth0.7 BOOTPROTO=static IPADDR=10.16.20.10 NETMASK=255.255.255.0
Данный файл конфигурации связывает виртуальный интерфейс eth0.7 с физическим интерфейсом eth0. После создания файла конфигурации, нужно перезапустить сервис network:
Как видим, сабинтерфейс с нужным нам VLAN7 добавлен.
Текущие привязки интерфейсов и VLAN можно вывести:
Статистику интерфейса можно получить так (с помощью счетчиков пакетов можно убедиться, что VLAN интерфейс получает маркированный трафик) :
Чтобы выполнить ping с определенного интерфейса VLAN, используйте формат команды:
Настройка VLAN через отдельный файл vlanXX
Теперь попробуем создать VLAN с ID 8 через отдельный файл конфигурации:
# nano /etc/sysconfig/network-scripts/ifcfg-vlan8
Добавим в него следующие строки:
ONBOOT=yes TYPE=Ethernet VLAN=yes VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD DEVICE=vlan8 PHYSDEV=eth0.8 VLAN_ID=8 BOOTPROTO=static IPADDR=10.16.20.10 NETMASK=255.255.255.0
Обратите внимание, что файл конфигурации немного отличается от предыдущего. В данной настройке, нужно указывать строку «PHYSDEV», которая направляет конфигурационный файл на физический сетевой интерфейс.
После всех настроек, так же требуется перезагрузка сервиса network:
Если при перезапуске службы сетти вы получаете ошибку No suitable device found for this connection, проверьте что в конфигурационном файле ifcfg-vlan8 указано значение для опции VLAN_ID.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:1d:4b:67 brd ff:ff:ff:ff:ff:ff 5: eth0.7@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:1d:4b:67 brd ff:ff:ff:ff:ff:ff 6: vlan8@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:1d:4b:67 brd ff:ff:ff:ff:ff:ff
Нужный сетевой интерфейс с VLAN8 так же доступен.
Используем NetworkManager для настройки VLAN интерфейса
Начиная с 8 версии CentOS/RedHat по умолчанию сетью на сервере управляет NetworkManager. Ранее это инструмент так же был доступен, но большинство аминистраторов использовали привычный network.
Рассмотрим вариант настройки VLAN через NM. Создадим виртуальный интерфейс ens3.7 для VLAN 7 на физическом интерфейсе ens3 и зададим IP:
# nmcli con add type vlan con-name ens3.7 ifname VLAN7 id 7 dev ens3 ip4 15.12.10.11/24 gw4 15.12.10.254
Чтобы проверить сетевые интерфейсы на сервере, используйте команду:
NAME UUID TYPE DEVICE ens3 8bd5cfbc-5ffc-4554-8ae1-9e02e4b57ceb ethernet ens3 virbr0 e64e63a5-76ae-4661-91ae-009f566c5e66 bridge virbr0 ens3.7 e5e91557-49a8-4389-bdfc-c9bfc099714b vlan VLAN7
После настройки, выполните перезагрузку NetworkManager:
# systemctl restart NetworkManager
После перезапуска сервиса NM, интерфейс не пропал.
Вывести текущие настройки созданного VLAN интерфейса можно так:
# nmcli connection show ens3.7
Настройка временного VLAN с помощью утилиты vconfig
Для тестовых настроек лучше использовать утилиту vconfig. Ее особенность — после перезагрузки сервера все настройки сети возвращаются к исходному состоянию. Vconfig очень полезная утилита на этапах тестирования или обучения, так как если вы потеряете доступ к серверу из-за неправильных сетевых настроек, можно вернуться к начальной конфигурации простой перезагрузкой. Данная утилита доступна в репозитории EPEL, установим ее:
# yum install epel-release-y && yum install vconfig
Added VLAN with VID == 9 to IF -:eth0:-
После этого назначим созданному сетевому интерфейсу IP-адрес:
# ifconfig eth0.9 10.18.0.15 netmask 255.255.255.0 up
Временный интерфейс c VLAN был создан.
P.S. На момент написания статьи, утилита vconfig была недоступна для дистрибутивов CentOS 8 и RedHat 8.
Не забывайте, что кроме настройки VLAN на сервере для обеспечения сетевой связанности, вам нужно настроить соответствующие VLAN на сетевом оборудовании.