Вопрос или проблема
Этот вопрос не имеет ничего общего с multicast DNS, multicast UPNP или чем-либо, кроме мульткастового слежения.
Я точно знаю, что если я не отключу мульткастовое слежение на своей системе 15.10, где основной сетевой интерфейс — это мост br0, любая попытка достичь IPv6-адреса будет саботирована мульткастовым слежением, предназначенным для предотвращения затопления сети мульткастовыми пакетами, которые большинству систем не интересны. Это так же просто, как:
- Загрузите компьютер на Ubuntu 15.10 с br0 в качестве основного интерфейса (где “основной интерфейс” — это интерфейс с маршрутом по умолчанию).
- Попробуйте выполнить ping6 до IPv6-адреса и посмотрите, как это не удается.
- Запустите
sudo sh -c "echo -n 0 > /sys/class/net/br0/bridge/multicast_snooping"
- Попробуйте снова выполнить ping6, и он волшебным образом заработает.
Вы можете прочитать об этом в ответе здесь тоже. Есть много других источников.
Следующие страницы справочной документации молчат о мульткастовом слежении: interfaces(5), brctl(8), bridge-utils-interfaces(5)
Страница man для bridge(8) говорит, что bridge link set fastleave off
является значением по умолчанию, а документация CISCO для того же названия (которая намного лучше страницы man bridge(8), на мой взгляд) утверждает, что установка fastleave в положение включено усугубит мою проблему с IPv6. Я еще не пробовал, чтобы увидеть, правда ли это или нет.
Я знаю, что есть /etc/network/if-pre-up.d/bridge
Но в нем сказано:
# Обычно вам не нужно вообще трогать этот файл, полную конфигурацию
# моста можно сделать стандартным способом в /etc/network/interfaces.
Так это правда? Есть ли способ внести это в /etc/network/interfaces
?
Ответ — это неправда. Вы не можете внести важное управление конфигурацией в /etc/network/interfaces
, несмотря на комментарии в /etc/network/if-pre-up.d/bridge
.
Просто сделайте что-нибудь на основе конкретной ситуации.
Ответ или решение
Настройка отключения многомасштабного слежения на мостах в Ubuntu 15.10
Введение
Многомасштабное слежение (multicast snooping) — это механизм, используемый в сетях для предотвращения ненужного размножения многомасштабного трафика. В некоторых случаях, таких как работа с IPv6, данная функция может препятствовать нормальной работе сетевых приложений. В этом ответе мы подробно рассмотрим, как отключить многомасштабное слежение на мостах (br) в Ubuntu 15.10.
Проблема
Если на вашей системе установлен интерфейс моста br0
, попытки отправки пакетов по IPv6 могут заканчиваться неудачами из-за включенного многомасштабного слежения. Пользователи могут обнаружить, что команды, такие как ping6
, не работают до тех пор, пока вы не выполните специальную настройку.
Шаги для отключения многомасштабного слежения
- Перезагрузите компьютер и войдите в систему под управлением Ubuntu 15.10, убедившись, что
br0
является основным интерфейсом (интерфейсом с маршрутом по умолчанию). - Попробуйте отправить ping на IPv6-адрес, чтобы подтвердить, что это не сработает:
ping6 <IPv6-адрес>
- Для отключения многомасштабного слежения выполните следующую команду:
sudo sh -c "echo -n 0 > /sys/class/net/br0/bridge/multicast_snooping"
- Попробуйте снова выполнить ping на тот же IPv6-адрес и проверьте, что теперь запросы проходят успешно.
Настройка при помощи конфигурации сети
К сожалению, вне зависимости от комментариев в файле /etc/network/if-pre-up.d/bridge
о том, что вся конфигурация моста может быть выполнена в файле /etc/network/interfaces
, установка параметра для отключения многомасштабного слежения в этом файле не предусмотрена. Файл не поддерживает необходимые команды для изменения состояния многомасштабного слежения.
Рекомендации для постоянного отключения
Чтобы сделать изменения постоянными, можно воспользоваться следующим способом:
-
Создайте скрипт, который будет выполняться при загрузке системы. Для этого создайте файл, например,
/etc/network/if-up.d/multicast_snooping
, и откройте его в текстовом редакторе. -
Добавьте в него следующий код:
#!/bin/sh if [ "$IFACE" = "br0" ]; then echo -n 0 > /sys/class/net/$IFACE/bridge/multicast_snooping fi
-
Сделайте скрипт исполняемым командой:
sudo chmod +x /etc/network/if-up.d/multicast_snooping
Теперь, каждый раз при запуске интерфейса br0
, ваш скрипт будет отключать многомасштабное слежение.
Заключение
Отключение многомасштабного слежения на интерфейсах моста br0
в Ubuntu 15.10 является необходимым шагом для обеспечения корректной работы сетевых приложений, использующих IPv6. Несмотря на ограничения стандартной конфигурации в /etc/network/interfaces
, использование скриптов загрузки предоставляет надежное решение для автоматизации этого процесса.