bond сеть что такое
Совместное использование нескольких сетевых интерфейсов в Ubuntu, Debian.
Ядро linux идет со встроенным драйвером для агрегирования нескольких сетевых интерфейсов в один, называемый bond0. В данном руководстве будет объяснено как настроить данный интерфейс под debian-based системой на конкретном примере.
В примере используется следующее оборудование:
Рекомендуемое программное обеспечение.
Ifenslave используется для присоединения сетевых карт к bond-интерфейсу. Bond0 будет считаться в системе как обычный сетевой интерфейс, но будет посылать пакеты через присоединенные (slave) устройства, используя планировщик на алгоритме round-robin. Это позволит обеспечить простую и сбалансированную систему. Установим данное ПО с помощью команды:
apt-get install ifenslave*
Настройка Linux bounding драйвера.
Создадим файл /etc/modprobe.d/bonding.conf
nano /etc/modprobe.d/bonding.conf
Со следующим содержимым:
alias bond0 bonding
options bonding mode=0 arp_interval=100 arp_ip_target=192.168.1.254, 192.168.1.12
Сохраним и закроем файл. В данном случае опции обозначают:
Настройка сетевых интерфейсов на совместное использование.
Первым делом остановим eth0 и eth1 (не делайте так в ssh сессии):
/etc/init.d/networking stop
Отредактируем /etc/network/interfaces, сделав его резервную копию (на всякий случай):
cp /etc/network/interfaces /etc/network/interfaces.bak
nano /etc/network/interfaces
Удалив из содержимого eth0 и eth1 конфигурацию и приведя файл к следующему виду:
Сохраняем и выходим. В данном случае опции означают:
Немного о других Bonding Policies.
Чуть выше мы установили bounding policy (mode) в значение 0, что означает balance-rr. Другие значения могут быть:
Запуск bond0 интерфейса.
После внесения всех изменений в конфигурационные файлы необходимо запустить или перезапустить сервисы сети:
/etc/init.d/networking restart
или перезагрузка хоста.
Проверка работы.
Вводим в терминал следующую команду:
ifconfig
Вывод будет примерно следующим:
Используем cat, чтобы посмотреть текущее состояние bond драйвера и сетевых соединений:
В случае успеха вывод будет примерно следующим:
Автор статьи Platon Puhlechev aka iFalkorr разрешает печатать данный текст.
Объединение сетевых интерфейсов в Linux. Настройка bonding
Объединение сетевых интерфейсов(Bonding) – это механизм, используемый Linux-серверами и предполагающий связь нескольких физических интерфейсов в один виртуальный, что позволяет обеспечить большую пропускную способность или отказоустойчивость в случае повреждения кабеля. В данном руководстве мы разберем реализацию объединения интерфейсов в Linux для Ubuntu/Debian и CentOS/RHEL/Fedora.
Агрегация сетевых интерфейсов в Ubuntu и Debian
Важно! Если у вас используется Ubuntu версии 17.10 и выше, то необходимо установить пакет ifupdown или настраивать агрегацию каналов нужно через netplan
Прежде всего нужно установить модуль ядра для поддержки объединения и при помощи команды modprobe проверить, загружен ли драйвер.
В более старых версиях Debian или Ubuntu может потребоваться установка пакета ifenslave:
Для создания связанного интерфейса из двух физических сетевых карт вашей системы выполните следующую команду. К сожалению, при использовании такого метода объединение интерфейсов не сохраняется после перезагрузки системы:
Чтобы активировать объединенный интерфейс, перезапустите сетевую службу, отключите физические интерфейсы и включите объединенный интерфейс, либо перезагрузите машину, чтобы ядро определило новый объединенный интерфейс.
Настройки связанного интерфейса можно проверить при помощи следующих команд:
Подробную информацию об объединенном интерфейсе можно получить, просмотрев содержимое следующего файла ядра командой cat:
Для отладки ошибок можно использовать команду tail
Проверку параметров сетевой карты можно выполнить при помощи инструмента mii-tool:
Режимы работы
mode=0 (balance-rr)
При этом методе объединения трафик распределяется по принципу «карусели»: пакеты по очереди направляются на сетевые карты объединённого интерфейса. Например, если у нас есть физические интерфейсы eth0, eth1, and eth2, объединенные в bond0, первый пакет будет отправляться через eth0, второй — через eth1, третий — через eth2, а четвертый снова через eth0 и т.д.
mode=1 (active-backup)
Когда используется этот метод, активен только один физический интерфейс, а остальные работают как резервные на случай отказа основного.
mode=2 (balance-xor)
В данном случае объединенный интерфейс определяет, через какую физическую сетевую карту отправить пакеты, в зависимости от MAC-адресов источника и получателя.
mode=3 (broadcast) Широковещательный режим, все пакеты отправляются через каждый интерфейс. Имеет ограниченное применение, но обеспечивает значительную отказоустойчивость.
mode=4 (802.3ad)
Особый режим объединения. Для него требуется специально настраивать коммутатор, к которому подключен объединенный интерфейс. Реализует стандарты объединения каналов IEEE и обеспечивает как увеличение пропускной способности, так и отказоустойчивость.
mode=5 (balance-tlb)
Распределение нагрузки при передаче. Входящий трафик обрабатывается в обычном режиме, а при передаче интерфейс определяется на основе данных о загруженности.
mode=6 (balance-alb)
Адаптивное распределение нагрузки. Аналогично предыдущему режиму, но с возможностью балансировать также входящую нагрузку.
Объединение сетевых интерфейсов в CentOS, RHEL и Fedora
Такая строка в файле /etc/modprobe.d/bonding.conf требуется для каждого bond интерфейса.
Для агрегации интерфейсов создайте в директории /etc/sysconfig/network-scripts/ файл конфигурации с именем ifcfg-bond0. Вот пример содержимого файла конфигурации (IP-адреса в вашей системе могут отличаться):
После создания объединённого интерфейса нужно настроить его и связанные с ним сетевые карты, добавив в файлы конфигурации директивы MASTER и SLAVE. Для всех связанных интерфейсов эти файлы могут быть почти одинаковыми. Например, у двух интерфейсов eth0 и eth1, связанных в один, они могут иметь следующий вид. Отредактируйте их, как показано ниже.
Для eth0
Значение этих директив следующее:
DEVICE: определяет имя устройства
USERCTL: определяет, может ли пользователь управлять интерфейсом (в данном случае нет)
ONBOOT: определяет, включать ли интерфейс при загрузке
MASTER: есть ли у этого устройства ведущий интерфейс (здесь это bond0)
SLAVE: работает ли это устройство каки ведомое
BOOTPROTO: Определяет получение IP-адреса по DHCP. При статическом IP-адресе устанавливается значение none
Перезагрузите сетевую службу и проверьте конфигурацию командой ifconfig.
Заключение
Объединение сетевых интерфейсов — удобный и функциональный механизм для обеспечения качественной и бесперебойной работы вашей сети. Надеемся, данное руководство было полезным. Более подробную информацию об используемых командах можно получить в соответствующих man-страницах.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Бонд. Джеймс Бонд или объединение сетевых интерфейсов (бондинг)
Подобная статья уже была от автора AccessForbidden: «Объединение сетевых интерфейсов в linux».
Эта статья именно о настройке, и установке. Пишу её потому, что недавно столкнулся с проблемами установки и настройки бондинга.
Ситуация была такова: Был стааренький компьютер на четырёх-поточном пентиуме, с гигабайтом ОЗУ, и встроенным гигабитным интерфейсом на мат.плате. Он был мне как шлюзом, так медиацентром, и NAS’ом. Но вот, когда уже дома появилось N-ное количество девайсов (телевизор, смартфоны и компьютеры) пропускной способности начало не хватать. Но была у меня хорошая интеловская сетевая карточка (тоже гигабитная) и я решил погуглить на тему объединения интерфейсов
Вообще, Ethernet bonding (если быть точнее) — это объединение двух или более физических сетевых интерфейсов в один виртуальный для обеспечения отказоустойчивости и повышения пропускной способности сети. Или (простым языком говоря)Raid для сетевых карт. Только их «заточенность» на пропускную способность, на одинакового производителя- не важна
Ну, для начала, нужно убедится, нуждаетесь вы в этом или нет (скорее всего, если вы это читаете, значит вам это возможно нужно. ). Перед тем, как начнём, предупреждаю: делать нужно всё на сервере и от рута.
Итак, начнём!
Вставляем сет.карту, если не вставали. ну и подключаем к свитчу (коммутатору) или роутеру обе карты
Этап подготовки:
Теперь, нам нужно поставить ifenslave. на данный момент, актуальна версия 2.6. Ставим:
Теперь, нам нужно выключить интерфейсы, которые мы объединяем (в моём случае, это — eth0, eth1).
Ну и останавливаем сеть:
Этап настройки:
Теперь нам нужно настроить файл /etc/network/interfaces
(я лично пользуюсь «нано»).
Поскольку показываю, как делал я, у меня он
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto usb0
allow-hotplug usb0
iface usb0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
auto eth1
iface eth1 inet dhcp
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto usb0
allow-hotplug usb0
iface usb0 inet dhcp
iface bond0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
slaves eth0 eth1
bond-mode balance-rr
bond-miimon 100
bond-downdelay 200
bond-updelay 200
Хочу обратить ваше внимание на:
Первое — если у вас dhcp сервер, то в /etc/default/isc-dhcp-server, в Interfaces я указал bond0. так и с остальными серверами.
Второе — тоже про dhcp. если у вас оный сервер, то в address, netmask, network bond’а0, указываем те же параметры что и у интерфейса на который до этого, работал dhcp
Третье — должен быть только bond0 (0 — в данном случае. Кстати, их может быть куча). Интерфейсы, которые мы объединили написав в строку slaves, мы убираем.
После сделанного пишем (в терминале уже):
Только его!
«включаем» сеть. Кстати на ошибки можно не обращать внимания. Они не критичны.
Можем перезагрузится.
bond0 Link encap:Ethernet HWaddr 00:16:e6:4d:5e:05
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::216:e6ff:fe4d:5e05/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:33518 errors:0 dropped:0 overruns:0 frame:0
TX packets:30062 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6687125 (6.3 MiB) TX bytes:17962008 (17.1 MiB)
eth0 Link encap:Ethernet HWaddr 00:16:e6:4d:5e:05
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:16630 errors:0 dropped:0 overruns:0 frame:0
TX packets:15031 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3288730 (3.1 MiB) TX bytes:8966465 (8.5 MiB)
Interrupt:43 Base address:0x6000
eth1 Link encap:Ethernet HWaddr 00:16:e6:4d:5e:05
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:16888 errors:0 dropped:0 overruns:0 frame:0
TX packets:15031 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3398395 (3.2 MiB) TX bytes:8995543 (8.5 MiB)
Interrupt:17 Memory:e1080000-e10a0000
Можно ещё добавлять интерфейсы bond0:0 и т.д.
Подходящий для вас режим, указывайте в /etc/network/interfaces в строке: bond-mode.
Работа сетевых интерфейсов в режиме bonding
Если необходим стабильный доступ сервера к сети необходимо воспользоваться драйвером bonding. Bonding объединяет несколько сетевых интерфейсов в один виртуальный сетевой интерфейс. Есть несколько режимов работы: Active-backup – режим резервирования. В этом режиме один сетевой интерфейс активный, а второй в режиме ожидания. Когда основной выходит из строя, второй принимает работу на себя. Таким образом обеспечивается стабильный […]
Если необходим стабильный доступ сервера к сети необходимо воспользоваться драйвером bonding. Bonding объединяет несколько сетевых интерфейсов в один виртуальный сетевой интерфейс.
Есть несколько режимов работы:
Приступим к конфигурированию виртуального bond интерфейса в операционной системе Centos.
Для начала посмотрим сколько у нас сетевых карт:
Dev.png просмотр количества сетевых интерфейсов.
Как видим, у нас 2 сетевых интерфейса ens18 и ens19.
Если конфигурационные файлы на эти устройства не сущетвуют, создадим их:
Приведем его к виду, как на скриншоте.
DEVICE=”ens19” – имя сетевого интерфейса
BOOTPROTO=none – не получать сетевые настроки.
MASTER=bond0 – добавляем сетевой интерфейс в виртуальный
SLAVE=yes указываем, что интерфейс ведомый
HWADDR=»ae:2a:de:fa:a8:5b» — mac адрес устройства
ONBOOT = “yes”
Аналогичным способом настраиваем второй интерфейс ens18.
После этого сконфигурируем виртуальный интерфейс bond0.
DEVICE=”bond0” – имя сетевого интерфейса
BOOTPROTO=”static” – применяем статический ip адрес
IPADDR=192.168.77.6 – ip адрес нашего сервера
NETMASK=255.255.255.0 – маска сети
GATEWAY=192.168.77.1 – шлюз по умолчанию
BONDING_OPTS=»mode=active-backup miimon=100 xmit_hash_policy=layer2+3″ – в этом разделе описываются дополнительные параметры работы.
Mode=active-backup – один из сетевых адаптеров активный, второй «страхующий»
Miimon=100 – как часто будет проверяться состояние линии на налчие отказов (100 миллисекунд)
Xmit_hash_policy=layer2+3 – определяет хэш политику передачи пакетов через объединенные интерфейсы (в режиме active-backup не используется. Показан для примера)
ONBOOT=yes — включить сетевой интерфейс.
Перечитаем сетевые настройки командой:
После чего выполним команду:
Как видим из скриншота у нас появился один виртуальный интерфейс bond0. На остальных сетевых интерфейсах ens18 b ens19 сеть не настроена.
Для подробной детализации параметров воспользуемся командой:
Тут следует обратить свое внимание на такие параметры как:
Currently Active Slave: ens18 – какой сетевой интерфейс ведущий в данное время.
MII Status : up – виртуальный сетевой интерфейс включен
MII Polling Interval (ms): 100 – периодичность мониторинга сети в миллисекундах.
Up Delay (ms): 0 – время задержки перед тем как поднять линк при обнаружении восстановления канала.
Down Delay (ms): 0 – время задержки перед отключением интерфейса при обнаружении падения канала.
Далее в двух разделах идет информация о наших физических интерфейсах.
Произведем отключение главного сетевого интерфейса ens18:
Теперь посмотрим статус виртуального интерфейса:
Как видим из скриншота работа переключилась на интерфейс ens19. На работу сети это переключение никак не повлияло
Блог о системном администрировании. Статьи о Linux, Windows, СХД NetApp и виртуализации.
Доброго времени, гости и читатели www.k-max.name. Всех коллег спешу поздравить с профессиональным праздником!
Типы агрегации (объединения) интерфейсов в Linux
mode=0 (balance-rr)
Этот режим используется по-умолчанию, если в настройках не указано другое. balance-rr обеспечивает балансировку нагрузки и отказоустойчивость. В данном режиме пакеты отправляются «по кругу» от первого интерфейса к последнему и сначала. Если выходит из строя один из интерфейсов, пакеты отправляются на остальные оставшиеся.При подключении портов к разным коммутаторам, требует их настройки.
mode=1 (active-backup)
При active-backup один интерфейс работает в активном режиме, остальные в ожидающем. Если активный падает, управление передается одному из ожидающих. Не требует поддержки данной функциональности от коммутатора.
mode=2 (balance-xor)
Передача пакетов распределяется между объединенными интерфейсами по формуле ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.
mode=3 (broadcast)
Происходит передача во все объединенные интерфейсы, обеспечивая отказоустойчивость.
mode=4 (802.3ad)
Это динамическое объединение портов. В данном режиме можно получить значительное увеличение пропускной способности как входящего так и исходящего трафика, используя все объединенные интерфейсы. Требует поддержки режима от коммутатора, а так же (иногда) дополнительную настройку коммутатора.
mode=5 (balance-tlb)
mode=6 (balance-alb)
Адаптивная балансировка нагрузки (более совершенная). Обеспечивает балансировку нагрузки как исходящего (TLB, transmit load balancing), так и входящего трафика (для IPv4 через ARP). Не требует специальной поддержки коммутатором, но требует возможности изменять MAC-адрес устройства.
Настройка bonding в Debian 6
Для корректной работы объединения интерфейсов необходимо установить пакет ifenslave-2.6 и проверить наличие модуля bonding:
Для настройки объединения интерфейсов необходимо отредактировать файл конфигурации сети до следующего вида:
Далее перезапускаем сеть и видим как все работает:
Диагностика bonding
Для проверки работы объединения интерфейсов необходимо просмотреть содержимое каталога /proc/net/bonding/ на наличие каждого из бонд-интерфейсов:
На сегодня это все. такая маленькая заметочка, как говориться «чтобы было».
Что еще почитать
Для более подробного ознакомления с объединением сетевых интерфейсов, советую почитать: