Настройка сетевого моста в FreeBSD
Необходимо было защитить сервер доступа к турникетам на платформе SecurOS. Было принято решение настроить брандмауэр на основе сетевого моста.
Схема сети:
Для работы моста требуются не менее два сетевых адаптера. У меня это vr0 и rl0.
Для включения поддержки сетевого моста, необходимо добавить строчку в ядре:
# cd /usr/src/sys/i386/conf # cp GENERIC PFBRIDGE # ee PFBRIDGE
#Включение в ядро функции сетевого моста device if_bridge
Так, как я использую межсетевой экран PF, я добавлю его поддержку в ядро:
# Package Filter options ALTQ options ALTQ_CBQ options ALTQ_RED options ALTQ_RIO options ALTQ_HFSC options ALTQ_PRIQ options ALTQ_NOPCC device pf device pflog device pfsync
Собираем ядро:
# cd /usr/src # make buildkernel KERNCONF=PFBRIDGE # make installkernel KERNCONF=PFBRIDGE #reboot
Добавим параметры в /etc/sysctl.conf:
#Для фильтрации пакетов на входящих и исходящих интерфейсах net.link.bridge.pfil_member=1#Для фильтрации пакетов на интерфейсе bridge0 net.link.bridge.pfil_bridge=0
далее в /etc/rc.conf пишем:
#назначаем IP сетевым интерфейсам ifconfig_vr0="inet 192.168.100.20 netmask 255.255.255.0" ifconfig_rl0="inet 192.168.100.30 netmask 255.255.255.0"#создаем новый интерфейс bridge0 cloned_interfaces="bridge0"#добавляем сетевые для роботы в качестве моста ifconfig_bridge0="addm vr0 addm rl0 up"
Перезагружаем сервер и проверяем работоспособность моста.
Вот что должно появиться у вас после перезагрузки:
firewall# ifconfig vr0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:1a:g0:cа:01:02 inet 192.168.100.20 netmask 0xffffff00 broadcast 192.168.100.255 media: Ethernet autoselect (100baseTX <full-duplex>) status: active rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:01:6b:f2:0e:a1 inet 192.168.100.30 netmask 0xffffff00 broadcast 192.168.100.255 media: Ethernet autoselect (100baseTX <full-duplex>) status: active lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 pfsync0: flags=0<> metric 0 mtu 1460 syncpeer: 224.0.0.240 maxupd: 128 pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33204 bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 52:83:60:2d:31:9f id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200 root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0 member: rl0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP> member: vr0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>