VLAN у Linux
Матеріал із Xgu.ru
[ред.] Налаштування VLAN на Linux
Нижче наведено процедуру підняття тегованого інтерфейсу на Linux-системі. Може застосовуватися, наприклад, у випадках, коли потрібно маршрутизувати трафік між кількома VLAN'ами чи забезпечити присутність сервера у кількох VLAN'ах одночасно.
Потрібна підтримка 802.1Q ядром Linux.
Якщо модуль не знайдено, необхідно переконфігурувати ядро, увімкнувши підтримку модуля, а потім перезабрати модулі ядра.
Модуль включається до Network options / 802.1Q VLAN Support.
Говоримо, які VID пропускатимемо. Для цього використовуємо програму vconfig (пакетvlanу Debian) В результаті буде створено віртуальні інтерфейси з іменами, що містять VLAN ID.
Слід врахувати, що трафік нижче інтерфейсу (eth0, в даному випадку) буде надсилатися без тега (untagged в термінології cisco). Додавання додаткових ланів ніяк не позначиться на його роботі.
Імена інтерфейсів можуть відрізнятися (список можливих імен і від чого це залежить див. man:vconfig).
Якщо маршрут за замовчуванням дивиться в один із VLAN'ів, потрібно його задати:
Найкраще відразу заборонити пересилання трафіку між інтерфейсами (forwarding). Якщо пересилання дозволити, весь трафік між VLAN може пересилатися через цю систему. Якщо для цього воно і налаштовувалося, дозвольте пересилання, але пам'ятайте, що ви можете обмежити проходження трафіку і регулювати його іншим способом.
Для керування проходженням трафіку між VLAN'ами можна використовувати стандартні механізми ядра Linux, такі як маршрутизація, iptables та QoS.
Переглядати інформацію про VLAN-підінтерфейси в Linux можна через /proc:
[ред.] Налаштування VLAN за допомогою засобів IPRoute2
В останніхВерсіях пакету iproute з'явилися засоби, що дозволяють керувати влан-інтерфейсами.
На формат імені влан-інтерфейсу не накладається спеціальних обмежень. Дозволяється використання символів національного алфавіту. При включеній опції 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 set з обов'язковою вказівкою type vlan.
[ред.] Апаратна підтримка 802.1q
Багато мережевих контролерів виробництва intel і broadcom мають апаратну підтримку 802.1q, яка знижує завантаження ЦПУ. При знятті дампа трафіку з інтерфейсу при апаратній акселерації в дампі не буде згадок про теги 802.1q, інформація про них зберігається безпосередньо вструктури, асоційовані з пакетом.
Для керування апаратною обробкою вланів мережевим адаптером використовується утиліта ethtool:
[ред.] Налаштування VLAN під час завантаження в Debian GNU/Linux
Щоб інформація про створені VLAN'ах збереглася після перезавантаження, необхідно додати їх у файл /etc/network/interfaces. Наприклад:
[ред.] Налаштування VLAN під час завантаження в CentOS
Для того щоб інформація про створені VLAN збереглася після перезавантаження, необхідно створити файли з описом підінтерфейсів VLAN. Наприклад, для створення підінтерфейсу eth0.10 необхідно створити файл /etc/sysconfig/network-scripts/ifcfg-eth0.10, вміст якого буде схожим на традиційний вміст network-scripts/ifcfg-*:
Варіант 2 необхідно створити файл /etc/sysconfig/network-scripts/ifcfg-vlan1, вміст якого буде схожим на традиційний вміст файлів network-scripts/ifcfg-*:
[ред.] Налаштування VLAN під час завантаження в Gentoo
Нижче наведено приклад частини файлу /etc/conf.d/net, що відповідає за налаштування VLAN. У цьому прикладі налаштовується 2 vlan-інтерфейси на інтерфейсі eth0, створення та видалення даних інтерфейсів відбувається у скрипті /etc/init.d/net.eth0:
[ред.] QinQ-інкапсуляція в Linux
Q-in-Q інкапсуляція дозволяє створювати двічі тегований трафік. Для кожного рівня вкладеності створюється власний інтерфейс.