uz
KA
июня 23, 2025
Обновлено июня 23, 2025

Агрегирование каналов на Linux

Linux Интерфейсы Сети

Агрегирование каналов на Linux или же bonding – это процесс объединения нескольких сетевых каналов для повышения пропускной способности и надежности соединения в операционной системе Linux. В данном контексте агрегирование каналов позволяет эффективно использовать доступные сетевые ресурсы, увеличивая скорость передачи данных и обеспечивая отказоустойчивость путем распределения трафика между несколькими соединениями.

Этот процесс может быть осуществлен с использованием различных технологий и протоколов, таких как Link Aggregation (IEEE 802.3ad), Bonding (Linux bonding driver) и другие.

Подготовим сервер

Представьте, что вашим прокси-сервером или маршрутизатором является Linux и вам необходимо повысить скорость передачи данных по каналу связи, но физические возможности не позволяют выбрать оптоволокно или иные варианты связи. В данном случае мы можем воспользоваться агрегированием каналов связи! Создав единый логический интерфейс и настроив его, мы сможем принимать соединение с двух физических каналов, тем самым повысив производительность и отказоустойчивость сети.

Для этого создадимVPS сервер в Serverspace. Перейдем на вкладку левого меню к серверам, предварительно выбрав облачную платформу и нажмем на кнопку Создать сервер.

Создание сервера
Скриншот №1 — Создание сервера

В его настройках добавим два сетевых интерфейса, которые в дальнейшем объединим и настроим на совместное использование!

Подготовка к агрегированию каналов

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

echo "network: {config: disabled}" >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
Отключить сетевую синхронизацию
Скриншот №2— Отключить сетевую синхронизацию

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

systemctl daemon-reload

Проверим сетевые настройки и далее отключим сетевые адаптеры, которые необходимы в агрегировании:

ip a
Первичные сетевые настройки
Скриншот №3— Первичные сетевые настройки

В моем случае это интерфейсы enp0s5 и enp0s6, которые необходимо отключить соответствующей командой:

ifdown enp0s5 && ifdown enp0s6

Не забудем установить соответствующее ПО для агрегации каналов:

apt install ifenslave -y

Так же вы можете указать конкретную версию, при установке пакета, если он совместим с вашей системой. В данном случаем последняя версия пакета устанавливает модуль позволяющий управлять сетевым подключением и в том числе агрегировать каналы связи!

Настройка агрегации через утилиту

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

Для настройки первого случая, создадим bond0 интерфейс командой:

ip link add bond0 type bond

Для того, чтобы назначить интерфейсы в агрегацию каналов необходимо включить новый виртуальный интерфейс и прописать для него, предварительно отключенные интерфейсы для агрегации:

ip link set bond0 up
ip link set enp0s5 master bond0
ip link set enp0s6 master bond0
Агрегирование каналов
Скриншот №4— Агрегирование каналов

В зависимости от того какие интерфейсы вы агрегировали, теперь необходимо выбрать IP-адрес для того, чтобы узлы могли к вам обращаться. Если вы добавили сетевой кабель или же виртуальный интерфейс к одной подсети, то укажите тот же IP-адрес! Если вы объединяете два интерфейса из двух разных подсетей, то обратите внимание, что теперь у вас будет один адрес на две сети и скорее всего смысл сегментации пропадет, необходимо использовать иную конфигурацию c HSRP или иными протоколами связи. Добавим адрес к интерфейсу;

ip address add replace_by_your_ip dev bond0

И сразу просмотрим результат конфигурации:

ip a
Присвоение адреса
Скриншот №5— Присвоение адреса

На скриншоте мы можем увидеть состояние двух агрегированных интерфейсов, как SLAVE, то есть в подчинении интерфейса bond0. У которого указан параметр master, позволяющий синхронизовано управлять каналами. Однако эти настройки будут действовать только до перезагрузки, рассмотрим вариант постоянной конфигурации.

Настройка агрегации через конфиг

Изначально перейдем в файл конфигурации и посмотрим настройки до изменений. В каждой ОС пути к конфигурации и его вид могу быть разными, учитывайте это при настройке. Для пользователей Serverspace необходимо перейти по пути и открыть файл:

nano /etc/network/interfaces.d/50-cloud-init

Для остальных пользователей ОС Debian, можно так же перейти в общий файл с настройками:

nano /etc/network/interfaces

И вставить следующую конфигурацию:

auto bond0
iface bond0 inet static
address 10.0.3.1/24
slaves enp0s6 enp0s7
bond-mode balance-rr
bond-miimon 100
bond-downdelay 200
bond-updelay 100
Изменение конфигурации
Скриншот №6 — Изменение конфигурации

Необходимо обязательно заменить поля address, slaves, в которых вы указываете сетевые интерфейсы для агрегации и новый IP для виртуального интерфейса. Каждое из остальных полей так же имеет свое обозначение:

  • auto bond0 – строка предназначена для поднятия интерфейса, при запуске системы;
  • iface bond0 inet static – для интерфейса bond0 выбираем статические настройки;
  • bond-mode – данный параметр определяет логику работы виртуального интерфейса и может определять вид балансировки траффика, обнаружение и управление состоянием соединения, отказоустойчивости;
  • bond-miimon – определяет интервал мониторинга состояния подчиненных интерфейсов;
  • bond-downdelay – определяет пороговое значение задержки ответа перед тем, как считать интерфейс недоступным;
  • bond-updelay – определяет пороговое значение задержки поднятия интерфейса.

Теперь необходимо перезагрузить сетевую службу для применения настроек из файла, предварительно сохранив комбинацией Ctrl + O:

systemctl restart networking

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

Агрегирование каналов в Linux является мощным инструментом для повышения производительности и надежности сети, и правильная настройка позволяет эффективно использовать доступные ресурсы.

Оценка:
5 из 5
Аverage rating : 5
Оценок: 2
100029 Ташкент Улица Якка Чинар, дом 2/1
ООО «ИТГЛОБАЛКОМ ЛАБС»

Вам также может быть интересно...