17.3. Мосты

Текст создалSteve Peterson.

17.3.1. Введение

Иногда полезно разделить одну физическую сеть (такую, как сегмент Ethernet) на два отдельных сегмента сети без необходимости создания подсетей IP и использования маршрутизатора для соединения сегментов. Устройство, которое соединяет две сети на такой манер, называется "сетевым мостом" ("bridge"). Система FreeBSD с двумя сетевыми адаптерами может выступать в роли моста.

Мост работает на основе изучения адресов уровня MAC (адресов Ethernet) устройств на каждом из своих сетевых интерфейсах. Он перенаправляет трафик между двумя сетями, только когда адреса отправителя и получателя находятся в разных сетях.

По многим параметрам мост работает также, как коммутатор Ethernet с малым количеством портов.

17.3.2. Ситуации, когда можно использовать мосты

На сегодняшний день есть две ситуации, когда можно использовать мост.

17.3.2.1. Большой трафик в сегменте

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

Давайте рассмотрим в качестве примера газету, в которой редакторский и производственный отделы находятся в одной и той же подсети. Пользователи в редакторском отделе все используют сервер A для служб доступа к файлам, а пользователи производственного отдела используют сервер B. Для объединения всех пользователей используется Ethernet, а высокая нагрузка на сеть замедляет работу.

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

17.3.2.2. Межсетевой экран с возможностями фильтрации/ограничения пропускной способности трафика

Второй распространенной ситуацией является необходимость в обеспечении функций межсетевого экрана без трансляции IP-адресов (NAT).

Для примера можно взять маленькую компанию, которая подключена к своему провайдеру по каналу DSL или ISDN. Для неё провайдер выделил 13 глобально доступных IP-адресов для имеющихся в сети 10 персональных компьютеров. В такой ситуации использование межсетевого экрана на основе маршрутизатора затруднено из-за проблем с разделением на подсети.

Межсетевой экран на основе моста может быть настроен и включен между маршрутизаторами DSL/ISDN без каких-либо проблем с IP-адресацией.

17.3.3. Настройка моста

17.3.3.1. Выбор сетевого адаптера

Для работы моста требуются по крайней мере два сетевых адаптера. К сожалению, не все сетевые адаптеры во FreeBSD 4.0 поддерживают функции моста. Прочтите страницу Справочника по bridge(4) для выяснения подробностей о поддерживаемых адаптерах.

Перед тем, как продолжить, сначала установите и протестируйте два сетевых адаптера.

17.3.3.2. Изменения в конфигурации ядра

Для включения поддержки функций моста в ядре, добавьте строчку

    options BRIDGE

в файл конфигурации вашего ядра, и перестройте ядро.

17.3.3.3. Поддержка функций межсетевого экрана

Если вы планируете использовать мост в качестве межсетевого экрана, вам нужно также добавить опцию IPFIREWALL. Прочтите раздел Section 10.7, содержащий общую информацию о настройке моста в качестве межсетевого экрана.

Если вам необходимо обеспечить прохождение не-IP пакетов (таких, как ARP) через мост, то имеется недокументированная опция межсетевого экрана, которую можно задать. Это опция IPFIREWALL_DEFAULT_TO_ACCEPT. Заметьте, что при этом правило, используемое межсетевым экраном по умолчанию, меняется на разрешительное для всех пакетов. Перед тем, как задавать эту опцию, убедитесь, что вы понимаете работу вашего набора правил.

17.3.3.4. Поддержка функций ограничения пропускной способности

Если вы хотите использовать мост в качестве машины, ограничивающей пропускную способность, то добавьте в файл конфигурации ядра опцию DUMMYNET. Дополнительную информацию можно почерпнуть из страницы Справочника по dummynet(4).

17.3.4. Включение функций моста

Добавьте строку

    net.link.ether.bridge=1

в файл /etc/sysctl.conf для включения функций моста во время работы системы, и строку:

    net.link.ether.bridge_cfg=if1,if2

для включения функций моста для указанных интерфейсов (замените if1 и if2 на имена двух ваших сетевых интерфейсов). Если вы хотите, чтобы проходящие через мост пакеты фильтровались посредством ipfw(8), вы должны добавить строчку:

    net.link.ether.bridge_ipfw=1

17.3.5. Производительность

Я использую в качестве моста/межсетевого экрана машину Pentium 90 с двумя сетевыми адаптерами: 3Com 3C900B и 3C905B. Защищённая часть сети работает в полудуплексном режиме на скорости 10Мбит/сек, а связь между мостом и моим маршрутизатором (Cisco 675) осуществляется на скорости 100Мбит/сек в полнодуплексном режиме. Без функций фильтрации пакетов дополнительная задержка составляет около 0.4 миллисекунды для пакета утилиты ping между защищенной сетью, работающей на скорости 10 Мбит, и маршрутизатором Cisco 675.

17.3.6. Дополнительные замечания

Если вы хотите осуществлять удаленный доступ на мост по протоколу telnet из сети, то нет проблем в назначении одному из сетевых адаптеров IP-адреса. Общепринято, что назначение адреса обоим сетевым адаптерам является не самой хорошей идеей.

Если в вашей сети присутствует несколько мостов, не должно быть более одного маршрута между любыми двумя рабочими станциями. С технической точки зрения это означает отсутствие поддержки протокола spanning tree.