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

Настройка 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
garp 14384 1 8021q
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
TYPE=Ethernet
VLAN=yes
 DEVICE=eth0.7
BOOTPROTO=static
IPADDR=10.16.20.10
NETMASK=255.255.255.0

Данный файл конфигурации связывает виртуальный интерфейс 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
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», которая направляет конфигурационный файл на физический сетевой интерфейс.

/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:  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:  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:  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:  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

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

# nmcli con show

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, интерфейс не пропал.

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 на сетевом оборудовании.

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