Linux bridge с несколькими физическими устройствами, стоимость STP и несколько основных уточнений

Привет всем!

Прохожу курс “от 0 до Linux админа” на сайте YODO и столкнулся с проблемой. У меня есть хост с KVM, который оснащён четырёхпортовой картой Ethernet, и я собираюсь добавить к машине 2x25GB волоконные сетевые порты. Три порта Ethernet объединены в bond с использованием 802.3ad (LACP active) и подключены к коммутатору. Четвёртый одинокий Ethernet-порт используется для доступа к хосту, когда машина будет переключена в прод. Волоконные порты будут объединены в LACP для верхнего коммутатора стеллажа и предназначены для доступа к виртуальным машинам при переключении на прод.

Сейчас у меня только один мост, и только одинокий Ethernet-порт подключен к нему, IP-адрес хоста находится на этом мосту. В итоге я хотел бы сохранить bond Ethernet-портов как резерв в случае сбоя коммутатора или использовать их для нужд виртуальных машин с низкой пропускной способностью. Минимум один Ethernet-порт должен быть зарезервирован для доступа к хосту.

У меня возникли несколько вопросов:

  1. Останутся ли STP-пакеты внутри моста или будут отправлены в сеть? Будет ли STP объявляться коммутаторам? Я не совсем понимаю, как STP работает в Linux-мостах. У меня на коммутаторах настроен PVRST, а Linux-мосты, насколько я знаю, поддерживают только протокол STP. Мне бы хотелось, чтобы это дерево оставалось внутри машины, а коммутаторы занимались правильным построением дерева в сети.

  2. Можно ли использовать стоимость пути (path cost) в качестве механизма резервирования?

  3. Верно ли я предполагаю, что если я оставлю один мост и подключу к нему bond Ethernet, волоконные порты и одинокий управляемый порт, использовав стоимость пути, STP сможет выбрать маршруты при сбое, и все пакеты предпочтительно будут проходить через менее затратный путь (волоконные порты), затем bond из трёх портов Ethernet (средняя стоимость), а затем одинокий Ethernet-порт (наивысшая стоимость)? Понимаю, что мне придётся вручную установить стоимость пути, так как по умолчанию она равна 100.

  4. Если я пойду по этому пути, будет ли возможностью чтобы выбранные виртуальные машины проходили через bond Ethernet, в то время как другие виртуальные машины использовали волоконные порты? Возможно, я что-то упускаю.

Заранее спасибо! Сеть у меня плоская, без VLAN-ов.

Привет! Рад помочь с твоими вопросами по настройке сети.

1. Останутся ли STP-пакеты внутри моста?

Да, STP (Spanning Tree Protocol) при использовании в Linux-мостах будет работать так, как ты ожидаешь. STP-пакеты будут отправляться внутри моста и не будут видны за его пределами. Если у тебя на коммутаторах настроен PVRST, это не должно вызывать проблем, поскольку STP на уровне Linux будет управлять петлями внутри машины, не вмешиваясь в работу твоих коммутаторов.

2. Можно ли использовать стоимость пути (path cost) в качестве механизма резервирования?

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

3. Будет ли STP выбирать маршруты при сбое?

Ты правильно понимаешь! Если ты настроишь стоимость пути правильно, STP будет выбирать более «дешёвые» пути для передачи пакетов. В такой конфигурации пакеты будут предпочитаться через волоконные порты, затем через bond Ethernet, и только в крайнем случае - через одинокий Ethernet-порт, который будет иметь наивысшую стоимость. Не забудь вручную установить стоимости путей, ведь по умолчанию они равны 100.

4. Возможность маршрутизации для виртуальных машин?

Да, ты можешь настроить так, чтобы некоторые виртуальные машины использовали bond Ethernet, а другие - волоконные порты. Это может потребовать дополнительной настройки сетевых интерфейсов на виртуальных машинах и, возможно, использования VLAN (хотя ты упомянул, что у тебя плоская сеть). Каждая виртуальная машина может быть подключена к нужному ей порту, в зависимости от твоих требований к проходимости и надежности.

Если у тебя есть еще вопросы или нужно что-то прояснить, не стесняйся задавать! Удачи с твоим курсом. . Я ответил на ваш вопрос?

Привет!

Короче, я тут замахнулся на тему с Linux bridge и решил разобраться с несколькими физическими устройствами, поигрался со STP (Spanning Tree Protocol), чтобы всё это чудо правильно работало. Но, как водится, всё пошло не по плану.

Я пытался настроить мост между двумя физическими интерфейсами, но чёрт побери, ничего не получалось! Сначала думал, что проблема в команде, с помощью которой создавал bridge, но даже когда всё вроде правильно указывал, сети между устройствами не сходились. ARP-пакеты шлются, а ответа нет. Пэкод не пойдёт! Да и STP, знаете ли, не работал как надо: всё время один из интерфейсов заблокировался, а второй – не отвечал.

Я вроде уже все варианты перепробовал: и настройки SHUTDOWN, и другие команды, но с толком ничего не вышло. Баловался с конфигами, менял порты, да и вообще, всё как в сказке – как ни крути, результат всё равно нулевой.

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

Так что если у кого-то есть советы, как победить эту задачу, буду рад услышать!

Привет!

Ситуация, которую ты описываешь, довольно распространенная при работе с Linux bridge и STP. Давай попробуем поразмышлять над тем, что могло пойти не так.

  1. Проверка настроек bridge: Убедись, что оба физических интерфейса правильно добавлены в твой bridge. Используй команду brctl show, чтобы проверить текущие настройки мостов.

  2. STP и интерфейсы: Возможно, STP действительно блокирует один из интерфейсов. Если один интерфейс заблокировался, попробуй отключить STP на время и посмотреть, как ведут себя сети. Для этого можно использовать команду brctl stp имя_моста off.

  3. Проверка состояния интерфейсов: Убедись, что оба интерфейса находятся в состоянии “UP”. Используй ip link show для просмотра состояния интерфейсов.

  4. ARP и фильтрация: Если ARP-пакеты шлются, но ответа нет, это может означать, что что-то блокирует трафик. Проверь настройки firewall (iptables или nftables), чтобы убедиться, что ничего не фильтрует пакеты.

  5. Логи и отладка: Загляни в системные логи (/var/log/syslog или dmesg). Возможно, там есть подсказки о том, что именно происходит.

  6. Курсы и документация: Отлично, что ты нашел курсы на Yodo! Это может действительно помочь разобраться с тонкостями настройки. Возможно, стоят на самом деле для глубже погружения в тему.

Если всё это не поможет, постарайся описать конкретные команды и настройки, которые ты использовал. Будем разбираться вместе! Удачи! . Я ответил на ваш вопрос?