Настройка VLAN интерфейса в Linux CentOS/Fedora/RHEL

В этой статье мы покажем, как настроить тегированный интерфейс VLAN (виртуальной локальной сети) встроенными программными средствами Linux в операционных системах CentOS/Fedora/RedHat. Рассмотим настройку через subinterface , отдельный файл vlanX , а также с помощью инстументов NetworkManager и vconfig .

В операционных системах CentOS/Fedora/RedHat, есть два варианта настройки VLAN:

  • Использование subinterface (например eth12.7);
  • Использование отдельного файла vlanXX (vlan7).

VLAN (Virtual Local Area Network) позволяет разделить сеть на канальном уровне на несколько изолированных широковещательных доменов. С помощью VLAN вы можете настроить несколько сетей на одном физическом порту сервера., Маршрутизаторы, коммутаторы и сервера при использовании 802.1Q VLAN могут присваивать сетевым пакетам специальный тег (тегированный трафик) с номером VLAN (VLAN ID: от 0 до 4095).

Преимущества VLAN:

  • Сегментирование сети (разделение устройств на изолированные группы);
  • Уменьшение количества сетевого оборудования;
  • Снижение нагрузки на сеть для уменьшения широковещательного трафика;
  • Улучшение безопасности и управляемости сети.

Создаем VLAN через subinterface

Для настройки тегированного интерфейса, на сервере должен быть загружен модуль ядра Linux — 8021q . Для загрузки модуля, выполните:

# modprobe 8021q

Если модуль уже загрузен, появится ошибка: modprobe: ERROR: could not insert '8021q': Module already in kernel .

Проверим, загрузился ли модуль:

# lsmod | grep 8021q

8021q 33080 0_x000D_garp 14384 1 8021q_x000D_mrp 18542 1 8021q

Все ок, модуль 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_x000D_TYPE=Ethernet_x000D_VLAN=yes_x000D_ DEVICE=eth0.7_x000D_BOOTPROTO=static_x000D_IPADDR=10.16.20.10_x000D_NETMASK=255.255.255.0_x000D_

Данный файл конфигурации связывает виртуальный интерфейс eth0.7 с физическим интерфейсом eth0. После создания файла конфигурации, нужно перезапустить сервис network:

# systemctl restart network

создание файла с сабинтерфейсом vlan в linux centos

Проверим сетевые настройки:

# ip a

проверка сетевых настроек и vlan

Как видим, сабинтерфейс с нужным нам VLAN7 добавлен.

Текущие привязки интерфейсов и VLAN можно вывести:

# cat /proc/net/vlan/config

Статистику интерфейса можно получить так (с помощью счетчиков пакетов можно убедиться, что VLAN интерфейс получает маркированный трафик) :

# cat /proc/net/vlan/eth0.7

Чтобы выполнить ping с определенного интерфейса VLAN, используйте формат команды:

# ping -I eth0.7 192.168.1.22

Настройка VLAN через отдельный файл vlanXX

Теперь попробуем создать VLAN с ID 8 через отдельный файл конфигурации:

# nano /etc/sysconfig/network-scripts/ifcfg-vlan8

Добавим в него следующие строки:

ONBOOT=yes_x000D_TYPE=Ethernet_x000D_VLAN=yes_x000D_VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD_x000D_DEVICE=vlan8_x000D_PHYSDEV=eth0.8_x000D_VLAN_ID=8_x000D_BOOTPROTO=static_x000D_IPADDR=10.16.20.10_x000D_NETMASK=255.255.255.0

Обратите внимание, что файл конфигурации немного отличается от предыдущего. В данной настройке, нужно указывать строку «PHYSDEV» , которая направляет конфигурационный файл на физический сетевой интерфейс.

/etc/sysconfig/network-scripts/ifcfg-vlan8 - настройка файла с vlan в centos

После всех настроек, так же требуется перезагрузка сервиса network:

# systemctl restart network

Если при перезапуске службы сетти вы получаете ошибку No suitable device found for this connection , проверьте что в конфигурационном файле ifcfg-vlan8 указано значение для опции VLAN_ID.

Сделаем проверку:

ip l ls

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000_x000D_link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00_x000D_2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000_x000D_link/ether 52:54:00:1d:4b:67 brd ff:ff:ff:ff:ff:ff_x000D_5: eth0.7@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000_x000D_link/ether 52:54:00:1d:4b:67 brd ff:ff:ff:ff:ff:ff_x000D_6: vlan8@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000_x000D_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

Чтобы проверить сетевые интерфейсы на сервере, используйте команду:

# nmcli con show

NAME UUID TYPE DEVICE_x000D_ens3 8bd5cfbc-5ffc-4554-8ae1-9e02e4b57ceb ethernet ens3_x000D_virbr0 e64e63a5-76ae-4661-91ae-009f566c5e66 bridge virbr0_x000D_ens3.7 e5e91557-49a8-4389-bdfc-c9bfc099714b vlan VLAN7_x000D_

После настройки, выполните перезагрузку NetworkManager:

# systemctl restart NetworkManager

После перезапуска сервиса NM, интерфейс не пропал.

nmcli - NetworkManager - создание vlan Вывести текущие настройки созданного VLAN интерфейса можно так:

# nmcli connection show ens3.7

Настройка временного VLAN с помощью утилиты vconfig

Для тестовых настроек лучше использовать утилиту vconfig . Ее особенность — после перезагрузки сервера все настройки сети возвращаются к исходному состоянию. Vconfig очень полезная утилита на этапах тестирования или обучения, так как если вы потеряете доступ к серверу из-за неправильных сетевых настроек, можно вернуться к начальной конфигурации простой перезагрузкой. Данная утилита доступна в репозитории EPEL , установим ее:

# yum install epel-release-y && yum install vconfig

Создадим интерфейс с VLAN9 :

# vconfig add eth0 9

Added VLAN with VID == 9 to IF -:eth0:-

После этого назначим созданному сетевому интерфейсу IP-адрес :

# ifconfig eth0.9 10.18.0.15 netmask 255.255.255.0 up

Временный интерфейс c VLAN был создан.

ip l ls - виртуальный сетевой интерфейс vlan

P.S. На момент написания статьи, утилита vconfig была недоступна для дистрибутивов CentOS 8 и RedHat 8.

Не забывайте, что кроме настройки VLAN на сервере для обеспечения сетевой связанности, вам нужно настроить соответствующие VLAN на сетевом оборудовании.

EnglishRussianUkrainian