Мини-HOWTO: Мосты Ethernet

Christopher Cole

Перевод: Станислав Рогин, ASPLinux

Аннотация

В этом документе описывается процесс настройки ethernet-моста. Что такое ethernet-мост? Ethernet-мост - это устройство, контролирующее пакеты данных, передаваемых в подсети, существующее для уменьшения нагрузки на сеть. Мост обычно устанавливается между двумя отдельными группами компьютеров, которые часто общаются внутри группы, но значительно реже между группами. Хороший пример использования моста - группа Макинтошей и группа Unix-машин. Обе этих группы достаточно плотно общаются между собой, перегружая сеть, и, в результате, этого мешают другим машинам передавать данные. Мост должен быть помещен между этими двумя группами. Задачей моста будет следующее: определять местонахождение получателя каждого пакета данных, чтобы отфильтровывать пакеты, которые не должны попадать в противоположный от отправителя сегмент ethernet. Результатом этого будет более быстрая и незагруженная сеть с меньшим количеством столкновений пакетов.


Настройка

  1. Установите пакет "Конфигурирование моста":
    ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz

  2. Разрешите использование нескольких 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
            

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

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

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

  6. После того, как система загрузится, установите картам режим "promisc", чтобы они обрабатывали каждый пакет, проходящий по сети:
    ifconfig eth0 promisc ; ifconfig eth1 promisc
            
    Все интерфейсы, подключенные к сетевым сегментам, нуждающимся в этом мосте, должны быть переключены в режим "promisc".

  7. Включите мост, используя команду brcfg:
    brcfg -ena
            

  8. Проверьте, различается ли трафик на интерфейсах:
    tcpdump -i eth0      (в одном окне)
    tcpdump -i eth1      (в другом окне)
            

  9. Запустите tcpdump на другой машине, чтобы проверить, правильно ли мост отделяет один сегмент сети от другого.


Общие проблемы

  1. Вопрос

    Я получаю сообщение
    ioctl(SIOCGIFBR) failed: Package not installed
    Ошибка ioctl(SIOCGIFBR): Пакет не установлен
            
    Что это означает?

    Ответ

    В ваше ядро не встроена поддержка мостов. Установите ядро версии 2.0 или новее, и пересоберите его со включенной опцией Ethernet-МОСТ (BRIDGING).

  2. Вопрос

    Машины в одном сегменте не видят другой сегмент даже при помощи ping!

    Ответ

    • Включили ли вы мост командой ``brcfg -ena''? (brcfg должен вывести сообщение ``bridging is ENABLED'')

    • Установили ли вы интерфейсы в режим "promisc"? (используйте команду ``ifconfig''. Флаг ``PROMISC'' должен быть установлен на всех интерфейсах.)

    • Если вы используете адаптеры, поддерживающие разные типы соединений (кабели), убедитесь в том, что выбран правильный. Возможно вам придется использовать программу настройки, поставляемую вместе с картой.

  3. Вопрос

    У меня не работают команды telnet/ftp с машины с мостом! Почему?

    Ответ

    Это происходит потому, что ни один интерфейс на мосте не имеет IP-адреса. Мост должен быть прозрачен для сети.

  4. Вопрос

    Как нужно настраивать маршрутизацию в мосте?

    Ответ

    Никак! Все маршрутизация автоматически настраивается ядром. Чтобы узнать ethernet-адреса, обрабатываемые мостом, используйте программу brcfg в режиме отладки:
    brcfg -deb
            

  5. Вопрос

    Мост вроде бы работает, но почему "traceroute" не показывает мост, как часть пути соединения?

    Ответ

    "Traceroute" не должен показывать мост, как часть пути соединения, из-за специфической сути самого моста. Мост не должен быть виден сети.

  6. Вопрос

    Нужно ли включать опцию IP_FORWARD при сборке ядра?

    Ответ

    Нет. Код моста в ядре работает на уровне транспорта пакетов. IP_FORWARD предназначен для шлюзов, в которых каждому интерфейсу назначается IP-адрес.

  7. Вопрос

    Почему физические ethernet-адреса интерфейсов идентичны (так показывает программа ``brcfg'')? Не должны ли они различаться?

    Ответ

    Нет. Каждый интерфейс на мосте получает одинаковый адрес от кода управления мостом в ядре.

  8. Вопрос

    Опция "Ethernet-мосты (Bridging)" не появляется при конфигурировании ядра. Как же мне ее включить?

    Ответ

    В процессе конфигурирования ядра ответьте "Да" (Y) на вопрос "Запрашивать установку экспериментальных и/или не полностью готовых частей кода/драйверов" (Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]".

  9. Вопрос

    Большое количество хабов (4 и больше), соединенных последовательно один за другим, вызывают задержки в сети ethernet. Какой эффект произведет мост на сеть, в котором используется несколько хабов?

    Ответ

    Мост аннулирует эффект нескольких хабов. Мост обрабатывает пакеты по-другому, не так как хаб, поэтому не может вызвать проблем с задержками.

  10. Вопрос

    Может ли мост работать между 10- и 100-мегабитным сегментами? Замедлит ли подобная конфигурация трафик на быстром сегменте?

    Ответ

    Да, мост может соединить 10- и 100-мегабитные сегменты. Так как сетевая карта на быстрой части сети поддерживает 100 Мбит, TCP занимается всем остальным. Пакеты, идущие с хоста в 100-мегабитной части сети на хост, находящийся в 10-мегабитной части, идут, конечно, со скоростью 10 мегабит. На трафик, идущий внутри 100 мегабитной части сети (включая трафик через мост из 100Мб в 100Мб сегмент) медленная сеть влияния не оказывает.


Авторские права

Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу