Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Технология VLAN
VLAN (Virtual Local Area Network) — топологическая («виртуальная») локальная сеть, широковещательный домен, который разделен и изолирован в компьютерной сети на канальном уровне (уровень 2 OSI) и представляет собой группу узлов сети (хостов), имеющих возможность взаимодействовать между собой напрямую на канальном уровне, хотя физически при этом они могут быть подключены к разным сетевым коммутаторам. И наоборот, узлы сети, находящиеся в разных VLAN'ах, невидимы друг для друга на канальном уровне, даже если они подключены к одному коммутатору, и связь между этими хостами возможна только на сетевом и более высоких уровнях.
Гибкое разделение устройств на группы
Как правило, одному VLAN соответствует одна подсеть. Узлы сети, находящиеся в разных VLAN, будут находиться в разных подсетях. Но в то же время VLAN не привязан к местоположению узлов сети и поэтому узлы, находящиеся на расстоянии друг от друга, все равно могут быть в одном VLAN независимо от местоположения
Уменьшение количества широковещательного трафика в сети
Каждый VLAN — это отдельный широковещательный домен. Например, коммутатор — это устройство 2 уровня модели OSI. Все порты на коммутаторе с лишь одним VLAN находятся в одном широковещательном домене. Создание дополнительных VLAN на коммутаторе означает деление коммутатора на несколько широковещательных доменов. Если один и тот же VLAN настроен на разных коммутаторах, то порты этих коммутаторов будут образовывать один широковещательный домен.
Увеличение безопасности и управляемости сети
Когда сеть поделена на VLAN, упрощается задача применения политик и правил безопасности. С VLAN политики можно применять к целым подсетям, а не к отдельному узлу. Кроме того, переход из одного VLAN в другой предполагает прохождение через устройство 3 уровня модели OSI, на котором, как правило, применяются политики, разрешающие или запрещающие доступ из VLAN в VLAN.
Тегирование трафика VLAN
Если используется один коммутатор, то информация о том какой VLAN какому порту соответствуют хранится в таблице коммутации.
Если используется более одного коммутатора, то после получения данных на порт коммутатора коммутатор помечает пришедший трафик, тегируя кадры (frame). Пометка информирует к какому VLAN'у принадлежит трафик. Наиболее распространённый способ ставить такую пометку описан в стандарте IEEE 802.1Q. Такая метка называется тегом, тег содержит номер VLAN'а.
Порт, который передаёт трафик только одного VLAN имеет тип access. Нескольких VLAN'ов тип trunk.
Настройка VLAN в операционной системе состоит из нескольких шагов:
- Создать производный интерфейс VLAN'а;
- Привязать его к какому-либо базовому сетевому интерфейсу;
- Назначить IP-адрес для производного интерфейса;
- Задать дополнительные параметры производного интерфейса, если необходимо;
- Если система используется для маршрутизации трафика, разрешить прохождение трафика между интерфейсами (форвардинг) и описать правила фильтрации трафика.
Рекомендации по настройке ОС Astra Linux
При использовании Astra Linux в качестве серверной ОС рекомендуется всю настройку сети и VLAN в частности проводить с помощью сервиса networking. Перед использованием networking необходимо отключить NetworkManager, для чего выполнить команду:
Command |
---|
sudo systemctl --now mask NetworkManager |
Предварительные требования
Необходима поддержка 802.1Q ядром Linux.
Command |
---|
sudo modprobe 8021q |
Необходимо, чтобы в системе был установлен пакет vlan.
Command |
---|
sudo apt install vlan |
Настройка
Настройка VLAN с помощью средств iproute2
В последних версиях пакета iproute появились средства, позволяющие управлять VLAN-интерфейсами.
Добавление VLAN-интерфейса:
Command |
---|
sudo 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 (по умолчанию включена) кадры, проходящие через интерфейс VLAN, не содержат тегов. При отключенной опции, в кадрах сохраняется тег. Это нужно учесть, если вы, например, используете фильтры tc (traffic control) типа u32 с указанием смещений.
Опция loose-binding отвечает за синхронизацию состояния VLAN-интерфейса с базовым интерфейсом. По-умолчанию, отключена, и при переключении базового интерфейса в состояние down состояние VLAN-интерфейса так же меняется на down. При включении, состояние VLAN-интерфейса не зависит от состояния базового интерфейса.
Опция gvrp отвечает за то, распространять ли информацию о данном VLAN по протоколу gvrp. Для поддержки этой опции должна быть поддержка данной возможности со стороны ядра.
Опции ingress-qos-map и egress-qos-map задают трансляцию между полем приоритета заголовка 802.1q и приоритетом структуры skb (данное поле используется в системе управления трафиком). Следует учитывать, что поле приоритета VLAN-заголовка имеет размер 3 бита и может принимать значения от 0 до 7. Размер же поля приоритета структуры skb составляет 32 бита.
Для просмотра информации о VLAN-интерфейсе в команде ip link show необходимо задать ключ -d[etails].
Блок кода | ||
---|---|---|
| ||
$ip -details link show dev VLANNAME 19: VLANNAME@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 00:aa:92:08:18:a6 brd ff:ff:ff:ff:ff:ff vlan id 1 <REORDER_HDR> egress-qos-map { 0:7 1:7 2:7 3:7 4:7 5:7 6:7 7:7 } |
Для изменения параметров VLAN-интерфейса используется команда ip link set, с обязательным указанием type vlan.
Command |
---|
sudo ip link set dev VLANNAME type vlan OPTION VALUE |
Удаление VLAN-интерфейса
Command |
---|
sudo ip link del VLANNAME |
Настройка с помощью networking
Блок кода | ||
---|---|---|
| ||
auto <InterfaceName> # необязательно iface <InterfaceName> inet manual # необязательно auto <InterfaceName>.<VLAN ID> iface <InterfaceName>.<VLAN ID> inet static vlan-raw-device <InterfaceName> # или vlan_raw_device address .... netmask .... |
Настройки интерфейсовVLAN'ов в Astra Linux точно так же, как и для сетевых интерфейсов, указываются в файле /etc/network/interfaces.
Для того, чтобы информация о созданных VLAN'ах сохранилась после перезагрузки, необходимо добавить её в файл /etc/network/interfaces.
Например:
Блок кода | ||
---|---|---|
| ||
auto vlan1400 iface vlan1400 inet static address 192.168.1.1 netmask 255.255.255.0 vlan_raw_device eth0 |
Или, если требуется использовать названия интерфейсов вида eth0.1400, а не vlan1400:
Блок кода | ||
---|---|---|
| ||
auto eth0.1400 iface eth0.1400 inet static address 192.168.1.1 netmask 255.255.255.0 vlan_raw_device eth0 |
Новый параметр, который обычно отсутствует в конфигурации сетевого интерфейса — vlan_raw_device. Этот параметр указывает, на каком сетевом интерфейсе должен создаваться новый интерфейс vlan1400.
Номер 1400 в данном случае указывает на то, какой VLAN ID должен использоваться.