Мосты Ethernet


Настройка

Установите пакет "Конфигурирование моста":

ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz

Разрешите использование нескольких ethernet-устройств в вашей машине, добавив следующие строки в /etc/lilo.conf, и перезапустив lilo:

append = "ether=0,0,eth1"

Используйте следующие строки, если у вас будет три интерфейса в мосте: append = "ether=0,0,eth1 ether=0,0,eth2"

Большее количество интерфейсов могут быть настроены добавлением большего количества опций "ether". По умолчанию стандартное ядро Linux ищет одну сетевую карту, и, обнаружив ее, прекращает поиск. Вышеприведенное добавление указывает ядру продолжать поиск дополнительных карт после того, как оно найдет первую. Существует возможность использовать этот параметр при загрузке ядра: linux ether=0,0,eth1

Соответственно для трех интерфейсов: linux ether=0,0,eth1 ether=0,0,eth2

Пересоберите ядро с разрешенной опцией BRIDGING.

Мосту не нужен IP-адрес. Он МОЖЕТ его иметь, но простой мост в нем не нуждается. Чтобы убрать IP-адрес с вашего моста, перейдите в каталог /etc/sysconfig/network-scripts/ (для систем с дистрибутивом RedHat) и скопируйте файл ifcfg-lo0 в ifcfg-eth0 и ifcfg-eth1. В этих двух файлах измените строку ``DEVICE=lo'' на ``DEVICE=eth0'' и ``DEVICE=eth1'' соответственно. В других дистрибутивах эта процедура может отличаться - сделайте то, что нужно сделать, чтобы достичь этого же результата! Если у вас больше двух интерфейсов на мосте, то скопируйте и настройте соответствующие конфигурации всем интерфейсам.

Перезагрузитесь с новым ядром, в котором разрешены мосты, и убедитесь в том, что интерфейсы не получили IP-адресов.

После того, как система загрузится, установите картам режим "promisc", чтобы они обрабатывали каждый пакет, проходящий по сети:

ifconfig eth0 promisc ; ifconfig eth1 promisc
Все интерфейсы, подключенные к сетевым сегментам, нуждающимся в этом мосте, должны быть переключены в режим "promisc".
Включите мост, используя команду brcfg:
brcfg -ena
Проверьте, различается ли трафик на интерфейсах:
tcpdump -i eth0      (в одном окне)
tcpdump -i eth1      (в другом окне)
Запустите tcpdump на другой машине, чтобы проверить, правильно ли мост отделяет один сегмент сети от другого.
Общие проблемы
Вопрос Я получаю сообщение
ioctl(SIOCGIFBR) failed: Package not installed
Ошибка ioctl(SIOCGIFBR): Пакет не установлен
Что это означает?
Ответ
В ваше ядро не встроена поддержка мостов. Установите ядро версии 2.0 или новее, и пересоберите его со включенной опцией Ethernet-МОСТ (BRIDGING).

Вопрос Машины в одном сегменте не видят другой сегмент даже при помощи ping!
Ответ
Включили ли вы мост командой ``brcfg -ena''? (brcfg должен вывести сообщение ``bridging is ENABLED'')
Установили ли вы интерфейсы в режим "promisc"? (используйте команду ``ifconfig''. Флаг ``PROMISC'' должен быть установлен на всех интерфейсах.)
Если вы используете адаптеры, поддерживающие разные типы соединений (кабели), убедитесь в том, что выбран правильный. Возможно вам придется использовать программу настройки, поставляемую вместе с картой.
Вопрос У меня не работают команды telnet/ftp с машины с мостом! Почему?
Ответ
Это происходит потому, что ни один интерфейс на мосте не имеет IP-адреса. Мост должен быть прозрачен для сети.
Вопрос
Как нужно настраивать маршрутизацию в мосте?
Ответ
Никак! Все маршрутизация автоматически настраивается ядром. Чтобы узнать ethernet-адреса, обрабатываемые мостом, используйте программу brcfg в режиме отладки:
brcfg -deb
Вопрос  Мост вроде бы работает, но почему "traceroute" не показывает мост, как часть пути соединения?
Ответ
"Traceroute" не должен показывать мост, как часть пути соединения, из-за специфической сути самого моста. Мост не должен быть виден сети.
Вопрос Нужно ли включать опцию IP_FORWARD при сборке ядра?
Ответ
Нет. Код моста в ядре работает на уровне транспорта пакетов. IP_FORWARD предназначен для шлюзов, в которых каждому интерфейсу назначается IP-адрес.
Вопрос  Почему физические ethernet-адреса интерфейсов идентичны (так показывает программа ``brcfg'')? Не должны ли они различаться?
Ответ Нет. Каждый интерфейс на мосте получает одинаковый адрес от кода управления мостом в ядре.
Вопрос  Опция "Ethernet-мосты (Bridging)" не появляется при конфигурировании ядра. Как же мне ее включить?
Ответ
В процессе конфигурирования ядра ответьте "Да" (Y) на вопрос "Запрашивать установку экспериментальных и/или не полностью готовых частей кода/драйверов" (Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]".
Вопрос Большое количество хабов (4 и больше), соединенных последовательно один за другим, вызывают задержки в сети ethernet. Какой эффект произведет мост на сеть, в котором используется несколько хабов?
Ответ
Мост аннулирует эффект нескольких хабов. Мост обрабатывает пакеты по-другому, не так как хаб, поэтому не может вызвать проблем с задержками.
Вопрос Может ли мост работать между 10- и 100-мегабитным сегментами? Замедлит ли подобная конфигурация трафик на быстром сегменте?
Ответ
Да, мост может соединить 10- и 100-мегабитные сегменты. Так как сетевая карта на быстрой части сети поддерживает 100 Мбит, TCP занимается всем остальным. Пакеты, идущие с хоста в 100-мегабитной части сети на хост, находящийся в 10-мегабитной части, идут, конечно, со скоростью 10 мегабит. На трафик, идущий внутри 100 мегабитной части сети (включая трафик через мост из 100Мб в 100Мб сегмент) медленная сеть влияния не оказывает.