Соедините виртуальные машины на разных физических узлах, используя VLAN.

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

Я совершенно новичок в сетях Linux и все еще пытаюсь это понять. Извините, если ответ на проблему прост.

У меня есть доступ по SSH к двум физическим узлам, которые находятся в одной сети, давайте назовем их node1 и node2. Сетевое взаимодействие для них настроено с помощью netplan, и они могут пинговать друг друга.

Конфигурация netplan для них выглядит следующим образом:

network:
  ethernets:
    switchports:
      match:
        name: eno*
  bonds:
    bond0:
      interfaces: [switchports]
      mtu: 8900
      parameters:
        down-delay: 0
        lacp-rate: fast
        mii-monitor-interval: 100
        mode: 802.3ad
        transmit-hash-policy: layer2+3
        up-delay: 0
  vlans:
    bond0.12:
      id: 12
      link: bond0
      mtu: 8900
      addresses: [10.12.14.12/28]
      gateway4: 10.12.14.1
      nameservers:
        addresses:
          - 8.8.8.8

Обратите внимание, что имена bond и vlan различны для обоих физических узлов. Я создаю несколько виртуальных машин на каждом физическом узле и хочу, чтобы они могли подключаться друг к другу.

Для этого я попытался создать VLAN и мост с одинаковыми именами на обоих физических узлах и подключить мост к этим виртуальным машинам. После этих изменений netplan выглядит примерно следующим образом для обоих физических узлов. Обратите внимание, что имена ранее определенных bond и vlan все еще различны на обоих физических узлах.

network:
  ethernets:
    switchports:
      match:
        name: eno*
  bonds:
    bond0:
      interfaces: [switchports]
      mtu: 8900
      parameters:
        down-delay: 0
        lacp-rate: fast
        mii-monitor-interval: 100
        mode: 802.3ad
        transmit-hash-policy: layer2+3
        up-delay: 0
  vlans:
    bond0.12:
      id: 12
      link: bond0
      mtu: 8900
      addresses: [10.12.14.12/28]
      gateway4: 10.12.14.1
      nameservers:
        addresses:
          - 8.8.8.8
    bond0.15:
      id: 15
      link: bond0
      addresses:
        - 192.168.10.1/24
      routes:
        - to: default
          via: 192.168.10.1
          metric: 100
          on-link: true
  bridges:
    vmbr1:
      interfaces: [ bond0.15 ]
      parameters:
        forward-delay: 0
        stp: false

После этого я добавил правило маршрутизации, чтобы разрешить маршрутизацию из нового интерфейса vlan, но это не сработало.

sudo iptables -A FORWARD -i bond0.15 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o bond0.15 -j MASQUERADE

Я не уверен, что мне нужно сделать, чтобы виртуальные машины на разных физических узлах могли пинговать друг друга.

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

Понимание подключения виртуальных машин через VLAN между физическими узлами

Создание связи между виртуальными машинами на разных физических узлах с использованием VLAN может показаться сложной задачей, особенно для начинающих администраторов Linux. Однако, с правильным подходом и пониманием настройки сети с использованием Netplan, это можно сделать эффективно. В данном ответе мы обсудим, как правильно настроить VLAN и мосты на ваших физических узлах для достижения этой цели.

1. Обзор конфигурации

У вас уже настроены два физических узла — node1 и node2. Оба узла могут пинговать друг друга, что указывает на корректную настройку основной сети. Ниже приведены ключевые моменты вашей сети:

  • Оба узла используют bonded интерфейс bond0 на основе нескольких физических интерфейсов.
  • VLAN с идентификатором 12 и 15 настроены на каждом узле.
  • Для виртуальных машин вы создаете мост vmbr1, который использует VLAN 15.

2. Настройка VLAN

Чтобы виртуальные машины на разных физических узлах могли видеть друг друга, необходимо убедиться, что конфигурация VLAN согласована. Следует использовать один и тот же идентификатор VLAN (15) на обоих узлах. Убедитесь, что вы используете одинаковые IP-адресации, чтобы минимизировать проблемы с маршрутизацией.

Пример конфигурации для обоих узлов:

vlans:
  bond0.15:
    id: 15
    link: bond0
    addresses:
      - 192.168.10.1/24  # Для node1
      # - 192.168.10.2/24  # Для node2

На node2 вы можете назначить IP-адрес 192.168.10.2/24. Это обеспечит, что оба узла находятся в одной подсети, что является обязательным для сетевого взаимодействия.

3. Настройка моста

Убедитесь, что мост vmbr1 корректно настроен на обоих узлах. Он должен быть привязан к VLAN 15, что обеспечит доступ виртуальным машинам к сети.

Пример конфигурации моста:

bridges:
  vmbr1:
    interfaces: [bond0.15]
    parameters:
      forward-delay: 0
      stp: false

4. Настройка виртуальных машин

Теперь, когда ви настроили мосты и VLAN, необходимо настроить ваши виртуальные машины. Каждая из них должна быть подключена к мосту vmbr1. Виртуальные машины должны получать IP-адреса из одной и той же подсети (например, 192.168.10.3 для VM на node1 и 192.168.10.4 для VM на node2).

5. Проверка маршрутов и IPTables

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

  1. Проверьте, что IPTables настроены на обоих узлах. Убедитесь, что нет блокировок для трафика между VLAN:
sudo iptables -A FORWARD -i bond0.15 -j ACCEPT
sudo iptables -A FORWARD -o bond0.15 -j ACCEPT
  1. Убедитесь, что включен IPv4-Forwarding:
sudo sysctl -w net.ipv4.ip_forward=1

6. Тестирование соединения

После всех вышеперечисленных шагов, вы можете протестировать соединение между виртуальными машинами:

  • Используйте команду ping из одной виртуальной машины в другую.
  • Убедитесь, что файерволы на виртуальных машинах также не блокируют трафик.

Заключение

Настройка VLAN для соединения виртуальных машин на разных физических узлах требует тщательного подхода и понимания сетевой архитектуры. Убедившись, что все VLAN настроены согласованно, и что IPTables не блокирует трафик, вы сможете добиться стабильного и надежного соединения между вашими виртуальными машинами.

Этот процесс может показаться сложным, но четкое понимание каждого шага значительно упрощает работу с сетями Linux. Если возникнут дополнительные вопросы, не стесняйтесь их задавать!

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

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