В этой статье мы покажем, как настроить тегированный интерфейс VLAN (виртуальной локальной сети) встроенными программными средствами Linux в операционных системах CentOS/Fedora/RedHat. Рассмотим настройку через subinterface, отдельный файл vlanX, а также с помощью инстументов NetworkManager и vconfig.
В операционных системах CentOS/Fedora/RedHat, есть два варианта настройки VLAN:
- Использование subinterface (например eth12.7);
- Использование отдельного файла vlanXX(vlan7).
Преимущества 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
Проверим сетевые настройки:
# ip a
Как видим, сабинтерфейс с нужным нам VLAN7 добавлен.
# 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», которая направляет конфигурационный файл на физический сетевой интерфейс.
После всех настроек, так же требуется перезагрузка сервиса network:
# systemctl restart network
Сделаем проверку:
ip l ls
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
Чтобы проверить сетевые интерфейсы на сервере, используйте команду:
# 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, интерфейс не пропал.
Вывести текущие настройки созданного 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 был создан.
Не забывайте, что кроме настройки VLAN на сервере для обеспечения сетевой связанности, вам нужно настроить соответствующие VLAN на сетевом оборудовании.