Привязка IP к MAC с помощью bridge(4) и pf(4)
Версия от 17:06, 14 июня 2013; Nordwind (обсуждение | вклад)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
- Данная статья 100 % копипаст с www.openbsd.ru
Мини-руководство "шаг за шагом"
Пример предоставления клиентам доступа к ресурсам сети с привязкой IP к MAC с помощью bridge и pf. В данном случае для создания моста достаточно одного внутреннего сетевого интерфейса ral0.
Сервер. IP: 192.168.2.1 Клиент 1. Hostname: evol, IP: 192.168.2.2, MAC: 00:0f:ea:91:43:f6 Клиент 2. Hostname: aurora, IP: 192.168.2.3, MAC: 00:80:c8:2c:47:a1
Включаем перенаправление IPv4-пакетов между сетевыми интерфейсами:
# sysctl -w net.inet.ip.forwarding=1
Добавляем соответствующую запись в /etc/sysctl.conf:
# vi /etc/sysctl.conf net.inet.ip.forwarding=1
Редактируем /etc/bridgename.bridge0:
# vi /etc/bridgename.bridge0 add ral0 blocknonip ral0 link0 -discover ral0 -learn ral0 flushall static ral0 00:0f: ea:91:43:f6 static ral0 00:80:c8:2c:47:a1 up rulefile /etc/bridge.conf
Редактируем /etc/bridge.conf:
# vi /etc/bridge.conf pass in on ral0 src 00:0f: ea:91:43:f6 tag evol pass in on ral0 src 00:80:c8:2c:47:a1 tag aurora block in on ral0
Создаем и поднимаем псевдоустройство bridge:
# ifconfig bridge0 create # sh /etc/netstart bridge0
Для проверки смотрим информацию о бридже:
# brconfig bridge0 bridge0: flags=1041<UP,RUNNING,LINK0> Configuration: priority 32768 hellotime 2 fwddelay 15 maxage 20 Interfaces: ral0 flags=4<BLOCKNONIP> port 2 ifpriority 128 ifcost 55 pass in on ral0 src 00:0f: ea:91:43:f6 tag evol pass in on ral0 src 00:80:c8:2c:47:a1 tag aurora block in on ral0 Addresses (max cache: 100, timeout: 240): 00:80:c8:2c:47:a1 ral0 1 flags=1<STATIC> 00:0f: ea:91:43:f6 ral0 1 flags=1<STATIC>
Редактируем /etc/pf.conf:
# vi /etc/pf.conf ext_if = «vr0» int_if = «ral0» evol = «192.168.2.2» aurora = «192.168.2.3» nat on $ext_if inet from { $evol, $aurora } to any -> ($ext_if) block in quick on $int_if from ! $evol to any tagged evol block in quick on $int_if from ! $aurora to any tagged aurora block return pass quick on { lo, $int_if } inet all pass quick on $ext_if inet all keep state
Перезагружаем набор рулесетов файервола:
# pfctl -f /etc/pf.conf
Дополнительную информацию можно получить, прочитав статью «Настройка Ethernet Bridge», а также из справочных man-страниц: bridge(4), pf(4), ifconfig(8), netstart(8).