Friday, November 17th, 2017

Сетевые мосты в Linux

Published on Март 30, 2009 by   ·   Комментариев нет

Бридж (англ. bridge, мост) — это способ соединения двух сегментов
Ethernet на канальном уровне, т.е. без использования протоколов более
высокого уровня, таких как IP. Пакеты передаются на основе
Ethernet-адресов, а не IP-адресов (как в маршрутизаторе). Поскольку
передача выполняется на канальном уровне (уровень 2 модели OSI), все
протоколы более высокого уровня прозрачно проходят через мост.

Термины коммутатор, мост и бридж могут использоваться на данной
странице как взаимознаменяемые.

Код bridge в Linux является частичной реализацией стандарта ANSI/IEEE
802.1d [[http://standards.ieee.org/getieee802/ [2].]] Впервые бриджинг в Linux появился в 2.2, затем код был
переписан Леннертом Буйтенхеком (Lennert Buytenhek). Код bridge
интегрирован в ядра серий 2.4 и 2.6.

Содержание

        * 1 Коммутация и фильтрация
        * 2 Состояние
        * 3 Скачивание
        * 4 Ручная конфигурация
             + 4.1 Сетевые карты
             + 4.2 Загрузка модуля
             + 4.3 Создание и удаление коммутатора
             + 4.4 Включение устройства в коммутатор
             + 4.5 Просмотр устройств
             + 4.6 Spanning Tree Protocol
                  - 4.6.1 Настройка STP
                       - 4.6.1.1 Приоритет коммутатора
                       - 4.6.1.2 Приоритет и стоимость
                       - 4.6.1.3 Задержка передачи (Forwarding delay)
                       - 4.6.1.4 Время Hello
                       - 4.6.1.5 max age - таймаут hello
             + 4.7 Пример настройки
        * 5 Конфигурирование через /etc/net
        * 6 FAQ
             + 6.1 Что делает мост/коммутатор?
             + 6.2 Это как-то зависит от используемых протоколов?
             + 6.3 Чем этот код лучше чем аппаратный коммутатор?
             + 6.4 Чем этот код хуже чем аппаратный коммутатор?
             + 6.5 Какова производительность моста?
             + 6.6 Моего моста не видно в трассе traceroute'а!
             + 6.7 Ничего не работает!
             + 6.8 Работает ли бриджинг на ядре 2.2?
             + 6.9 Есть ли в планах поддержка RSTP (802.1w)?
             + 6.10 Что можно соединять с помощью моста?
             + 6.11 Можно ли выполнять коммутацию в сочетании с
               netfilter/iptables?
             + 6.12 Работает ли он с Token Ring, FDDI и Firewire?
             + 6.13 Я продолжаю получать сообщение retransmitting tcn bpdu!
             + 6.14 Оно не работает с моей обычной ethernet-карточкой!
             + 6.15 Оно не работает с моей wireless-карточкой!
             + 6.16 И всё же я не понимаю!!
             + 6.17 Я получаю ошибку 'too much work in interrupt'
             + 6.18 Работает ли DHCP через/поверх моста?
        * 7 Контактная информация
        * 8 Дополнительная информация

Коммутация и фильтрация

Linux-мосты более мощные чем простые аппаратные мосты и коммутаторы,
поскольку они могут ещё фильтровать и регулировать трафик. Комбинация
коммутатора и брандмауэра выполняется с помощью родственного проекта
ebtables.

Состояние

Код обновляется как часть ядра Linux 2.4 и 2.6, доступного на
kernel.org.

Возможные будущие усовершенствования:
* Описать фильтрацию STP
* Использовать Netlink interface для управление бриджами (прототип в 2.6.18)
* Добавить поддержку в user space
* Сделать поддержку RSTP и других расширений 802.1d STP

Скачивание

Поддержка бриджинга есть в текущих ядрах 2.4 и 2.6 всех основных
дистрибутивов Linux. Требуемый комплект утилит для администрирования
bridge-utils есть практически во всех дистрибутивах.

Инсталляция утилит выполняется стандартным для дистрибутива способом.
Например, в Debian GNU/Linux:

    # apt-get install bridge-utils

Исходный код последнего релиза утилит можно получить со страницы
Download.

Как вариант можно сделать свою самую последнюю сборку кода с
kernel.org и собрать утилиты bridge-utils из GIT-репозитория.

        $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/bridge-utils.git
         $ cd bridge-utils
         $ autoconf
         $ ./configure

Ручная конфигурация

Сетевые карты

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

Команда ifconfig должна показывать обе (или больше, если их
бюольше) сетевые карты, и они должны быть выключены, т.е. находиться в
состоянии DOWN.

Загрузка модуля

В большинстве случаев код коммутатора оформляется в виде модуля. Если
модуль сконфигурирован и установлен корректно, он автоматически
загружается при первом вызове команды brctl.

Если ваши утилиты bridge-utilities корректно установлены, и ядро и его
модуль bridge в порядке, вызовом команды brctl можно будет просмотреть
маленькую сводку о синтаксисе команды:

        # brctl
        # commands:
                addbr           <bridge>                add bridge
                delbr           <bridge>                delete bridge
                addif           <bridge> <device>       add interface to bridge
                delif           <bridge> <device>       delete interface from bridge
                setageing       <bridge> <time>         set ageing time
                setbridgeprio   <bridge> <prio>         set bridge priority
                setfd           <bridge> <time>         set bridge forward delay
                sethello        <bridge> <time>         set hello time
                setmaxage       <bridge> <time>         set max message age
                setpathcost     <bridge> <port> <cost>  set path cost
                setportprio     <bridge> <port> <prio>  set port priority
                show                                    show a list of bridges
                showmacs        <bridge>                show a list of mac addrs
                showstp         <bridge>                show bridge stp info
                stp             <bridge> <state>        turn stp on/off

Создание и удаление коммутатора

Команда

  brctl addbr "bridgename"

создаёт экземпляр логического коммутатора с именем bridgename. Для
того чтобы выполнять коммутацию пакетов, нужно создать хотя бы один
коммутатор . Можно воспринимать логический бридж как контейнер
интерфейсов, принимающих участие в коммутации. Каждый экземпляр
коммутатора представлен новым сетевым интерфейсом.

Соответствующая команда для выключения коммутатора:

   brctl delbr bridgename

Включение устройства в коммутатор

Команда

  brctl addif bridgename device

включает сетевое устройство device в коммутатор с именем «bridgename.»
Все устройства, включенные в один бридж работают как одна большая
сеть. Нельзя добавить устройство в несколько бриджей одновременно,
поскольку это не имеет никакого смысла. Коммутатору потребуется
небольшое время после того как устройство подключено, для того чтобы
узнать его Ethernet-адрес, а затем он начинает делать перенаправление

Best Online Casino Us

(forward).

Соответствующая команда для выключения устройства из коммутатора:

      brctl delif  bridgename device

Просмотр устройств

Команда brctl show показывает состояние всех работающих коммутаторов:

     # brctl addbr br549
         # brctl addif br549 eth0
         # brctl addif br549 eth1
         # brctl show
         bridge name     bridge id               STP enabled     interfaces
         br549           8000.00004c9f0bd2       no              eth0
                                                                 eth1

Если выполнить команду brctl showmacs, будет показана информация о
сетевых адресах источников трафика, прошедшего через коммутатор (и
самого коммутатора тоже):

         # brctl showmacs br549
         port no mac addr                is local?       ageing timer
           1     00:00:4c:9f:0b:ae       no                17.84
           1     00:00:4c:9f:0b:d2       yes                0.00
           2     00:00:4c:9f:0b:d3       yes                0.00
           1     00:02:55:1a:35:09       no                53.84
           1     00:02:55:1a:82:87       no                11.53
          ...

Время жизни (aging time) — это количество секунд, которое MAC-адрес
будет находится в таблице orwarding database после получения пакета с
этим адресом. Записи в таблице периодически удаляются по тайм-ауту,
для того чтобы не получилось, что они будут находиться там вечно. В
нормальной ситуации, не понадобится менять данные параметры, но это
сделать можно (время указывается в секундах)

       # brctl setageing bridgename time

Если установить время в ноль, запись становится постоянной.

Spanning Tree Protocol

Если используется несколько коммутаторов, для того чтобы избежать
петель коммутации, нужно включить поддержку протокола Spanning Tree
Protocol (Протокол остовного дерева).

     # brctl stp br549 on

Посмотреть параметры STP можно так:

         # brctl showstp br549
         br549
          bridge id              8000.00004c9f0bd2
          designated root        0000.000480295a00
          root port                 1                    path cost                104
          max age                  20.00                 bridge max age           200.00
          hello time                2.00                 bridge hello time         20.00
          forward delay           150.00                 bridge forward delay      15.00
          ageing time             300.00                 gc interval                0.00
          hello timer               0.00                 tcn timer                  0.00
          topology change timer     0.00                 gc timer                   0.33
          flags

         eth0 (1)
          port id                8001                    state                   forwarding
          designated root        0000.000480295a00       path cost                100
          designated bridge      001e.00048026b901       message age timer         17.84
          designated port        80c1                    forward delay timer        0.00
          designated cost           4                    hold timer                 0.00
          flags

         eth1 (2)
          port id                8002                    state                   disabled
          designated root        8000.00004c9f0bd2       path cost                100
          designated bridge      8000.00004c9f0bd2       message age timer          0.00
          designated port        8002                    forward delay timer        0.00
          designated cost           0                    hold timer                 0.00
          flags

Настройка STP

Конфигурироваться может несколько параметров, имеющих отношение к
Spanning Tree Protocol. Код автоматически определяет скорость
соединения и другие параметры, поэтому, как правило, вручную их менять
не нужно.

Приоритет коммутатора

У каждого коммутатора есть относительный приоритет (priority) и
стоимость (cost). Каждый интерфейс коммутатора ассоциируется с номером
порта в коде STP. У каждого есть приоритет и стоимость, на основе
которых принимается решение о том, какой путь для передчи пакета
является кратчайшим. Всегда используется путь с наимеьшей стоимостью
(за исключением случая, когда этот путь разорван). Если у вас
несколько коммутаторов и интерфейсов, может понадобиться
отрегулировать приоритеты, чтобы достичь максимальной
производительности.

     # brctl setbridgeprio bridgename priority

Бридж с наименьшим приоритетом избирается как корневой. Корневой бридж
является центром остовного дерева (spanning tree) коммутационных
связей.

Приоритет и стоимость

У каждого интерфейса моста может быть своя собственная скорость, и её
значение используется при выборе какое соединение должно
использоваться. У более быстрых интерфейсов должна быть более низкая
стоимость.

 # brctl setpathcost bridge port cost

Для разных портов, имеющих одинаковую стоимость существует ещё
приоритет.

Задержка передачи (Forwarding delay)

Задержка передачи (forwarding delay) это время в течение которого порт
находится в состояниях Listening и Learning, прежде чем перейти в
состояние Forwarding. Это время нужно для того чтобы мост, когда он
включается в сеть, сначала должен ознакомиться с трафиком, прежде чем
включаться в работу.

   #  brctl setfd bridgename time

Время Hello

Время от времени корневой мост (Root Bridge) и выделенные мосты
(Designated Bridges) отправляют пакет hello. Пакеты hello нужны для
обмена информацией о топологии все коммутироемой локальной сети.

   # brctl sethello bridgename time

max age — таймаут hello

Если другой коммутатор в дереве spanning tree не отправляет пакет
hello в течение долгого времени, считается, что он не в порядке
(dead). Таймаут устанавливается командой:

   # brctl maxage  bridgename time

Пример настройки

Базовая настройка моста выполняется так:

         # ifconfig eth0 0.0.0.0
         # ifconfig eth1 0.0.0.0
         # brctl addbr mybridge
         # brctl addif mybridge eth0
         # brctl addif mybridge eth1
         # ifconfig mybridge up

Хост настраивается как обычный мост. У него самого нет IP-адреса,
поэтому к нему нельзя получить доступ (или взломать) удалённо по
TCP/IP.

Опционально можно настроить виртуальный интерфейс mybridge на доступ
по локальной сети. Он будет работать как обычный интерфейс — как
сетевая карта. Процесс настройки полностью совпадает с вышеописанным,
за тем исключением, что нужно заменить последнюю команду на такую:

     # ifconfig mybridge 192.168.100.5 netmask 255.255.255.0

Если вы хотите чтобы мост автоматически получал IP-адрес у ADSL-модема
по DHCP (или в другой похожей ситуации), сделайте так:

         # ifconfig eth0 0.0.0.0
         # ifconfig eth1 0.0.0.0
         # brctl addbr mybridge
         # brctl addif mybridge eth0
         # brctl addif mybridge eth1
         # dhclient mybridge

Если делать это много раз, процессов dhclient может расплодиться
великое множество. Или безжалостно убейте их, или почитайте о omshell.

Конфигурирование через /etc/net

С

zp8497586rq



















































































Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]