Сервер в кармане, или просто о сложном!

главная - Статьи - Linux, FreeBSD



Настройка VLAN на CentOS

Дата обновления: 19.04.2021

Теги: Linux Безопасность

VLAN настроим на CentOS, на интерфейсе enp2s0. На моем хосте он предназначен для виртуальных машин. На нем создадим 15-й vlan (пропускает tagged-трафик "внутрь", исходящий трафик тегирует). Трафик виртуалок будет тегироваться 15-м vlan.

Сначала проверим, что на хосте загружен модуль ядра 8021q:

# lsmod | grep 8021q

Если ничего нет, то подгружаем модуль:

# modprobe 8021q

В CentOS настройки сетевых интерфейсов находятся в файлах /etc/sysconfig/network-scripts/ifcfg-*

Изначально настройки сетевого интерфейса enp2s0 могли выглядеть так (файл /etc/sysconfig/network-scripts/ifcfg-enp2s0):

TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.88.150
NETMASK=255.255.255.0
GATEWAY=192.168.88.1
DNS1=192.168.88.1
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp2s0
UUID=0c47fee5-889c-4974-8704-fe597e7937df
DEVICE=enp2s0

Если сетевой интерфейс предназначен для работы нескольких виртуальных машин, то удобно создавать сетевой бридж (bridge) по схеме:

enp2s0 -> VLAN 15 -> br15

Т.е. на базе сетевого интерфейса enp2s0 создается VLAN 15 (по сути, это отдельная сеть) и к этому VLAN-у доступ осуществляется через bridge br15 (название br15 взято просто для удобства). Виртуальные машины будут подключаться к бриджу br15, а не к конкретному физическому интерфейсу. Это может быть удобным в дальнейшем при изменении ролей интерфейсов, к примеру.

1. Оставим в описании файла интерфейса enp2s0 минимум сведений (по сути, только описание физического интерфейса):

nano /etc/sysconfig/network-scripts/ifcfg-enp2s0

TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
NAME=enp2s0
UUID=0c47fee5-889c-4974-8704-fe597e7937df
DEVICE=enp2s0

2. Создаем VLAN 15 (запись стандартная для Linux: имя_интерфейса.номер_vlan)

nano /etc/sysconfig/network-scripts/ifcfg-enp2s0.15

VLAN="yes"
VLAN_NAME_TYPE="VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD"
DEVICE="enp2s0.15"
PHYSDEV=enp2s0
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Vlan"
BRIDGE=br15

3. Создаем новый bridge15, рассчитанный для нашей задачи (цель - подключение виртуальной машины к VLAN 15). Задаем бриджу IP-адрес и прочие настройки:

nano /etc/sysconfig/network-scripts/ifcfg-br15

DEVICE=br15
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
DELAY=0
DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6INIT=no

IPADDR="192.168.15.2"
NETMASK="255.255.255.0"
GATEWAY="192.168.15.1"

где VLAN_NAME_TYPE задает формат названия сетевого интерфейса для VLAN: имя_интерфейса.номер_vlan

4. Хост надо перезагрузить, просто рестарта сетевых настроек (systemctl restart NetworkManager.service) недостаточно.

5. После перезагрузки хоста правим виртуальную машину - теперь она будет подключаться к сети VLAN 15:

# virsh shutdown vm1

(надо выключить виртуальную машину, иначе не применятся настройки сети)

# virsh edit vm1

Находим там секцию, похожую на:

    <interface type='bridge'>
      <mac address='52:54:00:b9:a6:4e'/>
      <source bridge='br1'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

Строку с mac-адресом удаляем, br1 меняем на br15. Сохраняем, запускаем виртуальную машину. По идее, если с транком все в порядке, виртуалка vm1 подключена через br15 к VLAN 15.

Аналогично можно понасоздавать vlan-ов сколько душе угодно. И на том же сетевом интерфейсе можно оставить и нетегированный трафик. Это как удобно.

Для любителей видео: https://youtu.be/-yLzQfA8Gww



Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?