Настройка сетевого моста

Компьютер под управлением FreeBSD с несколькими интерфейсами может
выступать не только в роли маршрутизатора между сегментами сети , но и в
роли коммутатора с фильтрацией пакетов (сетевой мост). В коде FreeBSD
5-STABLE и 6-STABLE есть 2 реализации сетевого моста — bridge и
if_bridge. Первая реализация будет скоро удалена из кода FreeBSD, так
что рассмотрим создание фильтрующего моста с помощью более
функционального кода if_bridge.

Можно выделить несколько этапов данного процесса:

1. Подготовка ядра ОС
2. Включении моста
3. Подключение интерфейсов
4. Настройка правил фильтрации пакетов
5. Управление работой моста

1 Сборка ядра
Для начала пересоберём ядро с дополнительными опциями:


Тут вносим следующие добавления необходимые для работы Фильтрующего сетевого моста:

Далее выполняем собственно сборку ядра:

Ну или просто:

2 Включение моста в работу
Для начала выполним:

В выводе ifconfig должен появиться дополнительный интерфейс — bridge0
3 Подключение интерфейсов
Чтобы мост заработал полноценно ему необходимо задать имена интерфейсов,
между которыми можно выполнять коммутацию пакетов.
3.1 Добавление интерфейсов
Для работы коммутатора необходимо как минимум 2 интерфейса, поэтому
подключаем их (в нашем случае это будут fxp0,fxp1,fxp2, то есть создадим
коммутатор с 3-мя портами).

На всякий пожарный выполним переподнятие интерфейса bridge0:

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

Эта команда удалит интерфейс fxp1 из работы моста.
Для того чтобы все изменения остались после перезагрузки компьютера в
rc.conf добавим строки:

Удобно навесить IP адрес на какой-либо интерфейс для последующего
управления сервером фильтрации удалённо. Адрес можно навесить как на
bridge0, так и на другие интерфейсы. Например в rc.conf за место

4 Настройка правил фильтрации пакетов
В man(4) if_bridge описано как можно изменить поведение сетевого моста
для фильтрации пактов. Механизм работы: пакет из сети попадает на
входящий интерфейс, далее проходит интерфейс bridge0. Там решается его
судьба: согласно таблицы коммутации (как у всех коммутаторов)
определяется порт (в нашем случае интерфейс) куда далее отправляется
пакет. А с этого конечного интерфейса он уже уходит в сеть.Пакеты
проходящие через мост можно фильтровать различными способами:
а) На входящих и исходящих интерфейсах (для этого необходимо установить
значение переменной net.link.bridge.pfil_member=1):

б) На «промежуточном» интерфейсе (net.link.bridge.pfil_bridge=1)

в) И там и там, то есть обе переменные установить в 1.
г) Нигде, то есть обе переменные установить в 0 (Пакеты проходящие
сквозь мост не будут подвергаться фильтрации).
Проще всего «мостовые» пакеты фильтровать на интерфейсе bridge0. Но меня
больше устраивает вариант фильтрации на всех интерфейсах (возможность
более гибкого управления поведением моста и самим сервером). Поэтому
выполним:

Далее настроим правила фаервола:
Если ничего фильтровать не хотите:

Если нужна фильтрация тогда решать вам как её делать. Не следует
забывать разрешать прохождение пакетов на интерфейсе bridge0 иначе ваш
мост работать не будет совсем.Приведу небольшой пример по фильтрации
пакетов сетевым мостом.
Пусть иметься сеть

(То есть с маской 255.255.248.0). Мост
ограничивает сеть с ай пи адресацией 10.0.1.0/24. Задача: требуется без
разделения сети на сегменты ограничить доступ пользователем в остальную
сеть Внешний кусок сети висит на интерфейсе fxp0, внутренний на fxp1.
Правила фильтрации настроим следующим способом:

Далее введём следующие правила:

(bridge0,проще конечно было сделать )

(с обоих интерфейсов коммутации)

(Тут прописали список разрешённых адресов)
Если при этом последнее правило 65536 deny ip from any to any, мы
получим мост который выпустит во внешнюю сеть только адреса с 1-го по
6-й, остальным доступ будет «наружу» запрещён. Следует отметить, что это
только пример, так что с правилами в вашем конкретном случае решать
придётся подумать.
5 Управление работой сетевого моста
Управление работой сетевого моста было частично описано выше: удаление,
добавление интерфейсов, настройка способов фильтрации. Более подробную
информацию можно найти в man ifconfig.
a) Добавление интерфейса:

b) Удаление интерфейса:

c) Просмотр таблицы коммутации:

d) Установка размера Кеша адресов:

e) Установка времени жизни адреса в кеше (в секундах):

f) Обнуление динамически запомненной таблицы коммутации (очистка кеша адресов):

g) Обнуление всей таблицы коммутации( удаляются даже статически заданные адреса).

h) Добавление статической записи в таблицу коммутации (кеш адресов):

i) Удаление адреса из кеша (таблицы коммутации):

j) Установка/Снятие атрибута learning на отдельном интерфейсе (то есть
создаётся ли динамически кеш адресов на интерфейсе):

k) Включение/Выключение работы STP протокола на интерфейсе:

l) Управление работой протокола STP на интерфейсах — читайте в man ifconfig про : maxage, fwddelay, hellotime, priority, ifpriority,ifpathcost.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *