Настройване на филтриращ мрежов мост, базиран на FreeBSD 6
Ключови думи:freebsd, bridge, ifconfig, (намерете свързани документи)
От: Kropachev Artemy Новинарски групи: имейл Дата: неделя, 25 декември 2005 г. 17:02:14 +0000 (UTC) Тема: Конфигуриране на базиран на FreeBSD 6.0 филтриращ мрежов мост с if_bridge
Настройка на мрежов мост
Компютър с FreeBSD с множество интерфейси може да действа не само като рутер между мрежови сегменти, но и като превключвател за филтриране на пакети (мрежов мост). Кодът на FreeBSD 5-STABLE и 6-STABLE има 2 реализации на мрежов мост - мост и if_bridge. Първата реализация скоро ще бъде премахната от кода на FreeBSD, така че нека обмислим създаването на филтърен мост с по-функционален if_bridge код.
Има няколко етапа на този процес: 1. Подготовка на OS ядрото 2. Включване на моста 3. Свързващи интерфейси 4. Конфигуриране на правила за филтриране на пакети 5. Управление на моста
Първо, нека възстановим ядрото с допълнителни опции:
# cd /usr/src/sys/i386/conf # cp GENERIC BRIDGE # vi BRIDGE
Тук правим следните допълнения, необходими за работата на филтриращия мрежов мост:
#Активиране на IPFW поддръжка опции IPFIREWALL #Включване на мрежов мостов код в ядрото устройство if_bridge
След това изграждаме самото ядро:
# config BRIDGE # cd /usr/src/sys/i386/compile/BRIDGE # make cleandepend # make depend # make # make install # reboot
# направете чиста зависимост от && правя зависими && направи && направете инсталиране && рестартирайте
2 Въвеждане на моста в експлоатация
За да започнем, нека направим:
#ifconfig bridge0 създаване
В изхода на ifconfig трябва да се появи допълнителен интерфейс - bridge0
3 Интерфейсна връзка
За да работи пълноценно мостът, той трябва да посочи имената на интерфейсите, между които може да се извършва превключване на пакети.
3.1 Добавяне на интерфейси
За да работи комутаторът, са необходими поне 2 интерфейса, така че ние ги свързваме (в нашия случай това ще бъдат fxp0, fxp1, fxp2, тоест ще създадем комутатор с 3 порта).
# ifconfig bridge0 addm fxp0 up # ifconfig bridge0 addm fxp1 up # ifconfig bridge0 addm fxp2 up
Само за по-сигурно, нека преповдигнем интерфейса bridge0:
# ifconfig bridge0 нагоре
По принцип мостът вече трябва да работи, ако защитната стена не блокира преминаването на пакети.
3.2 Премахване на интерфейси от техния мост:
По време на работа понякога се налага да деактивирате всеки интерфейс на превключвателя от неговата работа. За да премахнете всеки интерфейс , направете следното:
# ifconfig bridge0 deletem fpx1
Тази команда ще премахне интерфейса fxp1 от моста. За да останат всички промени след рестартиране на компютъра, добавете следните редове към rc.conf:
cloned_interfaces="bridge0" ifconfig_br ifconfig_fxp0="нагоре" ifconfig_fxp1="нагоре" ifconfig_fxp2="нагоре"
ifconfig_fxp0="inet 192.168.0.1 мрежова маска 255.255.255.0 нагоре"
4 Задаване на правила за филтриране на пакети
man(4) if_bridge описва как можете да промените поведението на мрежов мост за филтриране на пакети. Механизъм на работа: пакет от мрежата влиза във входящия интерфейс , след което преминава през интерфейса bridge0. Там се решава неговата съдба: според таблицата за превключване (както при всички комутатори) се определя портът (в нашия случайинтерфейс), където пакетът се изпраща след това. И от този последен интерфейс той вече напуска мрежата Пакетите , преминаващи през моста, могат да бъдат филтрирани по различни начини:
a) На входящи и изходящи интерфейси (за това трябва да зададете стойността на променливата net.link.br > # sysctl net.link.br >
b) На "междинния" интерфейс (net.link.br > # sysctl net.link.br >
в) И там, и там, тоест задайте и двете променливи на 1.
d) Никъде, т.е. задайте и двете променливи на 0 (Пакетите, преминаващи през моста, няма да бъдат филтрирани).
Най-лесният начин за филтриране на "мостови" пакети е на интерфейса bridge0. Но съм по-доволен от опцията за филтриране на всички интерфейси (възможността за по-гъвкав контрол на поведението на моста и самия сървър). И така нека направим:
# sysctl net.link.br > # sysctl net.link.br >
След това конфигурирайте правилата на защитната стена: Ако не искате да филтрирате нищо:
# ipfw добави 100 позволи ip от всеки към всеки
Ако имате нужда от филтриране, от вас зависи как да го направите. Не забравяйте да позволите на пакетите да преминават през интерфейса bridge0, в противен случай вашият мост изобщо няма да работи Ще ви дам малък пример за филтриране на пакети от мрежов мост.
# sysctl net.link.br > # sysctl net.link.br >
След това въвеждаме следните правила:
# ipfw flush (само ако сте на конзола. ) # ipfw add 100 enable mac-type arp (Все още ще разрешаваме arp пакети през моста) # ipfw add 200 enable ip от всеки към всеки чрез bridge0 (разрешаване на целия трафик на интерфейса) (bridge0, разбира се, беше по-лесно да се направи) (sysctl net.link. br > # ip fw добавяне на 300 разрешаване на ip от всеки към всеки изход чрез fxp1 # ipfw добавяне на 400 разрешаване на ip от всеки към всеки изход чрез fxp0(Разрешаване на целия изходящ трафик) (от двата превключващи интерфейса) # ipfw добави 500 разреши ip от не 10.0.1.0/24 до 10.0.1.0/24 в чрез fxp0 (Всички разрешени) (входящи пакети от мрежата навътре) # ipfw добави 600 разреши ip от 10.0.1.1 към всяка във vi a fxp1 # ipfw добави 700 разреши ip от 10.0.1.2 към всеки in чрез fxp1 # ipfw добави 800 разреши ip от 10.0.1.3 към всеки in чрез fxp1 # ipfw добави 900 разреши ip от 10.0.1.4 към всеки in чрез fxp1 # ipfw добави 100 0 разреши ip от 10 .0.1.5 до всеки вход чрез fxp1 # ipfw добави 1100 разреши ip от 10.0.1.6 до всеки вход чрез fxp1
5 Контрол на работата на мрежов мост
Управлението на мрежовия мост беше частично описано по-горе: изтриване, добавяне на интерфейси, настройка на методи за филтриране. По-подробна информация може да бъде намерена в man ifconfig.
а) Добавяне на интерфейс:
# ifconfig bridge0 addm fxp0
b) Премахване на интерфейс:
# ifconfig bridge0 deletem fxp0
c) Преглед на таблицата за превключване:
# ifconfig bridge0 адр
# ifconfig bridge0 maxaddr 100
# ifconfig bridge0 таймаут 1000
# ifconfig bridge0 флъш
# ifconfig bridge0 flushall
# ifconfig bridge0 static fxp0 00:11:22:33:44:55
# ifconfig bridge0 deladdr 00:11:22:33:44:55
# ifconfig bridge0 научи fxp0 # ifconfig bridge0 -научи fxp0
k) Активиране/деактивиране на работата на STP протокола на интерфейса:
# ifconfig bridge0 stp fxp0 # ifconfig bridge0 -stp fxp0