Настройка Ethernet Bridge

Материал из OpenBSD-Wiki
Перейти к: навигация, поиск
Данная статья 100 % копипаст с www.openbsd.ru

Использование Ethernet Bridge позволяет объединить несколько сегментов Ethernet в один логический сегмент. При этом допустимо использование правил фильтрации pf, что позволяет превратить OpenBSD в прозрачный IP фильтр.

Чтобы настроить OpenBSD в качестве Ethernet Bridge, нужно выполнить следующие шаги:

  • Сконфигурировать ядро OpenBSD, включив в него псевдоустройство "bridge". Файл конфигурации ядра должен содержать строку "pseudo-device bridge".
  • Создать файл конфигурации /etc/bridgename.bridge0, содержащий команды конфигурации Bridge, например:
add rl0
add fxp0
up

В данном случае мы объявляем интерфейсы fxp0 и rl0 одним логическим Ethernet сегментом. Подробнее о командах конфигурирования Bridge можно прочитать в ifconfig(8). При использовании нескольких логических сегментов следует создать файл конфигурации для каждого псевдоустройства bridge.

  • Создать файлы конфигурации сетевых интерфейсов:

/etc/hostname.fxp0:

inet 194.226.170.3 255.255.255.0 NONE

/etc/hostname.rl0:

up

Подробнее о файлах конфигурации сетевых интерфейсов можно прочитать в hostname.if(5)

Обратите внимание, что в данном случае IP адрес присваивается только одному интерфейсу. Допускается также создание Bridge, не имеющего своего IP адреса.

  • Перезагрузить машину.

Ethernet Bridge также позволяет с помощью протокола Ethernet-over-IP объединить в один логический сегмент сети, физически находящиеся далеко друг от друга. Рассмотрим следующий пример:

Хост A, адрес 81.1.212.10, внутренний интерфейс em0
Хост B, адрес 81.1.226.48, внутренний интерфейс rl0

Чтобы объединить сегменты интерфейса em0 хоста A и rl0 хоста B в один логический Ethernet сегмент, нужно подать следующие команды:

Для хоста A:

# sysctl -w net.inet.etherip.allow=1
# ifconfig gif0 tunnel 81.1.212.10 81.1.226.48
# ifconfig bridge0 create
# brconfig bridge0 add em0 add gif0 up

Для хоста B:

# sysctl -w net.inet.etherip.allow=1
# ifconfig gif0 tunnel 81.1.226.48 81.1.212.10
# ifconfig bridge0 create
# brconfig bridge0 add rl0 add gif0 up

Замечания

  • При использовании OpenBSD Packet Filter пакет, проходящий через Bridge, попадает под проверку PF два раза: при входе на одном интерфейсе и при выходе на другом. Чтобы производить keep-state фильтрацию, нам необходимо разрешить все входящие и исходящие пакеты на одном интерфейсе, а на другом производить фильтрацию. Пример правил:
# фильтрация производится на rl0, поэтому пропускаем все пакеты на rl1
pass quick on rl1

# по умолчанию мы блокируем все пакеты и пропускаем только
# icmp запросы с получившимися keep-state ответами в обе стороны.
block on rl0
pass on rl0 inet proto icmp icmp-type echoreq code 0 keep state
  • При использовании pf для фильтрации пакетов, проходящих через Bridge, действуют только правила для входящих пакетов.
  • Если во время работы Bridge производится перенос какого-нибудь компьютера (или другого устройства, имеющего свой Ethernet адрес) с одного Ethernet сегмента на другой, следует выполнить команду
# brconfig bridge0 flush

(где bridge0 - псевдоинтерфейс Bridge, к которому относится Ethernet сегмент, где раньше находился компьютер).

Смотрите также по данной теме пошаговое руководство, в котором рассматривается привязка IP к MAC с помощью bridge и pf.