Сетевое объединение / Ubuntu 20.04

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

Я недавно установил Ubuntu 20.04 на виртуальную машину с двумя ethernet-портами. Я пытаюсь объединить эти два ethernet-порта, но не могу найти правильный способ. Например, кто-то говорит без netplan, другие с netplan, объединение с мостом и т.д.

Я новичок в этом, есть ли способ сделать простое объединение?

Обновление: Я дошел до этого:

network:
version: 2
renderer: networkd
ethernets:
    eth1:
        dhcp4: false

    eth2:
        dhcp4: false

bonds:
    bond0:
        dhcp4: false
        interfaces:
        - eth1
        - eth2
        parameters:
            mode: balance-rr
            mii-monitor-interval: 100
bridges:
    br0:
        dhcp4: true
        interfaces:
        - bond0

И я не могу получить IP для br0. То же самое происходит, если я использую только bond0 без br0.

Спасибо

Обновление II enter image description here

Как на вашем скриншоте, у вас три Ethernet: eth0, eth1, eth2. У eth0 есть IP, значит, у вас есть какой-то конфиг для этого (например, через ifupdown с конфигом /etc/network/interfaces).

Надеюсь, eth1, eth2 не подключены к одному и тому же коммутатору и сети, для работы это требует дополнительных настроек.

Вы должны проверить, что никакие другие инструменты, такие как ifupdown, не используются для поднятия eth1, eth2 и bond0, br0.
Не используйте эти инструменты с netplan.
Отключите интерфейсы eth1, eth2 – удалите строки с auto для eth1, eth2, добавьте только одну строку: iface eth1 inet manual для каждого.
Или переименуйте или удалите файл /etc/network/interfaces.

Если вы переименуете или удалите /etc/network/interfaces, вы должны добавить конфигурацию eth0 в netplan.

Например, в моей конфигурации у меня есть Ethernet em1, em2. bond0 объединяет их, и br0 поверх bond0. br0 получает IP через DHCP. br0 необходим для доступа к сети с виртуальных машин на этом сервере.
Моя конфигурация:

network:
  version: 2
  renderer: networkd
  ethernets:
    em1:
      dhcp4: no
      dhcp6: no
    em2:
      dhcp4: no
      dhcp6: no
  bonds:
    bond0:
      dhcp4: no
      dhcp6: no
      interfaces:
        - em1
        - em2
      macaddress: "xx:xx:xx:xx:2b:62"
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100
        transmit-hash-policy: layer2+3
  bridges:
    br0:
      dhcp4: yes
      dhcp6: yes
      macaddress: "xx:xx:xx:xx:2b:62"
      interfaces:
        - bond0

Вы можете удалить часть с bridges и установить dhcp4: yes, dhcp6: yes для bond0. Это также должно работать, и bond0 должен получить IP от DHCP.

Также я сделал рабочую конфигурацию для ifupdown2 (возможно, потому что старый ifupdown не может обрабатывать зависимости интерфейсов, а ifupdown2 может).

Основываясь на вашей и моей собственной конфигурации, я бы предположил, что что-то подобное может работать:

network:
    version: 2
    renderer: networkd
    ethernets:
        eth1:
            dhcp4: false
        eth2:
            dhcp4: false
    bonds:
        bond0:
            dhcp4: false
            interfaces:
              - eth1
              - eth2
            parameters:
                mode: balance-rr
                mii-monitor-interval: 100
    bridges:
        br0:
            dhcp4: true
            gateway4: your.gate.way.addr
            interfaces:
              - bond0

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

Настройка сетевого интерфейса с использованием технологии агрегирования каналов (bonding) и мостов (bridges) в Ubuntu 20.04 может показаться сложной задачей, особенно для новичков. Основная цель агрегирования состоит в объединении нескольких физических сетевых интерфейсов в один логический интерфейс для повышения пропускной способности и отказоустойчивости. Рассмотрим подробнее, как правильно настроить bonding и bridge в Ubuntu 20.04, чтобы избежать распространенных проблем.

Теория

Агрегация каналов (Bonding)

Bonding позволяет объединить несколько сетевых интерфейсов в один виртуальный интерфейс. Это повышает общую доступную полосу пропускания и обеспечивает отказоустойчивость, что особенно важно в виртуализированных средах, где недоступность сети может привести к потере связи с виртуальными машинами или сервисами.

Основные режимы агрегации:

  • balance-rr (Round-Robin): Распределяет пакеты данных по всем интерфейсам равномерно, что повышает производительность.
  • active-backup: Один интерфейс активен, другой служит резервом.
  • 802.3ad (LACP): Использует протокол агрегации каналов для динамического управления линками. Требует поддержки соответствующей функции на коммутаторе.

Мосты (Bridges)

Мост позволяет объединить несколько сетевых интерфейсов на канальном уровне, предоставляя приложениям интерфейс, который выглядит как один физический интерфейс. Часто используются для виртуальных машин, чтобы соединять их с внешней сетью через один интерфейс.

Пример

Исходя из представленного YAML-конфига, вы настроили две сетевые карты (eth1 и eth2) и объединили их в один логический интерфейс bond0. Затем этот интерфейс подключен к мостовому интерфейсу br0, который должен получить IP-адрес через DHCP.

Вот ваш основной конфиг, скорректированный для устранения возможных проблем:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      dhcp4: false
    eth2:
      dhcp4: false
  bonds:
    bond0:
      dhcp4: false
      interfaces:
        - eth1
        - eth2
      parameters:
        mode: 802.3ad
        mii-monitor-interval: 100
  bridges:
    br0:
      dhcp4: true
      interfaces:
        - bond0

В этой конфигурации:

  1. Каждый из физических интерфейсов (eth1 и eth2) отключен от получения IP-адресов через DHCP.
  2. Используется режим агрегации 802.3ad, который требует корректной настройки на коммутаторе.
  3. Мост br0 связывает агрегированный интерфейс bond0, предоставляя возможность получать IP-адрес через DHCP.

Применение

Шаги для настройки

  1. Проверьте конфигурационные файлы: Убедитесь, что нет конфликтов с другими системами управления сетью, такими как ifupdown. Избавьтесь от файла /etc/network/interfaces или переместите его в другую директорию.

  2. Обновите netplan: После внесения изменений в файл конфигурации /etc/netplan/01-netcfg.yaml, примените их с помощью команды:

    sudo netplan apply
  3. Проверка статуса: Убедитесь, что интерфейсы поднимаются корректно, используя:

    ip a
  4. Проверьте настройки коммутатора: Убедитесь, что ваш коммутатор поддерживает выбранный режим агрегации (например, LACP) и настроен соответствующим образом.

Основные советы

  • Изучение документации: Ознакомьтесь с официальной документацией Ubuntu и netplan. Часто там можно найти много примеров и случаев использования.
  • Логирование и диагностика: Используйте системные логи, чтобы выявлять и исправлять ошибки. Команда journalctl -u systemd-networkd может быть полезной.
  • Постепенное развертывание: Чтобы минимизировать риски, начните с тестовой среды перед применением изменений в продуктивной.

Таким образом, следуя изложенной методике и рекомендациям, вы сможете успешно настроить bonding и bridge в Ubuntu 20.04, обеспечивая необходимую производительность и надежность вашей сетевой инфраструктуры.

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

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