Вопрос или проблема
Я читаю “man bridge”, и там говорится что-то вроде:
bridge vlan { add | del } dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ]
Для чего опции “self” и “master”?
man говорит:
self vlan настраивается на указанном физическом устройстве. Обязательно, если устройство является мостом.
master vlan настраивается на программном мосту (по умолчанию).
Может кто-то подробнее объяснить?
Насколько я понимаю, “self” предназначен для виртуальных интерфейсов, таких как “br0.10” и т.д., чтобы дать мосту (br0) знать, что полученные кадры могут быть для него. Верно?
Да, self предназначен для моста. VLAN назначаются мостовым интерфейсам.
master предназначен для интерфейсов, которые служат зависимыми для мостовых интерфейсов. Вам не нужно указывать ключевое слово master, так как это значение по умолчанию.
Создание моста
/ # ip link add br0 type bridge vlan_filtering 1
/ # ip link set br0 up
/ # bridge vlan
port vlan ids
br0 1 PVID Egress Untagged
Добавить VLAN
/ # bridge vlan add dev br0 vid 10 self
/ # bridge vlan add dev br0 vid 20 self
/ # bridge vlan add dev br0 vid 30 self
/ #
/ # bridge vlan
port vlan ids
br0 1 PVID Egress Untagged
10
20
30
Добавить eth интерфейсы как слейвы к мосту
/ # ip link set eth0 master br0
/ # ip link set eth1 master br0
/ # ip link set eth2 master br0
/ # bridge vlan
port vlan ids
eth0 1 PVID Egress Untagged
eth1 1 PVID Egress Untagged
eth2 1 PVID Egress Untagged
br0 1 PVID Egress Untagged
10
20
30
Очистить VLAN по умолчанию с интерфейсов
/ # bridge vlan del dev eth0 vid 1
/ # bridge vlan del dev eth1 vid 1
/ # bridge vlan del dev eth2 vid 1
/ # bridge vlan
port vlan ids
eth0 None
eth1 None
eth2 None
br0 1 PVID Egress Untagged
10
20
30
Добавить необходимые VLAN к портам
/ # bridge vlan add dev eth0 vid 10 pvid untagged master
/ # bridge vlan add dev eth1 vid 20 pvid untagged master
/ # bridge vlan add dev eth2 vid 30 pvid untagged
/ # bridge vlan
port vlan ids
eth0 10 PVID Egress Untagged
eth1 20 PVID Egress Untagged
eth2 30 PVID Egress Untagged
br0 1 PVID Egress Untagged
10
20
30
Как вы видите, я использовал ключевое слово master для eth0 и eth1, но не для eth2, и это не изменило результат.
Ответ или решение
Вопрос о параметрах "self" и "master" в контексте команды "bridge vlan add" является важным аспектом работы с VLAN и сетевыми мостами в Linux. Давайте детально рассмотрим, как каждый из этих параметров функционирует и в каких случаях они применяются.
Параметр "self"
Параметр "self" указывает на то, что VLAN, которую вы добавляете, будет настроена непосредственно на самом мосту (например, на интерфейсе br0). Этот параметр необходим в случаях, когда интерфейс, к которому применяется команда, является мостом.
Если рассматривать это на практике, когда вы добавляете VLAN с параметром "self", вы сообщаете сети, что данная VLAN будет обрабатываться именно на уровне моста. Это особенно полезно для виртуальных интерфейсов, когда ваши машины работают через такие мосты, как br0. Например:
bridge vlan add dev br0 vid 10 self
Таким образом, вы информируете сетевую подсистему, что полученные кадры могут быть адресованы к этому мосту.
Параметр "master"
С другой стороны, параметр "master" используется для интерфейсов, которые являются подчиненными интерфейсами моста. Это означает, что если у вас есть физические сети, которые подключены к мосту, и вы хотите указать, что на них будет применяться определенная VLAN, то вам нужно будет использовать этот параметр (хотя он является значением по умолчанию и может не указываться в командах).
Когда вы назначаете физические интерфейсы, такие как eth0, eth1, eth2, под мост br0, вы можете использовать:
ip link set eth0 master br0
Или, когда вы добавляете VLAN для интерфейсов:
bridge vlan add dev eth0 vid 10 pvid untagged master
Этот подход объясняет, что интерфейс eth0 является подчиненным интерфейсом моста br0 и что специфическая VLAN будет применяться именно к нему. Это нет необходимости упоминать параметр "master" второй раз, если он уже является значением по умолчанию.
Пример использования
Рассмотрим последовательность команд, описанную вами в примере. Вы создаете мост br0, активируете его и добавляете VLAN с параметром "self":
bridge vlan add dev br0 vid 10 self
Затем вы добавляете физические интерфейсы, как slave-устройства к этому мосту:
ip link set eth0 master br0
После того как вы очистили VLAN по умолчанию из интерфейсов, необходимо добавить нужные VLAN к физическим интерфейсам:
bridge vlan add dev eth0 vid 10 pvid untagged master
Таким образом, вы настраиваете сети на удаление любой предыдущей конфигурации и масшттабируете конфигурацию VLAN под каждую из сетевых интерфейсов.
Заключение
Таким образом, использование параметров "self" и "master" в команде "bridge vlan add" обеспечивает четкое разделение между тем, где задана VLAN – на самом мосту или на подчиненном интерфейсе. Понимание этих парадигм поможет администратору сети больше ориентироваться в конфигурациях VLAN и настраивать более эффективный и целенаправленный сетевой трафик. Эффективное использование данных параметров также позволяет избежать потенциальных проблем с маршрутизацией и управлением трафиком, что крайне важно для стабильной работы современных сетей.