Написано Стивом Питерсоном (Steve Peterson) <[email protected]>.
Иногда полезно разделить одну физическую сеть (другими словами, сегмент Ethernet) на два отдельных сегмента сети без необходимости создания подсетей IP и использования маршрутизатора для соединения сегментов. Устройство, которое соединяет две сети на такой манер, называется мостом, а система FreeBSD с двумя сетевыми адаптерами может выступать в роли моста.
Мост работает на основе изучения адресов уровня MAC (то есть адресов Ethernet) устройств на каждом своем сетевом интерфейсе. Он перенаправляет трафик между двумя сетями, только когда адреса отправителя и получателя находятся в разных сетях.
По многим параметрам мост работает также, как коммутатор Ethernet с малым количеством портов.
На сегодняшний день есть две ситуации, когда можно использовать мост.
Первая ситуация возникает, когда ваша физическая сеть перегружена трафиком, но по каким-то соображениям вы не хотите разделять сеть на подсети и соединять их с помощью маршрутизатора.
Давайте рассмотрим в качестве примера газету, в которой редакторский и производственный отделы находятся в одной и той же подсети. Пользователи в редакторском отделе все используют сервер A для служб доступа к файлам, а пользователи производственного отдела используют сервер B. Для объединения всех пользователей используется Ethernet, а высокая нагрузка на сеть замедляет работу.
Если пользователи редакторского отдела могут быть собраны в одном сегменте сети, а пользователи производственного отдела в другом, то два сетевых сегмента можно объединить мостом. Только сетевой трафик, предназначенный для интерфейсов с "другой" стороны моста, будет посылаться в другую сеть, тем самым снижая уровень нагрузки на каждый сегмент сети.
Второй распространенной ситуацией является необходимость в обеспечении функций межсетевого экрана без трансляции IP-адресов (NAT).
Для примера можно взять маленькую компанию, которая подключена к своему провайдеру по каналу DSL или ISDN. Для нее провайдер выделил 13 IP-адресов для имеющихся в сети 10 персональных компьютеров. В такой ситуации использование межсетевого экрана на основе маршрутизатора затруднено из=а проблем с разделением на подсети.
Межсетевой экран на основе моста может быть настроен и включен между маршрутизаторами DSL/ISDN без каких-либо проблем с IP-адресацией.
Для работы моста требуются по крайней мере два сетевых адаптера. К сожалению, не все сетевые адаптеры во FreeBSD 4.0 поддерживают функции моста. Прочтите страницу Справочника по bridge(4) для выяснения подробностей о поддерживаемых адаптерах.
Перед тем, как продолжить, сначала установите и протестируйте два сетевых адаптера.
Для включения поддержки функций моста в ядре, добавьте строчку
options BRIDGE
в файл конфигурации вашего ядра, и перестройте ядро.
Если вы планируете использовать мост в качестве межсетевого экрана, вам нужно также добавить опцию IPFIREWALL. Прочтите раздел Section 6.7, содержащий общую информацию о настройке моста в качестве межсетевого экрана.
Если вам необходимо обеспечить прохождение не-IP пакетов (таких, как ARP) через мост, то имеется недокументированная опция межсетевого экрана, которую можно задать. Это опция IPFIREWALL_DEFAULT_TO_ACCEPT. Заметьте, что при этом правило, используемое межсетевым экраном по умолчанию, меняется на разрешительное для всех пакетов. Перед тем, как задавать эту опцию, убедитесь, что вы понимаете работу вашего набора правил.
Если вы хотите использовать мост в качестве машины, ограничивающей пропускную способность, то добавьте в файл конфигурации ядра опцию DUMMYNET. Дополнительную информацию можно почерпнуть из страницы Справочника по dummynet(4).
Добавьте строку
net.link.ether.bridge=1
в файл /etc/sysctl.conf для включения функций моста во время работы системы. Если вы хотите, чтобы пакеты, проходящие через мост, фильтровались через ipfw, вы должны также туда добавить строчку
net.link.ether.bridge_ipfw=1
Я использую в качестве моста/межсетевого экрана машину Pentium 90 с двумя сетевыми адаптерами: 3Com 3C900B и 3C905B. Защищенная часть сети работает в полудуплексном режиме на скорости 10Мбит/сек, а связь между мостом и моим маршрутизатором (Cisco 675) осуществляется на скорости 100Мбит/сек в полнодуплексном режиме. Без функций фильтрации пакетов дополнительная задержка составляет около 0.4 миллисекунды для пакета утилиты ping между защищенной сетью, работающей на скорости 10 Мбит, и маршрутизатором Cisco 675.
Если вы хотите осуществлять удаленный доступ на мост по протоколу telnet из сети, то нет проблем в назначении одному из сетевых адаптеров IP-адреса. Общепринято, что назначение адреса обоим сетевым адаптерам является не самой хорошей идеей.
Если в вашей сети присутствует несколько мостов, не должно быть более одного маршрута между любыми двумя рабочими станциями. С технической точки зрения это означает отсутствие поддержки протокола spanning tree.