- Ubuntu объединение сетевых интерфейсов
- Установка модуля объединения в Ubuntu
- Временное связывание сети
- Настройка постоянного связывания с помощью Netplan
- Заключение
- Похожие записи:
- Совместное использование нескольких сетевых интерфейсов в Ubuntu, Debian.
- Рекомендуемое программное обеспечение.
- Настройка Linux bounding драйвера.
- Настройка сетевых интерфейсов на совместное использование.
- Немного о других Bonding Policies.
- Запуск bond0 интерфейса.
- Проверка работы.
Ubuntu объединение сетевых интерфейсов
Практика объединения различных сетевых интерфейсов в один известна как связывание или сопряжение сетей. Основной целью объединения сетей является повышение производительности и пропускной способности, а также обеспечение избыточности сети. Кроме того, объединение сетей выгодно в тех случаях, когда крайне важно учитывать допустимые ошибки, например, при балансировке нагрузки. Пакеты для сетевого связывания доступны в системе Linux.
Давайте рассмотрим, как настроить сетевое соединение в Ubuntu с помощью консоли. Прежде чем начать, убедитесь, что у вас есть следующие элементы:
- Учетная запись администратора или главного пользователя
- Имеется два или более интерфейсных адаптера.
Установка модуля объединения в Ubuntu
Сначала нам нужно установить модуль склеивания. Для этого войдите в систему и откройте оболочку командной строки быстрым нажатием «Ctrl+Alt+T». Убедитесь, что в вашей системе Linux настроен и включен модуль связывания. Для загрузки модуля bonding введите следующую команду и пароль пользователя.
Модуль bonding был включен в соответствии с приведенным ниже запросом:
Если в вашей системе отсутствует модуль bonding, обязательно установите пакет ifenslave с помощью пакета apt и добавьте пароль.
sudo apt install ifenslave
Подтвердите процесс установки нажатием «y» на клавиатуре.
Временное связывание сети
Временное связывание длится только до следующей перезагрузки. Это означает, что при перезагрузке или перезапуске системы оно исчезает. Давайте приступим к временному связыванию. Прежде всего, нам нужно проверить, сколько интерфейсов доступно в нашей системе для склеивания. Для этого выполните в оболочке следующую команду, чтобы проверить это. Добавьте пароль вашей учетной записи, чтобы продолжить. Вывод ниже показывает, что у нас в системе доступны два Ethernet-интерфейса enp0s3 и enp0s8.
Прежде всего, необходимо изменить состояние обоих Ethernet-интерфейсов на «down» с помощью следующих команд:
sudo ifconfig ens33 down sudo ifconfig ens36 down
Теперь необходимо создать сеть bond на главном узле bond0 с помощью команды ip link, как показано ниже.
sudo ip link add bond0 type bond mode active-backup
После создания сети bond добавьте оба интерфейса на главный узел, как показано ниже.
sudo ip link set ens33 master bond0 sudo ip link set ens36 master bond0
Вы можете подтвердить создание сетевого соединения с помощью следующего запроса.
Настройка постоянного связывания с помощью Netplan
Чтобы убедиться, что модуль bonding загружается во время загрузки, измените следующий файл
Добавьте следующую строку
Настройка сетевого интерфейса
sudo nano /etc/netplan/00-installer-config.yaml
и добавьте следующие настройки в раздел networks, предварительно заменив сетевые интерфейсы (interfaces) сети (addresses) и DNS сервера (nameservers.addresses) на необходимые.
network: version: 2 ethernets: ens33: dhcp4: no ens36: dhcp4: no bonds: bond0: interfaces: [ens33, ens36] addresses: [192.168.153.130/24] gateway4: 192.168.153.2 parameters: mode: active-backup transmit-hash-policy: layer3+4 mii-monitor-interval: 1 nameservers: addresses: - "1.0.0.1" - "1.1.1.1"
Вы также можете использовать другие типы связей, кроме active-backup(bond=2). Сохраните файл и остановите оба интерфейса.
sudo ifconfig ens33 down sudo ifconfig ens36 down
Теперь запустите сетевую связь.
Проверьте, запущена ли связь.
Вы также можете просмотреть подробный статус сетевого соединения.
sudo cat /proc/net/bonding/bond0
Как видно, мы настроили режим бондинга на активно-резервный с двумя активными интерфейсами.
Заключение
В этой статье объясняется, как объединить несколько сетевых интерфейсов в единую платформу с помощью пакета Linux bridging. Надеюсь, у вас не возникло проблем при реализации.
Похожие записи:
Совместное использование нескольких сетевых интерфейсов в Ubuntu, Debian.
«Склеивание» сетевых интерфейсов (NIC Teaming / Bonding) — не что иное, как слияние нескольких сетевых соединений в одно параллельное. Это позволяет увеличить пропускную способность канала и повысить отказоустойчивость сети в случае отказа одной из сетевых карт.
Ядро linux идет со встроенным драйвером для агрегирования нескольких сетевых интерфейсов в один, называемый bond0. В данном руководстве будет объяснено как настроить данный интерфейс под debian-based системой на конкретном примере.
В примере используется следующее оборудование:
- 2 x PCI-e Gig сетевые карты c поддержкой Jumbo-кадров
- RAID 6 w/ 5 enterprise grade 15k SAS жесткие диски
- Debian Linux 6.0.2 amd64
Также хочу заметить, что эта инструкция будет работать и на Ubuntu Server. Ниже команды даны, исходя из того, что вы открыли root консоль, используя su или sudo -i.
Рекомендуемое программное обеспечение.
Ifenslave используется для присоединения сетевых карт к bond-интерфейсу. Bond0 будет считаться в системе как обычный сетевой интерфейс, но будет посылать пакеты через присоединенные (slave) устройства, используя планировщик на алгоритме round-robin. Это позволит обеспечить простую и сбалансированную систему. Установим данное ПО с помощью команды:
Настройка 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
Сохраним и закроем файл. В данном случае опции обозначают:
- mode=0 : Установить политики «склеивания» в значение balance-rr (round robin). Это значение по умолчанию.
- arp_interval=100 : Установить ARP link monitoring частоту в 100 миллисекунд. Без этой опции вы получите предупреждение, когда будете запускать bond0 через /etc/network/interfaces.
- arp_ip_target=192.168.1.254, 192.168.1.12 : 192.168.1.254 (router ip) и 192.168.1.2 IP адреса как ARP monitoring пиры, когда arp_interval > 0. Это используется для наблюдения за состоянием соединения. Для наблюдения за несколькими ip адресами разделяйте их знаком запятой. Как минимум 1 адрес должен быть указан для функций ARP monitoring. Максимально можно указать до 16 адресов.
Теперь загрузим драйвер, используя следующие команды:
modprobe -v bonding mode=0 arp_interval=100 arp_ip_target=192.168.1.254, 192.168.1.12
Проверьте журнал и наличие в системе интерфейса bond0.
tail -f /var/log/messages
ifconfig bond0
Настройка сетевых интерфейсов на совместное использование.
Первым делом остановим 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 конфигурацию и приведя файл к следующему виду:
############ WARNING #################### # You do not need an "iface eth0" nor an "iface eth1" stanza. # Setup IP address / netmask / gateway as per your requirements. ####################################### auto lo iface lo inet loopback # # The primary network interface auto bond0 iface bond0 inet static address 192.168.1.10 netmask 255.255.255.0 network 192.168.1.0 gateway 192.168.1.254 slaves eth0 eth1 # jumbo frame support mtu 9000 # Load balancing and fault tolerance bond-mode balance-rr bond-miimon 100 bond-downdelay 200 bond-updelay 200 dns-nameservers 192.168.1.254 dns-search nixcraft.net.in
Сохраняем и выходим. В данном случае опции означают:
- address 192.168.1.10 : ip адрес для bond0.
- netmask 255.255.255.0 : маска сети для bond0.
- network 192.168.1.0 : сетевой адрес для bond0.
- gateway 192.168.1.254 : шлюз по умолчанию для bond0.
- slaves eth0 eth1 : настройка bond0 и привязка двух настоящих сетевых интерфейсов (eth0 and eth1) к нему.
- mtu 9000 : Установка MTU до размера 9000. Смотрите Настройка Linux JumboFrames configuration для подробной информации.
- bond-mode balance-rr : Установка профиля в значение «Load balancing and fault tolerance». Смотрите ниже для более подробной информации.
- bond-miimon 100 : Установка MII link частоты наблюдения в 100 миллисекунд. Это значение определяет как часто будет проверяться состояние соединения на каждом из интерфейсов.
- bond-downdelay 200 : Устанавливает время в 200 миллисекунд ожидания, прежде чем отключить slave в случае отказа соединения. Эта опция действует только на bond-miimon.
- bond-updelay 200 : Устанавливает время в 200 миллисекунд ожидания, прежде чем включить slave после восстановления соединения. Эта опция действует только на bond-miimon.
- dns-nameservers 192.168.1.254 : Устанавливает 192.168.1.254 как dns сервер.
- dns-search nixcraft.net.in : Устанавливает nixcraft.net.in как host-name lookup сервер по умолчанию (опционально).
Немного о других Bonding Policies.
Чуть выше мы установили bounding policy (mode) в значение 0, что означает balance-rr. Другие значения могут быть:
- active-backup или 1: Только один slave активен в единицу времени. Второй slave активируется после аварии с первым slave. Данный режим обеспечивает только отказоустойчивость.
- balance-xor или 2: Применяется хеш политика в виде MAC-источника XOR MAC-получателя. Данный режим обеспечивает отказоустойчивость и балансировку нагрузки.
- broadcast или 3: Передача идёт через все slave. Данный режим обеспечивает только отказоустойчивость.
- 802.3ad или 4: Должен применятся только если коммутатор поддерживает IEEE 802.3ad Dynamic link aggregation.
- balance-tlb или 5: Не требуется поддержка со стороны коммутатора. Исходящий трафик распределяется в зависимости от текущей нагрузки каждого slave. Входящий трафик поступает на текущий slave и если он отказывает, то другой slave берёт работу на себя.
- balance-alb или 6: alb — Adaptive load balancing. Работает как balance-tlb + балансировка нагрузки rlb для IPv4.
Запуск bond0 интерфейса.
После внесения всех изменений в конфигурационные файлы необходимо запустить или перезапустить сервисы сети:
/etc/init.d/networking restart
Проверка работы.
Вводим в терминал следующую команду:
ifconfig
Вывод будет примерно следующим:
bond0 Link encap:Ethernet HWaddr 00:xx:yy:zz:tt:31 inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::208:9bff:fec4:3031/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:9000 Metric:1 RX packets:2414 errors:0 dropped:0 overruns:0 frame:0 TX packets:1559 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:206515 (201.6 KiB) TX bytes:480259 (469.0 KiB) eth0 Link encap:Ethernet HWaddr 00:xx:yy:zz:tt:31 UP BROADCAST RUNNING SLAVE MULTICAST MTU:9000 Metric:1 RX packets:1214 errors:0 dropped:0 overruns:0 frame:0 TX packets:782 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:103318 (100.8 KiB) TX bytes:251419 (245.5 KiB) Memory:fe9e0000-fea00000 eth1 Link encap:Ethernet HWaddr 00:xx:yy:zz:tt:31 UP BROADCAST RUNNING SLAVE MULTICAST MTU:9000 Metric:1 RX packets:1200 errors:0 dropped:0 overruns:0 frame:0 TX packets:777 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:103197 (100.7 KiB) TX bytes:228840 (223.4 KiB) Memory:feae0000-feb00000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)
Используем cat, чтобы посмотреть текущее состояние bond драйвера и сетевых соединений:
В случае успеха вывод будет примерно следующим:
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008) Bonding Mode: load balancing (round-robin) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 200 Down Delay (ms): 200 Slave Interface: eth0 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:xx:yy:zz:tt:31 Slave Interface: eth1 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:xx:yy:zz:tt:30
Автор статьи Platon Puhlechev aka iFalkorr разрешает печатать данный текст.
Дата последней правки: 2013-07-10 10:31:03