Используйте netplan для настройки двух тегированных VLAN.

Вопрос или проблема

Для моей сети я настроил два VLan (идентификаторы VLan: 1 и 2) на коммутаторе. Моя машина на ubuntu core 22.04.1 подключена к коммутатору через один тегированный порт, который позволяет проходить трафику VLan 1 и VLan 2. Эта машина позже будет хостить контейнеры docker, которые выполняют dhcp, dns, OpenLDAP и т.д. Я хотел бы использовать netplan на своей машине с ubuntu, так как это дает мне красивый обзор моей сетевой конфигурации.
Я хочу достичь:

  • иметь IP-адрес 192.168.10.101/24 в VLan 1, который доступен с других хостов в VLan 1
  • иметь IP-адрес 192.168.20.101/24 в VLan 2, который доступен с других хостов в VLan 2
  • маршрутизация для машины ubuntu к другим хостам в обеих подсетях 192.168.10.0/24 и 192.168.20.0/24 через шлюзы 192.168.10.1 и 192.168.20.1 соответственно
  • маршрутизация к шлюзу по умолчанию 192.168.10.1 для подключения машины ubuntu к интернету

Файл /etc/netplan/00-installer-config.yml выглядит следующим образом:

network:
  version: 2
  ethernets:
    enp5s0:
      dhcp4: false
    enp6s0:
      dhcp4: false
      optional: true
  vlans:
    vlan.1:
      id: 1
      link: enp5s0
      addresses:
      - 192.168.10.101/24
      nameservers:
        addresses:
        - 192.168.10.116
      routes:
      - to: default
        via: 192.168.10.1
        metric: 100
  vlans:
    vlan.2:
      id: 2
      link: enp5s0
      addresses:
      - 192.168.20.101/32

Вывод ip route является:

default via 192.168.10.1 dev vlan.1 proto static metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
192.168.10.0/24 dev vlan.1 proto kernel scope link src 192.168.10.101

Эта конфигурация (примененная с помощью sudo netplan apply) дает мне уже очень близко к тому, что я хочу сделать:

  • Из машины ubuntu я могу
    • ssh в машину в подсети 192.168.10.0/24
    • ssh в машину в подсети 192.168.20.0/24
    • достигнуть интернета
  • С хоста в подсети 192.168.10.0/24 я могу достичь машину ubuntu через 192.168.10.101
  • С хоста в подсети 192.168.20.0/24 я могу достичь машину ubuntu через 192.168.10.101

Чего мне не хватает:

  • С хоста в подсети 192.168.10.0/24 достичь 192.168.20.101
  • С хоста в подсети 192.168.20.0/24 также достичь 192.168.20.101.

Смотря на конфигурацию netplan выше, я предполагаю, что это связано с 192.168.20.101/32, который не позволяет достигать этот IP с других хостов в обеих подсетях. Я уже пробовал определить адрес с 192.168.20.101/24, но это привело к тому, что нельзя было достичь ни одного другого хоста в подсети 192.168.20.0/24 из машины ubuntu.

Может кто-то помочь мне выяснить, что я сделал неправильно, что мешает машине ubuntu быть доступной через 192.168.20.101?
Могу ли я даже сделать это с помощью netplan или мне нужно выполнила некоторые шаги вручную после применения конфигурации?

Я так рад, что нашел решение проблемы! Проблема была в том, что один и тот же MAC-адрес использовался для обоих VLan. Решение, которое сработало для меня, заключалось в создании мостов для VLan. Я раньше читал о (сетевых) мостах, но каждый раз, когда я видел пример, мост использовал только один интерфейс. Для меня это не имело смысла соединять только с одним интерфейсом, так как я ожидал, что у моста будет второй “столб”. В конце концов, оказалось, что это не обязательно, и достаточно определить только один интерфейс:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      match:
        macaddress: a8:5e:45:56:38:65
        name: enp5s0
      set-name: eth0
    enp6s0:
      dhcp4: false
      optional: true
  bridges:
    br0:
      interfaces: ["vlan.1"]
      addresses:
      - 192.168.10.101/24
      nameservers:
        addresses:
        - 192.168.10.116
      routes:
      - to: default
        via: 192.168.10.1
    br1:
      interfaces: ["vlan.2"]
      addresses:
      - 192.168.20.101/24

  vlans:
    vlan.1:
      id: 1
      link: eth0
      accept-ra: no
    vlan.2:
      id: 2
      link: eth0
      accept-ra: no

Смотря на новую конфигурацию netplan, 192.168.20.101/32 можно вернуть обратно в 192.168.20.101/24. Кроме того, я переименовал интерфейс enp5s0 в eth0 (потому что мне нравится старая номенклатура больше).

Теперь ip route выводит следующее:

default via 192.168.10.1 dev br0 proto static
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.101
192.168.20.0/24 dev br1 proto kernel scope link src 192.168.20.101

Я подтверждаю выводы @Marc P, хотя для меня это работало при удалении маршрутов и серверов имен в определениях мостов.

Ответ или решение

Настройка двух Тегированных VLAN с помощью Netplan на Ubuntu Core 22.04.1

Введение

Настройка VLAN (Virtual Local Area Network) в вашей сети помогает разделить трафик для различных сегментов, повышая безопасность и управляемость. В этой статье мы рассмотрим, как настроить две тегированные VLAN на системе Ubuntu Core 22.04.1 с использованием инструмента сетевой конфигурации Netplan.

Условия Задачи

Ваша задача заключается в следующем:

  1. Назначить IP-адрес 192.168.10.101/24 для VLAN 1, чтобы он был доступен для других устройств в этой подсети.
  2. Назначить IP-адрес 192.168.20.101/24 для VLAN 2, чтобы он был доступен для других устройств в соответствующей подсети.
  3. Обеспечить маршрутизацию Ubuntu-машины к другим устройствам в подсетях 192.168.10.0/24 и 192.168.20.0/24 через шлюзы 192.168.10.1 и 192.168.20.1 соответственно.
  4. Настроить маршрутизацию по умолчанию через шлюз 192.168.10.1 для доступа к интернету.

Начальная Настройка Netplan

Вы начали с файла конфигурации /etc/netplan/00-installer-config.yml, соответствующего следующим параметрам:

network:
  version: 2
  ethernets:
    enp5s0:
      dhcp4: false
    enp6s0:
      dhcp4: false
      optional: true
  vlans:
    vlan.1:
      id: 1
      link: enp5s0
      addresses:
      - 192.168.10.101/24
      nameservers:
        addresses:
        - 192.168.10.116
      routes:
      - to: default
        via: 192.168.10.1
        metric: 100
    vlan.2:
      id: 2
      link: enp5s0
      addresses:
      - 192.168.20.101/32

Проблема и Ее Решение

Проблемы в вашей начальной конфигурации заключались в следующем:

  1. Неправильное назначение маски для VLAN 2: использование /32 не позволяло другим устройствам в подсети 192.168.20.0/24 обращаться к услуге на 192.168.20.101.

  2. Наличие одного и того же MAC-адреса на двух VLAN затрудняло доступ.

Как вы обнаружили, использование мостов (bridge) решило эту проблему. Это позволяет VLAN-ам функционировать правильно, обеспечивая маршрутизацию между ними.

Обновленная Конфигурация с Использованием Мостов

После изменения конфигурации на использование мостов, ваш файл должен выглядеть следующим образом:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      match:
        macaddress: a8:5e:45:56:38:65
        name: enp5s0
      set-name: eth0
    enp6s0:
      dhcp4: false
      optional: true
  bridges:
    br0:
      interfaces: ["vlan.1"]
      addresses:
      - 192.168.10.101/24
      nameservers:
        addresses:
        - 192.168.10.116
      routes:
      - to: default
        via: 192.168.10.1
    br1:
      interfaces: ["vlan.2"]
      addresses:
      - 192.168.20.101/24

  vlans:
    vlan.1:
      id: 1
      link: eth0
      accept-ra: no
    vlan.2:
      id: 2
      link: eth0
      accept-ra: no

Итоговая Проверка конфигурации

После применения настроек с помощью команды sudo netplan apply, выполните команду ip route для проверки:

ip route

Ожидаемый вывод:

default via 192.168.10.1 dev br0 proto static
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.101
192.168.20.0/24 dev br1 proto kernel scope link src 192.168.20.101

После этих изменений ваша Ubuntu машина будет доступна как из подсети VLAN 1, так и из VLAN 2, а также сможет выходить в интернет.

Заключение

Использование мостов в сочетании с Netplan для настройки VLAN на Ubuntu обеспечивает более гибкую и продуктивную сетевую конфигурацию. Убедитесь, что все устройства в ваших подсетях правильно настроены для маршрутизации, и ваша сеть будет работать бесперебойно.

Оцените материал
Добавить комментарий

Капча загружается...