OpenBSD: Привязка IP к MAC с помощью bridge(4) и pf(4)


Мини-руководство "шаг за шагом"

Пример предоставления клиентам доступа к ресурсам сети с привязкой 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), bridgename.if(5), brconfig(8), netstart(8).


OpenBSD.ru www@openbsd.ru
$RuOBSD: bridge.html,v 1.11 2010/11/01 10:57:48 dinar Exp $
Hosted by uCoz