Меню Рубрики

Linux объединить 2 сети

Объединение сетевых интерфейсов в Linux. Настройка bonding

Объединение сетевых интерфейсов(Bonding) – это механизм, используемый Linux-серверами и предполагающий связь нескольких физических интерфейсов в один виртуальный, что позволяет обеспечить большую пропускную способность или отказоустойчивость в случае повреждения кабеля. В данном руководстве мы разберем реализацию объединения интерфейсов в Linux для Ubuntu/Debian и CentOS/RHEL/Fedora.

Агрегация сетевых интерфейсов в Ubuntu и Debian

Важно! Если у вас используется Ubuntu версии 17.10 и выше, то необходимо установить пакет ifupdown или настраивать агрегацию каналов нужно через netplan

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

В более старых версиях Debian или Ubuntu может потребоваться установка пакета ifenslave:

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

Для создания постоянного связанного интерфейса типа mode 0 (ниже мы разберем эти типы более подробно), нужно отредактировать файлы конфигурации сетевых интерфейсов. Откройте с помощью любого текстового редактора, например nano, файл /etc/network/interfaces , как показано в следующем фрагменте (замените IP-адрес, маску подсети, шлюз и DNS-серверы на используемые в вашей сети).

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

Настройки связанного интерфейса можно проверить при помощи следующих команд:

Подробную информацию об объединенном интерфейсе можно получить, просмотрев содержимое следующего файла ядра командой 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

Создайте новый файл bonding.conf в директории /etc/modprobe.d/ . Имя может быть любым, но расширение должно быть .conf. Вставьте в этот файл следующую строку:

Такая строка в файле /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.

Источник

Объединение сетевых интерфейсов в linux

Ой, у вас баннер убежал!

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

Генератор трафика Cisco TRex: запускаем нагрузочное тестирование сетевых устройств

Автоматизация сетевых сервисов или как собрать виртуальную лабораторию при помощи OpenDaylight, Postman и Vrnetlab

Как архитектура HiCampus упрощает организацию кампусных сетевых решений

Курсы

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Комментарии 42

Устарел. Неправилен из-за правки конфигов в двух местах.

Не надо ребут. Совсем. 🙂

2ой вариант не будет работать в debian etch.

Etch всё-таки oldstable. Lenny давненько вышел. Можно пренебречь, я считаю.

А по поводу ifdown я думал, но почему то передумал…

Из комментариев к этому. Вполне логично.

После перезагрузки должен появится один интерфейс bond0.

/etc/network/interfaces а в федоре к примеру этого нету

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

RAID5 на 3-х Seagate Barracude 750GB на хардварном 3Ware RAID-контроллере вполне сносно забивает 1Гбит/сек, а это не далеко не супер-дорогая конфигурация.

Но чисто из спортивного интереса, я бы посмотрел на конфиг автора.

Соответственно, с двумя разными провайдерами это тоже работает без проблем?

Эх… хочу такое на своем ASUS WL500gP настроить. 🙂

Ну я имею в виду такую схему:
есть два интерфейса, например 82.143.55.55 и 15.66.44.66

По одному из них идет весь обмен только с IP, например, 1.x.x.x — 125.x.x.x, а по второму — с IP 126.x.x.x — 254.x.x.x

В статье не упомянут один очень важный параметр настройки бондинга — xmit_hash_policy

xmit_hash_policy — Определяет хэш политику передачи пакетов через объединенные интерфейсы в режиме balance-xor или 802.3ad.
Возможные значение:

layer2 Использует только MAC адреса для генерации хэша. При этом алгоритме трафик для конкретного сетевого хоста будет отправляться всегда через один и тот же интерфейс. Алгоритм совместим с 802.3ad.
Формула расчёта хэша:
(source MAC XOR destination MAC) modulo slave count

layer2+3 Использует как MAC адреса так и IP адреса для генерации хэша. Алгоритм совместим с 802.3ad.
Формула расчета хэша:
(((source IP XOR dest IP) AND 0xffff) XOR ( source MAC XOR destination MAC )) modulo slave count

layer3+4 Используется IP адреса и протоколы транспортного уровня (TCP или UDP) для генерации хэша. Алгоритм не всегда совместим с 802.3ad, так как в пределах одного и того же TCP или UDP взаимодействия может передаваться как фрагментированные так и не фрагментированнные пакеты. В фрагментированных пакетах порт источника и порт назначения отсутствуют. В результате в рамках одной сессии пакеты могут дойти до получателя не в том порядке (так как отправляются через разные интерфейсы). Некоторое оборудование, совместимое с 802.3ad может некорректно отработать такую ситуацию.
Формула расчета хэша:
((source port XOR dest port) XOR ((source IP XOR dest IP) AND 0xffff) modulo slave count

посмотреть какой режим сейчас можно так — cat /sys/devices/virtual/net/bond0/bonding/xmit_hash_policy
пример настройки через /etc/network/interfaces:
auto bond0
iface bond0 inet static
address 123.123.123.123
gateway 123.123.123.1
netmask 255.255.255.0
mtu 9000
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate 1
bond-slaves none
bond-xmit-hash-policy 1
dns-nameservers 8.8.8.8 8.8.4.4

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

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как в mac os добавить сетевой диск
  • Как в mac os вырезать папку
  • Как в mac os выделить все файлы в папке
  • Как в mac os быстро переключаться между окнами
  • Как в hosts mac os прописать