Меню Рубрики

Несколько сетевых карт linux

Совместное использование нескольких сетевых интерфейсов в 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. Это позволит обеспечить простую и сбалансированную систему. Установим данное ПО с помощью команды:

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

Сохраним и закроем файл. В данном случае опции обозначают:

  • 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 конфигурацию и приведя файл к следующему виду:

Сохраняем и выходим. В данном случае опции означают:

  • 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

Вывод будет примерно следующим:

Используем cat, чтобы посмотреть текущее состояние bond драйвера и сетевых соединений:

В случае успеха вывод будет примерно следующим:

Автор статьи Platon Puhlechev aka iFalkorr разрешает печатать данный текст.

Источник

Одновременная работа двух сетевых карт

Всем привет. Дебиан 9. Две сетевые карты

привязываю к ним интерфейсы eth0 и eth1

если в /etc/network/interfaces прописать сразу оба интерфейса, то активен и пингуется только eth0

если прописывать по отдельности, то работает и eth0 и eth1 соответственно.

auto eth0 iface eth0 inet static address 192.168.0.121 gateway 192.168.0.228 netmask 255.255.252.0

auto eth1 iface eth0 inet static address 192.168.0.122 netmask 255.255.252.0

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

Зачем две сетевые карты? Тем более в одной подсети IPv4? Если нужна избыточность, то нужна агрегация LACP, если нужно два айпишника, то можно привязать к одной сетевухе, алиасингом или еще чем-то.

Опечатка же во втором конфиге?

auto eth1 iface eth0 inet static address 192.168.0.122 netmask 255.255.252.0

Русские форумы такие форумы?

Только тут тебе расскажут, почему ты -мудак- не прав?

Раскажи чего ты хочешь этим добиться?

Чтобы понять почему идея гавно, надо чутка почитать как именно линукс роутит пакеты, в реальном мире, для каждого сконфигурированного интерфейса создаётся маршрут x.x.x.x/netmask означающий, что на адреса в этой подсети слать пакеты напрямую получателям, в твоём примере создастся: 192.168.0.0/22 dev eth0 proto kernel scope link src 192.168.0.121
Это значит, что всё исходящее в 192.168.0.0/22 должно уходить с eth0, а всё приходящее на eth0 из 192.168.0.0/22 адресовано нам. Когда ты создаешь второй интерфейс с адресом в той же сети, ещё один маршрут для подсети 192.168.0.0/22 создасться не может, т.к. её уже обслуживает eth0. Все входящие пакеты на 192.168.0.122 будут приходить на eth1, а в соотвествии с таблицей маршрутизации за 192.168.0.0/22 ответственный eth0, такие пакеты по дефолту считаются не парвильными и называются «марсианскими» (martian), если проверишь dmesg то наверняка увидишь там такие записи. Кароче в реальном мире твоя схема кривая и работать не должно, но обойти эти ограничения можно, но это ппц костыли и я бы за такое ими тебя и ***покарал***, например ты можешь включить Promiscuous режим на eth1, тогда ядро будет пропускать марсианские пакеты и твоё поделие начнёт подавать признаки жизни, но исходящий трафик всё равно будет ходить через eth0 по умолчанию.

Re: Русские форумы такие форумы?

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

но исходящий трафик всё равно будет ходить через eth0 по умолчанию

А что мешает сделать «ip ro add 192.168.0.32/28 dev eth1 scope link src 192.168.0.122» ? Пусть к .32-.47 ходят через eth1 !

PS любимые грабли нужно знать по именам: rp_filter, arp_accept, arp_announce, arp_filter, arp_ignore

Чёта не понял про грабли))) Я бы в ситуации ТС создал ещё одну таблицу маршрутизации в /etc/iproute2/rt_tables и загнал туда eth1 правилом. Хотя всё равно решение плохое и так делать не надо

Я бы в ситуации ТС создал ещё одну таблицу маршрутизации

Он пока с одной не разобрался.

В такой ситуации ТС может просто реализовать только статическую схему, в которой часть хостов в сети будет адресоваться через eth0, а часть через eth1, просто добавив маршруты. Например, dgw через eth1, а все остальное через eth0, или половину сети через один интерфейс, а остальных через другой.

Но ему нужно пройти грабли которые специально разложены на пути для тех, кто начинает использовать несколько самостоятельных интерфейсов в одной подсети. Это не запрещено, но ты должен доказать системе, что ты понимаешь на что подписался. Это как раз и нужно выразить через sysctl net.ipv4.conf..

Re: Русские форумы такие форумы?

А белорусы с казахами чё ?

Re: Русские форумы такие форумы?

  1. мудаком его никто не называл
  2. неправым тоже
  3. но, о ужас! презренные хелперы-помогаторы дерзнули объяснять, как может (должно) сделать и стали требовать дополнительных пояснений (ну, тупые, ага)
  4. да — «Русские форумы такие форумы» ©

Источник

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

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

  • Несколько мониторов в linux
  • Несколько дистрибутивов linux на одной флешке
  • Несколько ip адресов на одном интерфейсе linux
  • Неправильный пароль kali linux
  • Необходимые программы для linux