вторник, 19 февраля 2008 г.

Конфигурирование ядра

Для чего нужна компиляция ядра?
Как говорится в хэндбуке, компиляция ядра - это ритуал, через который должен пройти любой пользователь FreeBSD.

Но мне это нужно для того чтобы увеличить производительность системы, уменьшить время загрузки и включить фаервол IPFW т.к. он не включен.
Я не ставлю перед собой задачу рассказать о том, что нужно удалить из файла конфигурации, я расскажу о том, что нужно добавить.




#cd /sys/i386/conf/      #Перехожу в коталог где хнаходится файл конфигурации ядра
#ls                     #Смотрю содержимое

GENERIC                 #Вот и файл который мне нужен (файлов тут больше, но мне нужен только этот)

#cp GENERIC new_kernel  #Создаю копию файла GENERIC и называю new_kernel
#ls

GENERIC       new_kernel

#ee new_kernel          #Открываю файл для редактирования

Приступаю к правке файла ядра.

Сначала необходимо изменить идентификатор ядра (в первой секции параметр ident.)
ident         new_kernel

а потом можно добавить следующие опции для IPFW

options       IPFIREWALL                  # встраиваем файрвол в ядро
options       IPFIREWALL_VERBOSE          # вывод информации об отброшенных пакетах
options       IPFIREWALL_VERBOSE_LIMIT=10 # ограничениена кол-во записей лога в сек.
options       IPDIVERT                    # поддержка IP-маскарадинга
options       DUMMYNET                    # шейпер
options       IPFIREWALL_FORWARD          # включаю возможность перенаправления пакетов
options       TCP_DROP_SYNFIN             # дроп нежелательных пакетов

Все! Больше я ничего пока не добавляю, только удаляю всякие SCSI девайсы кот. у меня нет. Нажимаю на ESC, подтверждаю что нужно сохранить файл и выхожу.

Далее нужно собрать ядро, а потом его установить.

#cd /usr/src/
#make buildkernel KERNCONF=new_kernel
#make installkernel KERNCONF=new_kernel

После того, как уставится новое ядро нужно перезагрузить комп. В начале запуска системы можно увидеть, что ядро которое загружается называется "new_kernel" ну или как то там по другому в зависимоти от того кому как нравится называть свои ядра!

Могут быть и проблемы, как во время компилирования, так и во время запуска системы. В основном проблемы при компилировании связанны с тем, что где-то не хватает буквы или на оборот случайно была выставленна какая-то запятая. Тогда нужно зайти в файл ядра и исправить ошибку.

Если криво откомпелировать ядро или случайно удалить нужную секцию, система может не загрузиться. В таком случае можно загрузить старое рабочее ядро GENERIC.


Во время 10-ти секундного отсчета нужно нажать на цифру 6-ть, для того чтобы увидеть приглашение загрузчика. Для начала нужно выгрузить криво откомпелированное ядро из памяти, потом загрузить рабочее ядро GENERIC и дать команду для запуска.

OK unload
OK load /boot/GENERIC/kernel
OK boot


После загрузки нового ядра, можно заново начать процесс компиляции :)

ВАЖНО:

После компиляции ядра с включением IPFW, по умолчанию будет только одно правило, которое влокирует весь трафик идущий в любое направление.

65535 deny ip from any to any


У IPFW есть несколько готовых типов работы, которые можно включить:


  • open #пропускаем весь траффик
  • client #будет защищать только эту машину
  • simple #защита всей сети
  • closed #полностью выключает весть IP траффик; исключая loopback интерфейс
  • UNKNOWN #выключает загружаемые правила файрвола
  • filename #путь к файлу содержащему правила

Для начала можно пропускать весь трафик, а потом когда будут свои правила, можно поменять тип работы фаервола, таким образом сделать сеть более защищенной. В файл /etc/rc.conf нужно добавить 2-е записи:

#ee /etc/rc.conf

firewall_enable="YES"
firewall_type="open"


Теперь можно закрыть файлик и перезагрузиться.
Я откомпилировал ядро, воткнул в него фаервол IPFW и включил режим который пропускает весь трафик в любое направление! Теперь нужно создать свой набор правил и указать фаерволу, откуда читать правила. Но это уже совсем другая история.
Продолжение следует..... :)

1 комментарий: