igor@0: \section{Программный мост в Linux} igor@0: igor@0: \textbf{Бридж} (англ. \textit{bridge}, мост) — это способ соединения двух сегментов Ethernet на канальном уровне, т.е. без использования протоколов более высокого уровня, таких как IP. Пакеты передаются на основе Ethernet-адресов, а не IP-адресов (как в маршрутизаторе). Поскольку передача выполняется на канальном уровне (уровень 2 модели OSI), все протоколы более высокого уровня прозрачно проходят через мост. igor@0: igor@0: Термины коммутатор, мост и бридж могут использоваться на данной странице как взаимознаменяемые. igor@0: igor@0: Код bridge в Linux является частичной реализацией стандарта \htmladdnormallinkfoot{ANSI/IEEE 802.1d}{http://standards.ieee.org/getieee802/}. igor@0: Впервые бриджинг в Linux появился в 2.2, затем код был переписан igor@0: Леннертом Буйтенхеком (Lennert Buytenhek). igor@0: Код bridge интегрирован в ядра серий 2.4 и 2.6. igor@0: igor@0: \subsection{Коммутация и фильтрация} igor@0: Linux-мосты более мощные чем простые аппаратные мосты и коммутаторы, igor@0: поскольку они могут ещё фильтровать и регулировать трафик. igor@0: Комбинация коммутатора и брандмауэра выполняется с помощью igor@0: родственного проекта igor@0: ebtables. igor@0: igor@0: \subsection{Состояние} igor@0: Код обновляется как часть ядра Linux 2.4 и 2.6, доступного на kernel.org. igor@0: igor@0: Возможные будущие усовершенствования: igor@0: \begin{itemize} igor@0: \item Описать фильтрацию STP igor@0: \item Использовать Netlink interface для управление бриджами (прототип в 2.6.18) igor@0: \item Добавить поддержку в user space igor@0: \item Сделать поддержку RSTP и других расширений 802.1d STP igor@0: \end{itemize} igor@0: igor@0: \subsection{Скачивание} igor@0: Поддержка бриджинга есть в текущих ядрах 2.4 и 2.6 igor@0: всех основных дистрибутивов Linux. Требуемый комплект утилит для администрирования igor@0: \textit{bridge-utils} есть практически во всех дистрибутивах. igor@0: igor@0: Инсталляция утилит выполняется стандартным для дистрибутива способом. igor@0: Например, в Debian GNU/Linux: igor@0: \begin{verbatim} igor@0: # apt-get install bridge-utils igor@0: \end{verbatim} igor@0: igor@0: Исходный код последнего релиза утилит можно получить со \htmladdnormallinkfoot{этой}{http://sourceforge.net/project/showfiles.php?group\_id=26089} страницы. igor@0: igor@0: Как вариант можно сделать свою самую последнюю сборку кода igor@0: с kernel.org igor@0: и собрать утилиты bridge-utils из GIT-репозитория. igor@0: igor@0: \begin{verbatim} igor@0: $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/bridge-utils.git igor@0: $ cd bridge-utils igor@0: $ autoconf igor@0: $ ./configure igor@0: \end{verbatim} igor@0: igor@0: \subsection{Ручная конфигурация} igor@0: \subsubsection{Сетевые карты} igor@0: Перед тем как вы приступите к настройке коммутатора, убедитесь, igor@0: что сетевые карты работают нормально. igor@0: Не устанавливайте на них IP-адресов, и не позволяйте начальным скриптам igor@0: выполнять DHCP-запрос с них. igor@0: IP-адреса должны устанавливаться уже после того как бридж сконфигурирован. igor@0: igor@0: Команда ifconfig должна показывать обе (или больше, если их больше) сетевые карты, и они должны быть выключены, т.е. находиться в состоянии DOWN igor@0: (это на момент начала настройки, дальше они будут переведены в UP). igor@0: igor@0: \subsubsection{Загрузка модуля} igor@0: В большинстве случаев код коммутатора оформляется в виде модуля. igor@0: Если модуль сконфигурирован и установлен корректно, igor@0: он автоматически загружается при первом вызове команды \textbf{brctl}. igor@0: igor@0: Если ваши утилиты bridge-utilities корректно установлены, igor@0: и ядро и его модуль bridge в порядке, вызовом команды \textbf{brctl} igor@0: можно будет просмотреть маленькую сводку о синтаксисе команды: igor@0: \begin{verbatim} igor@0: # brctl igor@0: # commands: igor@0: addbr add bridge igor@0: delbr delete bridge igor@0: addif add interface to bridge igor@0: delif delete interface from bridge igor@0: setageing