Защищенный шлюз на FreeBSD часть первая. Сборка ядра для ipfw.

 

Подготовим ядро для нашего файрволла.
 
Двумя самыми популярными файрволами для FreeBSD являются ipfw и pf. Мы будем настраивать ipfw.
 
Для работы ipfw, внесем ряд дополнительных опций в ядро FreeBSD. Для этого потребуются исходники, они лежат в каталоге sys.
 
Дальше все зависит от версии FreeBSD. Для 32х битной каталог будет называться i386, для 64х битной – amd64. У меня 64х битная версия.
 
Переходим в каталог с конфигурацией ядра.

cd /sys/amd64/conf/

 

Здесь лежит наше ядро по умолчанию — GENERIC. Каждая строка в ядре представляет собой ключевое слово и один или более аргументов. Описание параметров можно посмотреть в файле NOTES, в этом же каталоге.
 
Скопируем ядро. Копию я назову MYKERNEL, с ней и будем работать.

cp GENERIC MYKERNEL

 

Откроем MYKERNEL редактором, для этого я использую простенький текстовый редактор easy editor, он же ee.

ee MYKERNEL

 

В параметре ident нужно поменять имя ядра с GENERIC на наш MYKERNEL.

ident MYKERNEL

 

Добавим несколько опций, первой из которых будет опция, включающая ipfw как часть ядра.

options IPFIREWALL

 

Начиная с FreeBSD 10, в ядро по умолчанию включена опция IPFIREWALL_FORWARD. В предыдущих же версиях ее также приходилось добавлять в ядро.
 
Включим NAT и логи.

options IPDIVERT
options IPFIREWALL_VERBOSE

 

Есть и другие опции, но на данный момент нам хватит трех, ну или четырех, если ваша версия FreeBSD ниже 10 версии.
 
Будет выглядеть примерно так:

сpu              HAMMER
ident            MYKERNEL

makeoptions      DEBUG=-g
makeoptions      WITH_CTF=1

options          IPFIREWALL
options          IPDIVERT
options          IPFIREWALL_VERBOSE
options          SHED_ULE       
options          PREEMPTION
...

 

Теперь перейдем в каталог src. И соберем новое ядро.

cd /usr/src
make buildkernel KERNCONF=MYKERNEL

 

Установим новое ядро.

make installkernel KERNCONF=MYKERNEL

 

Добавим ipfw в rc.conf и сделаем наш файрволл открытым

ee /etc/rc.conf
firewall_enable="YES"
firewall_type="open" 

 

Осталось только перезагрузиться. После чего проверить установилось ли ядро.

reboot
uname –i

 

Видео

Оставить комментарий