- VLAN в Linux
- [править] Настройка VLAN в Linux
- [править] Настройка VLAN с помощью средств IPRoute2
- [править] Аппаратная поддержка 802.1q
- [править] Настройка VLAN при загрузке в Debian GNU/Linux
- [править] Настройка VLAN при загрузке в CentOS
- [править] Настройка VLAN при загрузке в Gentoo
- [править] QinQ-инкапсуляция в Linux
- Настройка VLAN интерфейсов в Linux
- Требования к сетевому оборудованию
- Возможные проблемы
- Подготовка для настройки VLAN интерфейсов
- Настройка VLAN в CentOS/RHEL/Fedora Linux
- Конфигурация VLAN в Debian и Ubuntu
- Использование команды vconfig
- Создание устройства VLAN командой ip
- Заключение
- Похожие записи:
VLAN в Linux
На этой странице рассматривается процедура настройки VLAN в Linux.
[править] Настройка VLAN в Linux
Ниже описывает процедура поднятия тегированного интерфейса на Linux-системе. Может применяться, например, в тех случаях, когда нужно маршрутизировать трафик между несколькими VLAN’ами или обеспечить присутствие сервера в нескольких VLAN’ах одновременно.
Необходима поддержка 802.1Q ядром Linux.
Если модуль не найден, необходимо переконфигурировать ядро, включив поддержку модуля, а потом пересобрать модули ядра.
Модуль включается в Network options / 802.1Q VLAN Support.
# make menuconfig # make modules; make modules_install
Говорим, какие VID будем пропускать. Для этого используем программу vconfig (пакет vlan в Debian) В результате будут созданы виртуальные интерфейсы с именами, содержащими VLAN ID.
Следует учесть, что трафик нижележащего интерфейса (eth0, в данном случае) будет отсылаться без тега (untagged в терминологии cisco). Добавление дополнительных вланов никак не скажется на его работе.
Имена интерфейсов могут отличаться (список возможным имён и от чего это зависит см. в man:vconfig).
# /sbin/vconfig add eth0 2 # /sbin/vconfig add eth0 3 # /sbin/vconfig add eth0 4 # /sbin/vconfig add eth0 5
Далее, назначаем каждому интерфейсу свой IP-адрес.
# /sbin/ifconfig eth0.2 10.х.х.х netmask 255.255.255.0 up # /sbin/ifconfig eth0.3 192.168.0.х netmask 255.255.255.0 up # /sbin/ifconfig eth0.4 192.168.1.х netmask 255.255.255.0 up # /sbin/ifconfig eth0.5 х.х.х.х netmask 255.255.255.224 up
Если маршрут по умолчанию смотрит в один из VLAN’ов, нужно его задать:
# /sbin/route add default gw 192.168.1.1
Лучше сразу запретить пересылку трафика между интерфейсами (forwarding). Если пересылку разрешить, весь трафик между VLANами может пересылаться через эту систему. Если для этого она и настраивалась, пересылку разрешайте, но помните, что вы можете ограничить прохождение трафика и регулировать его другим способом.
Для управления прохождением трафика между VLAN’ами можно использовать стандартные механизмы ядра Linux, такие как маршрутизация, iptables и QoS.
Просматривать информацию о VLAN-подыинтерфейсах в Linux можно через /proc:
%# cat /proc/net/vlan/eth0.2 eth0.2 VID: 2 REORDER_HDR: 1 dev->priv_flags: 1 total frames received: 53973265 total bytes received: 1075877000 Broadcast/Multicast Rcvd: 397878 total frames transmitted: 41904604 total bytes transmitted: 2333267429 total headroom inc: 0 total encap on xmit: 41904604 Device: eth0 INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 EGRESSS priority Mappings:
[править] Настройка VLAN с помощью средств IPRoute2
В последних версиях пакета iproute появились средства, позволяющие управлять влан-интерфейсами.
ip link add link DEVNAME name VLANNAME type vlan id VLAN-ID reorder_hdr on|off loose_binding on|off gvrp on|off ingress-qos-map FROM:TO egress-qos-map FROM:TO
На формат имени влан-интерфейса не накладывается особых ограничений. Допускается использование символов национального алфавита. При включенной опции reorder-header кадры, проходящие через интерфейс-влан, не содержат тегов. По умолчанию включена. При отключенной опции, в кадрах сохраняется тег. Это нужно учесть, если вы, например, используете фильтры tc типа u32 с указанием смещений. Опция loose-binding отвечает за синхронизацию состояния влан-интерфейса с нижележащим интерфейсом. По-умолчанию, отключена, и при переключении нижележащего интерфейса в состояние down состояние влан-интерфейса так же меняется на down. При включении, состояние влан-интерфейса не зависит от состояния нижележащего интерфейса. Опция gvrp отвечает за то, распространять ли информацию о данном влане по протоколу gvrp. Для поддержки этой опции должна быть поддержка данной возможности со стороны ядра. Опции ingress-qos-map и egress-qos-map задают трансляцию между полем приоритета заголовка 802.1q и приоритетом структуры skb (данное поле используется в системе управления трафиком). Следует учитывать, что поле приоритета влан-заголовка имеет размер 3 бита и может принимать значения от 0 до 7. Размер же поля приоритета структуры skb составляет 32 бита.
Для просмотра информации о влан-интерфейсе в команде ip link show необходимо задать ключ -d[etails].
$ip -details link show dev mgmt 19: mgmt@eth0: mtu 1500 qdisc noqueue state UP link/ether 00:aa:92:08:18:a6 brd ff:ff:ff:ff:ff:ff vlan id 1 egress-qos-map
Для изменения параметров влан-интерфейса используется команда ip link set, с обязательным указанием type vlan.
ip link set dev VLANNAME type vlan OPTION VALUE
[править] Аппаратная поддержка 802.1q
Многие сетевые контроллеры производства intel и broadcom имеют аппаратную поддержку 802.1q, которая снижает загрузку ЦПУ. При снятии дампа трафика с нижележащего интерфейса при аппаратной акселерации в дампе не будет упоминаний о тэгах 802.1q, информация о них хранится непосредственно в структурах, ассоциированных с пакетом.
Для управления аппаратной обработкой вланов сетевым адаптером используется утилита ethtool:
ethtool -k|--show-offload DEVNAME ethtool -K|--offload DEVNAME [txvlan on|off] [rxvlan on|off]
[править] Настройка VLAN при загрузке в Debian GNU/Linux
Основная страница: VLAN в Debian Для работы описанного ниже способа необходимо чтобы в системе был установлен пакет vlan
Для того чтобы информация о созданных VLAN’ах сохранилась после перезагрузки, необходимо добавить её в файл /etc/network/interfaces. Например:
auto vlan1400 iface vlan1400 inet static address 192.168.1.1 netmask 255.255.255.0 vlan_raw_device eth0
[править] Настройка VLAN при загрузке в CentOS
Для того чтобы информация о созданных VLAN’ах сохранилась после перезагрузки, необходимо создать файлы с описанием подинтерфейсов VLAN. Например, для создания подинтерфейса eth0.10 необходимо создать файл /etc/sysconfig/network-scripts/ifcfg-eth0.10, содержимое которого будет похожим на традиционное содержимое файлов network-scripts/ifcfg-*:
VLAN=yes DEVICE=eth0.10 BOOTPROTO=static ONBOOT=yes TYPE=Ethernet IPADDR=10.10.10.2 NETMASK=255.255.255.252
Вариант 2, необходимо создать файл /etc/sysconfig/network-scripts/ifcfg-vlan1, содержимое которого будет похожим на традиционное содержимое файлов network-scripts/ifcfg-*:
VLAN=yes VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD DEVICE=vlan1 PHYSDEV=eth1 BOOTPROTO=static ONBOOT=yes TYPE=Ethernet IPADDR=192.168.100.5 NETMASK=255.255.255.0
[править] Настройка VLAN при загрузке в Gentoo
Ниже приведен пример части файла /etc/conf.d/net, отвечающей за настройку VLAN. В данном примере настраивается 2 vlan-интерфейса на интерфейсе eth0, создание и удаление данных интерфейсах происходит в скрипте /etc/init.d/net.eth0:
config_eth0="null" vlans_eth0="1 2" vlan1_name="vlan1" config_vlan1="10.0.0.1/24" vlan2_name="vlan2" config_vlan2="192.168.1.1/24"
[править] QinQ-инкапсуляция в Linux
Q-in-Q инкапсуляция позволяет создавать дважды тегированный трафик. Для каждого уровня вложенности создаётся свой собственный интерфейс.
Подробнее о процедуре настройки:
- https://www.opennet.ru/tips/info/1381.shtml (рус.)
VLAN — Virtual Local Area Network | |
---|---|
Стандарты, протоколы и основные понятия | 802.1Q • VLAN ID • ISL • VTP • GVRP • Native VLAN |
В операционных системах | Linux (Debian, Ubuntu, CentOS) • FreeBSD • Windows |
В сетевом оборудовании | Cisco • HP ProCurve • D-LINK • Allied Telesis • Asotel • Juniper • ExtremeXOS |
Разное | man vconfig • Безопасность VLAN • 802.1X и RADIUS • Cisco Private VLAN |
Настройка VLAN интерфейсов в Linux
VLAN – это аббревиатура, означающая Virtual Local Area Network (виртаульная локальная сеть). На одном физическом порту может совместно существовать несколько VLAN-сетей, которые настраиваются программными средствами Linux, а не конфигурацией физических интерфейсов (но настройка самих интерфейсов тоже требуется). С помощью VLAN можно разделить сетевые ресурсы для использования различных сервисов.
Преимущества VLAN следующие:
- Производительность
- Простота управления
- Безопасность
- Магистральные cоединения (trunk)
- Возможность разделения внутри локальной сети из соображений безопасности
- Отсутствие необходимости настройки аппаратных средств при физическом переносе сервера в другое место.
Требования к сетевому оборудованию
Чтобы использовать VLAN, вам потребуется:
- Коммутатор с поддержкой стандарта IEEE 802.1q в сети Ethernet.
- Сетевая карта, которая работает с Linux и поддерживает стандарт 802.1q .
Возможные проблемы
Наиболее распространенные при настройке VLAN в Linux проблемы следующие:
- Не все сетевые драйверы поддерживают VLAN. Может потребоваться обновление драйвера.
- Возможны проблемы с MTU. Работа VLAN основана на присвоении каждому кадру тега длиной 4 байта, то есть заголовок фактически расширяется с 14 до 18 байт. Тег VLAN содержит идентификатор (VLAN ID) и приоритет.
- Лучше не использовать VLAN ID, равный 1, так как он может быть зарезервирован для административных целей.
Подготовка для настройки VLAN интерфейсов
Сначала убедитесь, что драйвер (модуль) ядра Linux под названием 8021 загружен:
Если он не загружен, загрузите его командой modprobe:
Настройка VLAN в CentOS/RHEL/Fedora Linux
Допустим, нам нужно создать VLAN интерфейс с тегом 100 который будет работать на физическом интерфейсе eth0. Для этого создадим файл /etc/sysconfig/network-scripts/ifcfg-eth0.100 . Узнать название сетевых интерфейсов в системе можно с помощью команды ifconfig.
Создаем новый файл например с помощью редактора vim
# vim /etc/sysconfig/network-scripts/ifcfg-eth0.100
Добавьте в него следующий код
# Конфигурация VLAN с ID – 100 для интерфейса eth0 # DEVICE=eth0.100 BOOTPROTO=none ONBOOT=yes IPADDR=192.168.1.5 NETMASK=255.255.255.0 USERCTL=no NETWORK=192.168.1.0 VLAN=yes
Жирным шрифтом выделены строки которые относятся к настройкам VLAN. Остальные настройки аналогичны настройкам на физическом интерфейсе.
Если вам нужна еще одна виртуальная сеть, то создайте новый файл сетевых настроек с нужным тегом VLAN. Что бы изменения вступили в силу, перезапустите сетевую службу
# systemctl restart network
Теперь можно проверить созданные интерфейсы командой ifconfig. Мы должны увидеть наш VLAN интерфейс
Конфигурация VLAN в Debian и Ubuntu
Откройте файл /etc/network/interfaces любым текстовым редактором, например nano
$ sudo nano /etc/network/interfaces
Добавьте в файл следующие строки:
##vlan с ID-100 для интерфейса eth0 with ID - 100 в Debian/Ubuntu Linux## auto eth0.100 iface eth0.100 inet static address 192.168.1.200 netmask 255.255.255.0 vlan-raw-device eth0
auto eth0.100 — «поднимать» интерфейс при запуске сетевой службы
iface eth0.100 — название интерфейса
vlan-raw-device— указывает на каком физическом интерфейсе создавать VLAN.
Сохраните и закройте файл. После чего перезапустите сеть.
systemctl restart network
Важно! Если у вас используется Ubuntu версии 17.10 и выше, то необходимо установить пакет ifupdown или настраивать VLAN интерфейсы через netplan
Использование команды vconfig
Также существует команда vconfig. Она позволяет вам создавать и удалять устройства VLAN в ядре с поддержкой VLAN. Устройства VLAN – это виртуальные Ethernet-устройства, которые представляют виртуальные локальные сети в физической. Это еще один метод настройки VLAN. Чтобы добавить VLAN с ID 5 для интерфейса eth0 выполните следующую команду:
Команда vconfig add создает на интерфейсе eth0 VLAN-устройство, в результате чего появляется интерфейс eth0.5. Теперь с помощью ifconfig настроим ip адрес
# ifconfig eth0.5 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 up
Для получения подробной информации об интерфейсе выполните:
Учтите, что после перезагрузки системы этот интерфейс будет удален.
Для удаления интерфейса вручную выполните следующие действия:
# ifconfig eth0.5 down # vconfig rem eth0.5
Создание устройства VLAN командой ip
Для интерфейса eth0 и VLAN ID 10 выполните следующие команды:
# ip link add link eth0 name eth0.10 type vlan id 10 # ip -d link show eth0.10
Устройство нужно активировать и присвоить ему IP-адрес:
# ip addr add 192.168.1.200/24 brd 192.168.1.255 dev eth0.10 # ip link set dev eth0.10 up
Весь трафик пойдет через интерфейс eth0 с тегом VLAN 10. Его смогут принять только устройства, которым сообщено о VLAN, остальные будут отклонять трафик.
Следующие команды позволяют удалить VLAN ID:
# ip link set dev eth0.10 down # ip link delete eth0.10
Этот интерфейс также будет удален после перезагрузки системы
Заключение
Настроить VLAN относительно несложно, но в конфигурации и используемых командах есть огромное количество различных тонкостей, которые при необходимости можно выяснить, обратившись к man-страницам соответствующих команд.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.