Astra linux vlan настройка

Введение

В статье рассматриваются приемы включения и настройки сетевых служб VLAN и VXLAN.

  • VLAN ( Virtual Local Area Network ) — виртуальная локальная компьютерная сеть (виртуальный изолированный широковещательный домен). Позволяет группе сетевых устройств взаимодействовать так, как если бы они были подключены к единой изолированной от других сетей локальной сети независимо от физического местонахождения этих устройств. VLAN представляется участникам группы как отдельная физическая локальная сеть, обеспечивает передачу данных между участниками группы и изолирует их от устройств, не входящих в группу. Для идентификации принадлежности сетевых пакетов тому или иному VLAN-у используется двенадцатибитный идентификатор (VLAN ID), т.е. максимальное количество VLAN-ов в одной сети — 4096. Подробнее см. RFC-3069 VLAN Aggregation for Efficient IP Address Allocation и документацию по стандартам IEEE 802.1q. В Astra Linux реализован как модуль ядра (модуль 8021q);
  • VXLAN (Virtual Extensible LAN) — технология сетевой виртуализации, предназначенная для обеспечения масштабируемости больших система облачных вычислений. VXLAN использует схожую с VLAN технику для инкапсуляции кадров Ethernet второго уровня в в пакеты UDP.
    VXLAN обеспечивает функционирование до 16 миллионов изолированных логических сетей второго уровня, позволяя им одновременно существовать в одной сети передачи данных. Представляет собой протокол туннелирования, разработанный для преодоления ограничения в 4096 идентификаторов, установленного в стандарте IEEE 802.1q (VLAN). Размер идентификатора VXLAN увеличен до 24 бит (16 777 216 идентификаторов). Подробнее см. RFC 7348 и стандарт IEEE 802.1ad. В Astra Linux реализован как модуль ядра (модуль vxlan).

Включение и настройка VLAN

Настройка сетевых интерфейсов VLAN подобна настройке обычных сетевых интерфейсов. Важным отличием является то, что интерфейс VLAN привязывается к существующему «родительскому» интерфейсу. Далее в примерах будет выполняться настройка с использованием в качестве родительского простого сетевого интерфейса eth0, однако VLAN может быть настроен с использованием в качестве родительских таких интерфейсов, как объединение (bond или team) или мост (bridge).

Читайте также:  Чтение файловой системы linux windows

Загрузка модуля ядра

    Загрузить модуль ядра 8021q:

echo "500 firsttable" | sudo tee -a /etc/iproute2/rt_tables echo "501 firsttable" | sudo tee -a /etc/iproute2/rt_tables"

Для того, чтобы модуль загружался автоматически при загрузке ОС, можно создать в каталоге /etc/modules-load.d/ файл с именем, например, /etc/modules-load.d/vlan.conf, и перечислить в нём названия загружаемых модулей:

Настройка VLAN

Создание и настройка VLAN с помощью NetworkManager

  1. Войти в сессию администратора (для Astra Linux Special Edition с включенным МКЦ — администратора с высоким уровнем целостности);
  2. Правой кнопкой мыши нажать на апплет NetworkManager:
  3. В появившемся списке выбрать пункт «Изменить соединения»:
  4. Для создания нового соединения нажать кнопку с символом «+»;
  5. Выбрать тип соединения VLAN и нажать кнопку «Создать»:
  6. В открывшейся форме:
    1. В закладке VLAN задать параметры, относящиеся к VLAN:
      1. Указать имя соединения;
      2. Выбрать родительский интерфейс;
      3. Указать идентификатор VLAN;
      4. По необходимости заполнить остальные параметры:
    2. В остальных закладках указать параметры, как для обычных сетевых соединений.
    3. Нажать кнопку «Сохранить»;

Создание и настройка VLAN с помощью службы networking

Для настройки интерфейса VLAN с помощью службы networking

  1. Войти в сессию администратора (для Astra Linux Special Edition с включенным МКЦ — администратора с высоким уровнем целостности);
  2. Проверить список имеющихся сетевых интерфейсов:

ip link show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:64:d9:e8 brd ff:ff:ff:ff:ff:ff

Далее для настройки будет использоваться интерфейс eth0;

# The first VLAN interface auto eth0.500 iface eth0.500 inet static address 172.20.20.10 netmask 255.255.255.240 gateway 172.20.20.1 dns-nameservers 8.8.8.8 8.8.4.4

При необходимости можно добавить несколько интерфейсов VLAN

# The second VLAN interface auto eth0.501 iface eth0.501 inet static address 172.21.10.0 netmask 255.255.255.0

Если хост используется в качестве гипервизора, то выполнить настройку сети:

    Разрешить в конфигурации сети пересылку пакетов:

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.conf.all.arp_filter=0" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.conf.all.rp_filter=2" | sudo tee -a /etc/sysctl.conf

Включение и настройка VXLAN

Базовые команды

Управление таблицами пересылки VXLAN выполняется с помощью команды bridge:

    Создать правило в таблице пересылки:

Проверить состояние устройства VXLAN можно командой ifconfig:

Проверить таблицу маршрутизации можно командой:

Простейшую проверку работоспособности можно сделать, выполнив команду ping с адресом VXLAN другого устройства:

Примеры

Простейший VXLAN «точка-точка»

  • Сервер 1:
    • IP-адрес: 172.31.0.106;
    • VXLAN-адрес: 10.0.0.106;
    • IP-адрес: 172.31.0.107;
    • VXLAN-адрес: 10.0.0.107;

      Настройка Сервера 1:

        Добавить интерфейс VXLAN:

      sudo ip link add vxlan0 type vxlan id 1 remote 172.31.0.106 dstport 4789 dev eth0
      sudo ip link set vxlan0 up
      sudo ip addr add 10.0.0.107/24 dev vxlan0

      VXLAN между контейнерами Docker

      Далее используются две хост-машины:

      По умолчанию контейнеры на каждой хост-машине подключены к одному сетевому мосту и могут коммуницировать друг с другом, а контейнеры на разных хост-машинах не могут коммуницировать друг с другом (для коммуникации может использоваться специальное ПО, как, например k8s). В настоящем примере для установления связи между контейнерами на разных хост-машинах используются стандартные сетевые интерфейсы docker и VXLAN.

      Материалы по установке docker и созданию контейнеров см. Применение системы изоляции приложений docker в ОС Astra Linux Special Edition 1.7. Далее в примере используется образ wiki/astralinux:se.

      Далее используется команда brctl из пакета bridge-utils. Установить пакет bridge-utils можно командой:

      При установке docker на компьютере по умолчанию создается специальный сетевой интерфейс — мост docker0, которому присваивается IP-адрес 172.17.0.1/16. Это сетевой мост, соединяющий контейнеры. Проверить параметры интерфейса:

      sudo ifconfig docker0
      docker0: flags=4099 mtu 1500
      inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
      ether 02:42:a9:5e:6f:00 txqueuelen 0 (Ethernet)
      RX packets 0 bytes 0 (0.0 B)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 0 bytes 0 (0.0 B)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

      IP-адреса контейнеров docker назначаются автоматически начиная с адреса 172.17.0.2. Чтобы зафиксировать адреса сетевых интерфейсов контейнеров, используемых далее в примере, необходимо при запуске контейнеров использовать параметр —ip. Использование это параметра поддерживается только на дополнительных сетях docker, и такую сеть нужно создать на каждой из хост-машин:

      docker network ls
      NETWORK ID NAME DRIVER SCOPE
      265dff745581 bridge bridge local
      ddf7301657ff host host local
      a28625161bb9 mynetwork bridge local
      b74b0b0796bb none null local

      sudo ifconfig
      br-a28625161bb9: flags=4099 mtu 1500
      inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255
      ether 02:42:e9:f0:e9:a0 txqueuelen 0 (Ethernet)
      RX packets 0 bytes 0 (0.0 B)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 0 bytes 0 (0.0 B)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

      Контейнер также можно запустить в сети docker, принятой «по умолчанию», с автоматическим присвоением адреса:

      • docker0 — мост, созданный при установке docker. Сеть 172.17.0.0/16, IP-адрес интерфейса 172.17.0.1;
      • br-xxxx — мост сети, созданной для реализации примера. Сеть 172.18.0.0/16, IP-адрес интерфейса 172.18.0.1;
      • vethxxxx — интерфейсы контейнеров. Создаются при создании (запуске) каждого контейнера. Интерфейс eth0 контейнера соответствует интерфейсу veth;

      При этом на каждой хост-машине работает контейнер.

      Получить список мостов и их интерфесов можно командой brctl, например:

      sudo brctl show
      br-a28625161bb9 8000.0242e9f0e9a0 no veth1675dd1
      docker0 8000.0242a95e6f00 no vethe587b2d

      Далее создадим сетевые интерфейсы VXLAN в каждой из хост-машин, и подключим их к мосту docker. Сетевые пакеты из контейнера будут доставляться в мост docker, инкапсулироваться в сообщения VXLAN и пересылаться на вторую хост-машину. На второй хост-машине сообщения VXLAN пересылаются в контейнер docker через мост второй хост-машины.

        Настройка первой хост-машины:

          Создать интерфейс VXLAN с идентификатором (VNI) 2000 и названием vxlan_docker. Параметры похожи на использованные в предыдущем примере:

        sudo ip link add vxlan_docker type vxlan id 200 remote 172.31.0.106 dstport 4789 dev eth0
        sudo ip link set vxlan_docker up
        sudo brctl addif br-f4b35af34313 vxlan_docker

        Далее можно проверить соединение с помощью команды ping, выполняемой в контейнере:

        Источник

Оцените статью
Adblock
detector