Настройка 802.1Q VLAN в CentOS 7

Если коммутатор один, то все взаимодействие организуется достаточно просто – порты (например) fa0/3 и fa0/5 на уровне коммутатора объединяются в одну логическую группу, а порты fa0/2 и fa0/6 в другую. И все работает. Но в случае если коммутаторы разные и им нужно передавать по одному физическому каналу сразу несколько логических сетей, то весь трафик проходящий между коммутаторами нужно маркировать (или теггировать).

Теггирированный (маркированный, tagged) и не теггирированный (не маркированный, untagged) трафик, порт коммутатора через который проходят теггрированные фреймы называтеся транк (VLAN транк, 802.1Q транк).

Самый распространенный стандарт маркировки трафика IEEE 802.1Q, в кадр Ethernet или IEEE 802.3 инкапсулируется дополнительное двух байтовое поле содержащие TPID (идентификатор протокола 802.1Q) равный 0×8100, приоритет и номер VLAN к которому относится данный кадр.

Тег 802.1Q расположен сразу после MAC-адреса отравителя и TPID по сути заменяет поле типа или размера, поэтому L2-коммутаторы не поддерживающие 802.1Q могут доставить маркированные кадры до места назначения.

Если в VLAN транк попадает не маркированный трафик то он автоматически относится к специальному VLAN, который называется native VLAN и обычно это VLAN 1.

 

Для поднятия теггированного интерфейса на CentOS нужно в первую очередь проверить поддержку ядром 8021q:

# modprobe 8021q

Если сообщений об ошибке нет, значит все в порядке, модуль загрузился. Если же модуль не найден, необходимо пересобрать модули ядра, включив поддержку необходимого модуля. Проверим на всякий случай, загрузился ли модуль:

# lsmod | grep 8021q
8021q 29022 0
garp 14384 1 8021q
mrp 18542 1 8021q

Все в порядке, модуль 8021q загружен, добавим его в автозагрузку:

# echo 8021q >> /etc/modules-load.d/8021q.conf

Теперь создаем файл конфигурации для vlan в /etc/sysconfig/network-scripts:

# mcedit ifcfg-eth0.2000

VLAN=yes
DEVICE=eth0.2000
BOOTPROTO=static
ONBOOT=yes
TYPE=Vlan
IPADDR=192.168.100.2
NETMASK=255.255.255.0

Обращаю внимание на выделенное жирным. Во всех инструкциях в интернете, что мне попались, этот параметр был указан как TYPE=Ethernet, но с такой настройкой интерфейс с vlan не поднимался, появлялась ошибка:

Error: no device found for connection 'System eth0.2000'.

Только после того, как я исправил, все заработало как надо. Так что сохраняем и активируем интерфейс:

# ifup eth0.2000

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

Проверяем наш vlan:

# ip l ls

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
 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 qlen 1000
 link/ether 00:15:5d:01:0f:06 brd ff:ff:ff:ff:ff:ff
3: eth0.2000@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
 link/ether 00:15:5d:01:0f:06 brd ff:ff:ff:ff:ff:ff

Все в порядке, тегированный интерфейс поднят. По аналогии можно создать еще несколько подобных интерфейсов, не забывая изменять им имена и адреса.

UPD. На Centos 7 Catatlist заработало с такими настройками:

# cat ifcfg-enp5s9.10
VLAN=yes
DEVICE=enp5s9.10
PHYSDEV=enp5s9
ONBOOT=yes
BOOTPROTO="static"
IPADDR=10.10.15.1
PREFIX=24
# cat ifcfg-enp5s9
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp5s9
UUID=38afe9ad-7f17-4bdc-a1d3-a909debda059
DEVICE=enp5s9
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.10.5.1
PREFIX=24
GATEWAY=10.10.5.1
DNS1=192.168.113.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp64s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:14:c2:03:4b:d2 brd ff:ff:ff:ff:ff:ff
inet 192.168.113.53/24 brd 192.168.113.255 scope global noprefixroute enp64s0
valid_lft forever preferred_lft forever
3: enp5s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:30:84:b3:9a:b0 brd ff:ff:ff:ff:ff:ff
inet 10.10.5.1/24 brd 10.10.5.255 scope global noprefixroute enp5s9
valid_lft forever preferred_lft forever
4: enp5s9.10@enp5s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:30:84:b3:9a:b0 brd ff:ff:ff:ff:ff:ff
inet 10.10.15.1/24 brd 10.10.15.255 scope global noprefixroute enp5s9.10
valid_lft forever preferred_lft forever
# nmcli con sh
NAME           UUID                                  TYPE      DEVICE 
enp5s9         38afe9ad-7f17-4bdc-a1d3-a909debda059  ethernet  enp5s9 
enp64s0        f1963841-564a-4e83-8417-89279a1ce0cd  ethernet  enp64s0 
Vlan enp5s9.10 a09a881e-c35d-491b-1244-59856eeac801  vlan      enp5s9.10
# nmcli dev status
DEVICE     TYPE       STATE          CONNECTION 
enp64s0    ethernet   подключено     enp64s0 
enp5s9     ethernet   подключено     enp5s9 
enp5s9.10  vlan       подключено     Vlan enp5s9.10 
lo         loopback   без управления --
# ip r
default via 192.168.113.1 dev enp64s0 proto static metric 100 
default via 10.10.5.1 dev enp5s9 proto static metric 101 
10.10.5.0/24 dev enp5s9 proto kernel scope link src 10.10.5.1 metric 101 
10.10.15.0/24 dev enp5s9.10 proto kernel scope link src 10.10.15.1 metric 400 
192.168.113.0/24 dev enp64s0 proto kernel scope link src 192.168.113.53 metric 100
Switch#sh vlan

VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4, Fa0/5, Fa0/6, Fa0/7, Fa0/8, Fa0/9, Fa0/10, Fa0/11, Fa0/12, Fa0/13, Fa0/14, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/20, Fa0/21, Fa0/22, Fa0/23
5 net5 active 
10 VLAN0010 active Fa0/15
50 net50 active 
150 net150 active 
1002 fddi-default active 
1003 token-ring-default active 
1004 fddinet-default active 
1005 trnet-default active

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

# cat /proc/net/vlan/config
VLAN Dev name    | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
enp5s9.10      | 10  | enp5s9

При отладке очень полезной может оказаться статистическая информация о интерфейсах, которая хранится в /proc/net/vlan/<имя интрефейса>

# cat /proc/net/vlan/enp5s9.10
enp5s9.10  VID: 10       REORDER_HDR: 1  dev->priv_flags: 1
         total frames received         1384
          total bytes received       205461
      Broadcast/Multicast Rcvd            0

      total frames transmitted         2817
       total bytes transmitted      3418310
Device: enp5s9
INGRESS priority mappings: 0:0  1:0  2:0  3:0  4:0  5:0  6:0 7:0
 EGRESS priority mappings:

Если количество принятых кадров (frames received) равно 0, то скорее всего интерфейс enp5s9 не получает маркированный трафик для VLAN 10.

 

http://www.alsigned.ru/?p=3138

image_pdfimage_print

Leave a Reply

Your email address will not be published. Required fields are marked *