главная - Статьи - 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
Авторизуйтесь для добавления комментариев!