31.08.2009

Настройка DNS сервера на FreeBSD

Довольно часто возникает вопрос о внедрении своего ДНС сервера, который мог бы не только обслуживать запросы внешних пользователей к приобретенным ДНС именам, но и обслуживать запросы пользователей в локальной сети. Такая задача относительно просто решается средствами ОС FreeBSD. Подробнее...

Ярлыки: , ,

03.08.2009

Настройка NAT и шейпера на FreeBSD

Задача:

Настроить NAT для локальной сети используя FreeBSD и ограничить скорость доступа при помощи шейпера на аплоад 10 мегабит в секунду, на даунлоад 1 мегабит в секунду.

Дано:

Внутренний интерфейс de0 (192.168.0.1/24)
Внешний интерфейс de1 (10.10.10.2/32)

Решение:

1. Пересобираем ядро с такими опциями:

1. options IPFIREWALL
2. options IPFIREWALL_VERBOSE
3. options IPFIREWALL_VERBOSE_LIMIT=10
4. options IPFIREWALL_DEFAULT_TO_ACCEPT
5. options IPDIVERT
6. options DUMMYNET
7. options HZ=1000


где:

1. Активируем Firewall при загрузке
2. Включаем возможность журналирования
3. Ограничиваем журналирование до 10 записей в секунду
4. По умолчанию разрешаем прохождение любого трафика, тоесть ничего не блокируем
5. Включаем демон NAT
6. Включаем демон шейпера
7. Устанавливаем таймер точности работы для шейпера (Начинает интенсивнее использоваться процессор)

2. Дописываем в файл /etc/rc.conf следующие строки:

1. ifconfig_de0="inet 192.168.0.1 netmask 255.255.255.0 up media 100baseTX mediaopt full-duplex"
2. ifconfig_de1="inet 10.10.10.2 netmask 255.255.255.252 up media 100baseTX mediaopt full-duplex"
3. defaultrouter="10.10.10.1"
4. gateway_enable="YES"
5. firewall_enable="YES"
6. firewall_type="firewall"
7. firewall_quiet="YES"
8. firewall_logging="YES"
9. firewall_script="/usr/local/etc/rc.firewall"
10. natd_enable="YES"
11. natd_flags="-f /etc/natd.conf"


где:

1. Конфигурируем внутренний интерфейс
2. Конфигурируем внешний интерфейс
3. Указываем шлюз по умолчанию
4. Активируем режим пересылки пакетов между интерфейсами
5. Активируем Firewall
6. Указываем тип Firewall (Идентификатор. Мы используем свои настройки, поэтому выбираем название отличное от стандартных типовых - OPEN, CLIENT, SIMPLE, CLOSED, UNKNOWN)
7. Активируем "тихий" режим Firewall (при загрузке/перезагрузке правил не будут выдаваться предупредительные сообщения)
7. Активируем режим журналирования
8. Указываем путь к файлу для загрузки правил Firewall
10. Активируем демон natd
11. Указываем путь к файлу для загрузки опций natd

3. Создаем скрипт /usr/local/etc/rc.firewall и добавляем в него следующие строки:

1. #!/bin/sh
2. ipfw -f flush
3. ipfw -f pipe flush
4. ipfw add 100 allow ip from any to any via lo0
5. ipfw add 200 deny ip from any to 127.0.0.0/8
6. ipfw add 300 deny ip from 127.0.0.1/8 to any
7. ipfw add 400 divert natd all from any to any via de1
8. ipfw add 500 pipe 500 ip from 192.168.0.0/24 to any via de0
9. ipfw add 600 pipe 600 ip from any to 192.168.0.0/24 via de1
10. ipfw pipe 500 config bw 1024Kbit
11. ipfw pipe 600 config bw 10240Kbit
12. ipfw add 65535 allow ip from any to any


где:

1. Указываем интерпретатор в начале скрипта
2. Очищаем правила Firewall
3. Очищаем пайпы (трубы) шейпера
4. Добавляем разрешающее правило 100 для прохода всего трафика через лупбек
5. Добавляем запрещающее правило 200 для доступа к сети 127.0.0.0/8
6. Добавляем запрещающее правило 300 для доступа из сети 127.0.0.0/8
7. Добавляем разрешающее правило 400 для запуска NAT через интерфейс de1
8. Добавляем правило 500, добавляющее пайп 500 от сети 192.168.0.0/24 через интерфейс de0
9. Добавляем правило 600, добавляющее пайп 600 к сети 192.168.0.0/24 через интерфейс de1
10. Конфигурируем пайп соответствующий номеру 500. Устанавливаем скорость 1 мегабит
11. Конфигурируем пайп соответствующий номеру 600. Устанавливаем скорость 10 мегабит.

3. Создаем файл /etc/natd.conf, описывающий настройки демона natd

1. use_sockets yes
2. same_ports yes
3. unregistered_only yes
4. interface de1


где:

1. Выделять для NAT соединений сокеты. Используется больше ресурсов, но уменьшается вероятность некорректной трансляции
2. Пытаться сохранять тот же номер порта если данные для исходящих соединений изменились, полезно для протокола RPC
3. Транслировать только "серые" адреса, читать RFC 1918
4. Указываем имя исходящего NAT интерфейса, полезно в случае если на внешнем интерфейсе IP изменяется динамически.

4. Управляем IPFW при помощи команд

1. freebsd# /etc/rc.d/ipfw start
2. freebsd# ipfw list
3. freebsd# ipfw show
4. freebsd# ipfw pipe list
5. freebsd# ipfw -f flush
6. freebsd# ipfw -f pipe flush


где:

1. Стартуем IPFW. Также доступны опции restart, stop, status
2. Просмотр правил IPFW
3. Просмотр правил IPFW с счетчиками трафика
4. Просмотр пайпов
5. Очистка в тихом режиме правил IPFW
6. Очистка в тихом режиме пайпов

Ярлыки: ,

02.08.2009

Тестирование FreeBSD 7.2 AMD64 под Citrix XenServer 5.5.0-15119t

Задача:

Провести тестирование производительности виртуального сервера под управлением FreeBSD 7.2 AMD64 на базе хостовой платформы Citrix XenServer 5.5.0-15119t при помощи утилиты unixbench 4.1. А также проверить пропускную способность сети помощи утилиты iperf 2.0.4

Дано:

CPU: Intel Xeon E5310 4 x 1,6 Ghz
RAM: 5000 Mb
HDD: 40 Gb
LAN: Realtek 8139C+ 10/100BaseTX


Результаты:



Производительность: 177,9


Пропускная способность на аплоад: 239 Мегабит в секунду


Пропускная способность на даунлоад: 337 Мегабит в секунду

Примечания:



1. В целом система корректно установилась, распознала всю отведенную ей память и виртуальные процессоры. Но при всем положительном присутствует один недостаток, так как для FreeBSD недоступны XenServer Tools, машине невозможно сделать Suspend, Reboot или Shutdown. Доступны только опции Force Reboot и Force Shutdown. Вероятнее всего что не будет доступна опция LiveMigration.

2. Система на "ральном железе" показала результаты:
- Общая производительность: 409, 6
- Пропускная способность на аплоад: 937 Мегабит в секунду
- Пропускная способность на даунлоад: 583 Мегабита в секунду

3. Виртуализированная система под управлением Hyper-V показала результаты:
- Общая производительность: 144, 6
- Пропускная способность на аплоад: 46, 22 Мегабита в секунду
- Пропускная способность на даунлоад: 47, 27 Мегабита в секунду

Ярлыки: , ,

17.07.2009

Нормальная остановка и перезагрузка FreeBSD в Hyper-V

После установки FreeBSD в Hyper-V будет отсутствовать возможность корректно выключить или перезагрузить гостевую операционную систему. Для того чтобы вернуть эту замечательную возможность (даже для сервера под управлением FreeBSD бывает очень полезной опцией выключение или перезагрузка) необходимо:

1. Установить Windows PowerShell для работы с Hyper-V из командной строки (Пуск --- Настройка --- Панель управления --- Администрирование --- Диспетчер сервера --- Компоненты --- Добавить компоненты ---Windows PowerShell).
2. Выполняем скрипт для поиска и остановки подвисшей при перезагрузке после установки машины (Пуск --- Программы --- Windows PowerShell)

> Get-WmiObject -Namespace root\virtualization msvm_computersystem | Format-Table ElementName, ProcessId

> kill номер процесса


3. Запускаем заново машину штатными средствами Hyper-V
4. Устанавливаем в FreeBSD исходные тексты ядра
5. Модифицируем файл по пути: /usr/src/sys/dev/pci/pci.c

С отправной строки 6 000 ищем строки:

struct pci_devinfo *dinfo = device_get_ivars(child);
pcicfgregs *cfg = &dinfo->cfg;


и добавляем после них строки:

if (dinfo->cfg.vendor == 0x1011 && dinfo->cfg.device == 0x0009)if (reg >= 0x10 && reg

Сохраняем файл
6. Пересобираем ядро и перезапускаем систему.

После таких манипуляций нормальный функционал остановки/перезагрузки системы должен быть востановлен.

З.Ы. Отдельная благодарность за помощь Mamber'у

Ярлыки: , , ,

07.07.2009

Вывод логов BIND в отдельный файл в FreeBSD

Для того чтобы заставить bind выводить логи в отдельный файл необходимо:

1. Создать файл логов

freebsd# touch /var/log/named.log

2. Применить к нему права

freebsd# chown bind:bind /var/log/named.log

3. Добавить конец файла /etc/syslog.conf необходимые строки

!named
*.* /var/log/named.log

4. Перезапустить Syslog

freebsd# /etc/rc.d/syslogd restart

Ярлыки: ,

01.07.2009

Синхронизация времени в FreeBSD при помощи Cron

Синронизировать время будем каждую 59 минуту часа по протоколу ntp с ресурсом ua.pool.ntp.org. Также отключим почтовые уведомления от cron. Для этого в файле /etc/crontab добавим строки:

MAILTO=/dev/null

или

MAILTO=""

*/59 * * * * root /usr/sbin/ntpdate ua.pool.ntp.org

Ярлыки: ,

Медленный запуск Midnight Commander в FreeBSD

Если Вы установили mc в FreeBSD и при его вызове происходит очень затяжной старт, значит возможно не до конца настроены некоторые сетевые параметры, а именно имя домена. При запуске Midnight Commander пытается разрезолвить имя машины по IP. Для устранения дефекта можно воспользоваться настройкой сетевого адаптера через Sysinstall либо самостоятельно прописать в файле /etc/resolv.conf строку:

domain dom.local

Ярлыки: ,

10.05.2009

Установка и настройка Subversion (SVN) сервера под управлением FreeBSD

Итак, что же такое SVN, Subversion, система управления версиями? Обратимся к Википедии.
Система управления версиями (от англ. Version Control System или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости, возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение и многое другое.
Есть несколько таких систем. Мы будем использовать Subversion.

1. Установка

freebsd# cd /usr/ports/devel/subversion
freebsd# make && make install && make clean


Конфигурационное меню оставляем по умолчанию.

freebsd# rehash

2. Настройка

Создадим каталог для хранения репозитория:

freebsd# mkdir -p /home/svn/repository

Добавим группу и пользователя svn для разграничения привилегий к файлам Subversion:

freebsd# pw group add svn
freebsd# pw user add svn -g svn -s /usr/sbin/nologin -d /home/svn/repositories/


Добавим в файл /etc/rc.conf добавляем следующие строки:

# Стартуем SVN при загрузке
svnserve_enable="YES"
# Указываем путь к каталогу, где будет хранится репозиторий
svnserve_data="/home/svn/repository"
# Указываем пользователя и группу для определения привелегий доступа к файлам SVN
svnserve_user="svn"
svnserve_group="svn"

Создадим репозиторий:

freebsd# svnadmin create /home/svn/repository/

Выставим права:

freebsd# chown -R svn:svn /home/svn/

Настроим авторизированный доступ к репозиторию:

freebsd# cd /home/svn/repository/conf/
freebsd# ee svnserve.conf

Раскомментируем, изменяем строки, как показано ниже, и сохраняем файл.

anon-access = none
auth-access = write
password-db = passwd


Создаем пользователей, для доступа к SVN:

freebsd# cd /home/svn/repository/conf
freebsd# ee passwd


Добавляем нужное количество пользователей в формате логин = пароль и сохраняем:

developer = Pa$$w0rd

Стартуем SVN сервер:

freebsd# /usr/local/etc/rc.d/svnserve start

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

P.S. Для тех кто разрабатывает веб проекты и хранит репозиторий на том же сервере где находится веб сервер, для удобства, можно сделать автоматическую публикацию текущего состояния разрабатываемого проекта на веб сервере после утверждения изменений в SVN клиенте. Для этого необходимо сделать следущее:

freebsd# cp /home/svn/repository/hooks/post-commit.tmpl /home/svn/repository/hooks/post-commit
freebsd# chmod 755 /home/svn/repository/hooks/post-commit
freebsd# ee /home/svn/repository/hooks/post-commit

Привести содержимое файла к следующему виду.

#!/bin/sh
/usr/local/bin/svn up '/usr/local/www/nginx/vhosts/plastilin.org.ua/html' --username 'developer' --password 'Pa$$w0rd'


Находясь в корневой директории веб сервера (/usr/local/www/nginx/vhosts/plastilin.org.ua/html) создать рабочую копию проекта, выполнив команду:

freebsd# /usr/local/bin/svn co file:///home/svn/repository --username 'developer' --password 'Pa$$w0rd'

Перейти в корневую директорию веб сервера. Далее в каталог repository и все содержимое перенести на уровень выше, тоесть в папку /html. Удалить каталог /repository в корневой директории веб сервера.


Теперь после проведения коммита последняя версия проекта будет публиковаться на веб сервере.

Ярлыки: ,

09.04.2009

Polling в FreeBSD

Теория:


- Режим прерывания (IRQ):

По умолчанию сетевой интерфейс работает в режиме прерывания (IRQ). Выглядит это примерно так:

1. Интерфейс отправляет или получает пакет.
2. Интерфейс генерирует прерывание (IRQ) в ответ на это событие.
3. ЦП останавливает свою текущую деятельность, чтобы обработать прерывание.
4. После обработки прерывания сгенерированого интерфейсом ЦП продолжает свою работу.

Такой вариант обработки пакетов сетевым интерфейсом подходит для низкой активности сети (до 10 тысяч пакетов в секунду). При увеличении количества пакетов для обработки интерфейсом начнется их отбрасывание, в связи с тем что сам интерфейс не будет успевать генерировать прерывания или ЦП не будет успевать обрабатывать их...

Вывод: Система неуправляема. Плюс низкая пропускная способность.


- Режим опроса (Polling):

Итак что же такое поллинг (polling)... Поллинг в FreeBSD это режим опроса системой сетевого интерфейса с определенной частотой на наличие на нем сетевых пакетов. Работает это приблизительно таким образом:

Система отключает на сетевом интерфейсе прерывания (IRQ), а вместо этого сама опрашивает сетевой интерфейс на наличие в его буфере сетевых пакетов. И если такие присутствуют - она их обрабатывает. Выглядит это примерно так:

1. Сетевой интерфейс работает в режиме прерываний.
2. При приеме/отправке пакета, сетевой интерфейс регистрирует себя в poll списке и отключает прерывания.
3. Через определенные таймауты система опрашивает интерфейс на предмет новых пакетов.

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

Есть один момент, на который нужно обратить внимание. Не все сетевые адаптеры поддерживают режим поллинга список можно просмотреть на странице мануала к поллингу


Настройка:


1. Пересобираем ядро с опциями:


options DEVICE_POLLING (включение режима опроса)
options HZ=1000 (таймер проверки 1000 равен пропускной способности 100 Мбитной сети подробнее. Тоесть если скорость больше 100 мегабит нужно выставить большее значение)


2. Включаем поддержку поллинга на интерфейсе


В старых версиях поллинг включается через файл /etc/sysctl.conf
нужно добавить строку

kern.polling.enable=1

В новых версиях включается через Ifconfig

freebsd# ifconfig em0 polling

Для автозагрузки поллинга в файле /etc/rc.conf прописываем:

ifconfig_em0="polling"

также не забываем добавить в этой строке сетевые параметры типа IP адрес, маска подсети и тд.


3. Тюнингуем параметры polling`a


Все настройки производятся в файле /etc/sysctl.conf

kern.polling.user_frac - определяет использование процессорного времени между ядром и пользовательскими процессами. Чем меньше значение, тем меньше времени будет уделено пользовательским процессам и больше ядру. Стоит заметить, что если у одного из уровней задач (пользовательский) не имеет достаточно работы, то остатки процессорного времени переходят другому (ядру), так что процессорное время не теряется. По умолчанию, значение этой переменной - 50. Меньшее значение стоит выставлять на маршрутизаторах. Допустимый предел значений от 1 до 99.
kern.polling.handlers - определяет количество устройств, которые могут быть зарегистрированы как polling.
kern.polling.burst - максимальное количество пакетов, которое может быть обработано с одного устройства за каждый проход. Это значение подстраивается ядром, основываясь на текучем уровне загрузки, мощности процессора, потока трафика и т.д.
kern.polling.burst_max - определяет верхнюю границу kern.polling.burst.
kern.polling.reg_frac - в процессе опроса не проверяется состояние регистров на ошибки, текущее состояние связи и.т.д., это значение указывает, как часто (каждые reg_frac / HZ секунд) проводить подобные проверки. Значение по умолчанию - 20.
kern.polling.idle_poll - определяет, использовать ли опрос устройств в свободное время. Нет причин отключать его, разве что для проведения тестов или при возникновении ошибок. По умолчанию включено.
intr_queue_maxlen - очередь для входящих пакетов (аналогична backlog под Linux). Изменяется при помощи sysctl: net.inet.ip.intr_queue_maxlen. Значение по умолчанию = 50, что очень мало.
intr_queue_drops - статистика по работе intr_queue_maxlen, отображает количество отброшенных пакетов из очереди. Посмотреть её можно через sysctl: net.inet.ip.intr_queue_drops.
net.inet.tcp.rfc1323 - контролирует работу временной марки и масштабируемого окна. (0 - выключено, 1 - включено)
kern.ipc.maxsockbuf - максимальный размер TCP буфера.
net.inet.tcp.recvspace - размер TCP буфера для приема. Влияет на размер "скользящего окна".
net.inet.tcp.sendspace - размер TCP буфера для отправки. Влияет на размер "окна переполнения".

Например:

net.inet.ip.intr_queue_maxlen=5000
kern.ipc.maxsockbuf=8388608
net.inet.tcp.sendspace=3217968
net.inet.tcp.recvspace=3217968
net.inet.tcp.rfc1323=1


Много информации было почерпнуто отсюда. За что автору спасибо.

Ярлыки: ,

03.04.2009

Отключение вывода информации ядра при загрузке FreeBSD

Для того чтобы отключить вывод информации, которую выдает ядро системы FreeBSD при загрузке системы нужно:

1. В файле /etc/ttys находим строку

ttyd0 "/usr/libexec/getty std.9600" dialup off secure

изменяем на

ttyd0 "/usr/libexec/getty std.9600" vt100 on secure

2. В файле /boot/loader.conf добавляем следующую строку

console="comconsole"

3. Перезагружаемся и видим только старт загрузчика...

Ярлыки: ,

02.04.2009

Вывод Syslog на 7 консоль FreeBSD

Для того чтобы логи не сыпались на нулевую консоль, можно перевести журналирование на любую другую консоль, в нашем случае на 7. Для этого отключаем 7 консоль в файле /etc/ttys Находим строку:

ttyv7 "/usr/libexec/getty Pc" cons25r on secure

и изменяем значение on на off. Теперь можно перенаправить Syslog. Для этого в файле /etc/syslog.conf
находим строку:

.*err;kern.warning;auth.notice;mail.crit /dev/console

и приводим к виду:

*.*.err;kern.warning;auth.notice;mail.crit /dev/ttyv8

Перезагружаем Syslog:

freebsd# /etc/rc.d/syslogd restart

Комбинацией Alt+F8 переходим на 7 консоль и видим журнал системы

Ярлыки: ,

Украшение FreeBSD

1. Украшение консоли
Увеличение разрешающей способности в FreeBSD:


- Пересобрать ядро с опциями:

options VESA
options SC_PIXEL_MODE

Также можно изменить цвет шрифта по умолчанию добавив в ядро:

options SC_NORM_ATTR=(FG_GREEN|BG_BLACK)

Что означает: Зеленый шрифт на черном фоне.

- Добавить в /etc/rc.conf строку:

allscreens_flags="MODE_xxx"

Например для отображения 800х600 будет режим MODE_320

Режим отображения можно выбрать просмотрев варианты командой:

freebsd# vidcontrol -i mode

Изменение стандартного курсора на мигающий:

- Добавить в /etc/rc.conf строку:

allscreens_flags="-с destructive"

Изменение цвета шрифта и фона:

- Добавить в /etc/rc.conf строку:

allscreens_flags="lightgreen black"

Так будет выглядеть светлозеленый на черном.
 

Примечание!
В /etc/rc.conf параметр allscreens_flags может быть только один. Тоесть для того чтобы одновременно сделать мигающий курсор, изменить разрешение экрана и изменить цвета консоли, нужно привести строку allscreens_flags к виду:

allscreens_flags="-с destructive lightgreen black MODE_320"

Где:
MODE_xxx - режим отображения
-c destructive - мигающий курсор

2. Украшение загрузки
Добавление заставки (SplashScreen) при загрузке:


В файле /boot/loader.conf добавить строки:

splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp"

Добавить в каталог /boot файл картинки-заставки в формате .bmp, разрешением 256 цветов и размером, который установлен в режиме отображения в параметре allscreens_flags файла /etc/rc.conf (Для более ровного отображения) Например если у Вас задан режим MODE_320, то картинка должна быть размером 800х600)

Изменение логотипа BSD при загрузке:

В файле /boot/loader.conf добавить строку:

loader_logo="beastie"

При загрузке вместо буковок BSD появится, привычный по предыдущим версиям, чертенок.

Очистка экрана от информации после загрузки:

Выполнить следующие команды:

freebsd# touch /etc/issue
freebsd# clear > /etc/issue

После загрузки будет видна только строка для авторизации.

Изменение времени отображения меню загрузки:

В файле /boot/loader.conf добавить строку:

autoboot_delay="*"

Где * - время отображения в секундах.

Ярлыки: ,

01.04.2009

Обновление портов FreeBSD через прокси-сервер

После установки системы возникает потребность в обновлении коллекции портов FreeBSD. В случае если у нас директ доступ к интернету все довольно прозаично:

Если запускаем обновление впервые:

freebsd# portsnap fetch
freebsd# portsnap extract
freebsd# portsnap update

Если уже единожды запускали:

freebsd# portsnap fetch
freebsd# portsnap update


Но вот откуда ни возьмись у нас на пути повился пресловутый прокси-сервер, да еще и с авторизацией... Что же делать...? Все довольно просто

freebsd# ee /etc/csh.cshrc

Добавляем туда несколько строк:

setenv HTTP_PROXY http://usename:password@xxx.xxx.xxx.xxx:yyyy
setenv FTP_PROXY http://username:password@xxx.xxx.xxx.xxx:yyyy


Где:

xxx.xxx.xxx.xxx - IP адрес прокси-сервера
yyyy - порт прокси-сервера
username - имя пользователя
password - пароль пользователя

После этого можно пробовать запускать обновления...

Ярлыки: ,

31.03.2009

Перекомпиляция ядра FreeBSD

Для проведения перекомпиляции ядра FreeBSD необходимы следующие действия:

1. Установить исходники системы. Для этого установить диск с FreeBSD и выполнить:

freebsd# mount /cdrom
freebsd# cd /cdrom/7.0-STABLE-200805/src/
freebsd# ./install.sh all


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

freebsd# mkdir /root/kernel
freebsd# cd /root/kernel
freebsd# cp /usr/src/sys/i386/conf/GENERIC /root/kernel/MYKERNEL
freebsd# ln -s /root/kernel/MYKERNEL /usr/src/sys/i386/conf/MYKERNEL


3. Добавить или удалить компоненты ядра, не забыв изменить пункт ident на новое имя ядра

ident MYKERNEL

4. Собрать ядро

freebsd# cd /usr/src/
freebsd# make buildkernel KERNCONF=MYKERNEL


5. Установить ядро

freebsd# make installkernel KERNCONF=MYKERNEL

6. Перезагрузиться

freebsd# reboot

Или эту процедуру можно проделать альтернативным, на мой взгляд, более удобным способом:

Пункты 1, 2, 3 - идентичны. Поправка: Для сборки ядра нижеописанным способом, достаточно, через Sysinstall, установить только исходники самого ядра, а именно /src/sys

4. Создаем конфигурацию ядра

freebsd# cd /usr/src/sys/i386/conf/
freebsd# /usr/sbin/config MYKERNEL

5. Переходим в папку с созданой конфигурацией ядра

freebsd# cd ..
frebsd# cd /compile/MYKERNEL

6. Собираем ядро

freebsd# make cleandepend
freebsd# make depend
freebsd# make
freebsd# make install

7. Перезагружаемся

freebsd# reboot

Основной источник

Ярлыки: ,

17.02.2009

Создание дополнительного петлевого интерфейса в FreeBSD

Для того чтобы создать дополнительный петлевой интерфейс (Loopback), нужно выполнить команду:
ifconfig lo* create
Для того чтобы созданный loopback автоматически поднимался при загрузке/перезагрузке системы, в файле rc.conf нужно дописать
cloned_interfaces="lo*"
Где:
* - номер loopback`а в системе.
Необходимо учесть, что интерфейс lo0 автоматически создается системой.

Ярлыки: ,

16.02.2009

Настройка Watchquagga под FreeBSD

Итак начнем с простого. Что же такое Watchquagga? Это программа из пакета маршрутизации Quagga, которая проверяет состояние демонов маршрутизации zebra, ospfd, bgpd и тд. Для чего? Ну например у нас просто отвалился демон BGP. Варианта решения как минимум 2. Например в 2 часа ночи вызываем такси и рулим на работу чтобы сделать всего 1 простое действие - перезапустить демон bgpd. Либо же Watchquagga сделает это за Вас. Как сконфигурировать? Ну понятно, что должна стоять сама Quagga. В файле rc.conf прописываем:

watchquagga_enable="YES"
watchquagga_flags="-dz -R '/usr/local/etc/rc.d/quagga restart' * * *"

Где:
-d - Параметр запуска в режиме демона
-z - Параметр перезапуска демонов маршрутизации в случае если один или больше не отвечают на опрос но запущены
-R - Параметр перезапуска всех демонов маршрутизации если один или больше не доступны для опроса но мониторятся.
* * * - Перечисление через пробел демонов маршрутизации для мониторинга (напр. zebra bgpd ospf)

Ярлыки: , ,

28.01.2009

Меню порта в FreeBSD

Иногда возникает потребность скомпилировать порт в FreeBSD. Для этого достаточно сделать 2 простых действия:

1. Перейти в директорию с портом
2. Выполнить команду make

Если мы компилируем порт впервые, тогда у нас может высветится текстовое меню опций сборки порта, по типу Sysinstall, если же мы пересобираем заново уже ранее компилированый порт, то такое меню больше не покажется..., а с помощью него довольно удобно выбирать опции для компилирования порта.

Для того чтобы вызвать снова вызвать такое меню необходимо набрать команду

make config

Ну а если Мы уже единожды вызывали такое меню и хотим сбросить настройки, которые были выбраны, необходимо выполнить команду

make rmconfig

Ярлыки: ,

25.01.2009

Дефолтный маршрут в Zebra

Возникла потребность установить дефолтный маршрут в демоне Zebra пакета Quagga. Вообще все оказалось довольно прозаично. Для установки маршрута по умолчанию из Зебры необходимо в режиме конфигурирования набрать:

ip route 0.0.0.0 0.0.0.0 ***.***.***.***

Где ***.***.***.*** - IP следующего следующего маршрутизатора, через который наш маршрутизатор будет выходить в сеть.

Ярлыки: , ,

10.01.2009

Изменение MAC адреса в FreeBSD

1.Отключаем интерфейс
ifconfig * down

2. Изменяем MAC
ifconfig * link ether **:**:**:**:**:**

3. Включаем интерфейс
ifconfig * up

Для того чтобы смена MAC адреса проходила автоматически при загрузке/перезагрузке системы необходимо в файле rc.conf добавить строку:
ifconfig_*="inet xxx.xxx.xxx.xxx netmask yyy.yyy.yyy.yyy"
ifconfig_*_alias**="ether **:**:**:**:**:**"

Где:
* - Название физического интерфейса (напр.: le0);
** - Номер синонима интерфейса (алиаса), связанного с физическим. (напр.: alias0);
xxx.xxx.xxx.xxx - IP адресс интерфейса;
yyy.yyy.yyy.yyy - Сетевая маска;
**:**:**:**:**:** - Новый Mac адресс.

Ярлыки: ,

19.12.2008

Настройка Vlan на FreeBSD

Для того чтобы настроить Vlan`ы на FreeBSD версии 7, необходимо в командной строке выполнить:

#ifconfig vlan* create
#ifconfig vlan* vlan ** vlandev ***
#ifconfig vlan* xxx.xxx.xxx.xxx netmask yyy.yyy.yyy.yyy up

Где:

* - Номер создаваемого Влан устройства;
** - Влан идентификатор (VID), чем будет тегироваться трафик;
*** - Физический интерфейс, к которому привязывается виртульный интерфейс (напр.: le0).

Однако Вы будете неприятно удивлены отсутствием виртуальных интерфейсов после перезагрузки... Во избежания такого недоразумения необходимо в файле rc.conf прописать:
Пример если мы хотим создать 2 Влана.

cloned_interfaces="vlan* vlan*"
ifconfig_vlan*="inet xxx.xxx.xxx.xxx netmask yyy.yyy.yyy.yyy vlan ** vlandev ***"
ifconfig_vlan*="inet xxx.xxx.xxx.xxx netmask yyy.yyy.yyy.yyy vlan ** vlandev ***"

Вот и все. После перезагрузки наши Вланы поднимутся автоматически.

Да. и самое главное. Если IP адреса на Вланы Вы назначаете из дополнительной программы, например Quagga, то в rc.conf дополнительно необходимо прописать: ifconfig_***="up", для того чтобы стартовать сам физический интерфейс...

Ярлыки: ,

07.11.2008

Простая настройка FTP на FreeBSD

Начиная с версии FreeBSD 6.0, можно забыть о запуске FTP демона в FreeBSD через Inetd. Достаточно установить FTP демона через Sysinstall и в файле rc.conf прописать: ftpd_enable="YES"
ftpd_flags="-A -m"

Где первая строка запускает самого FTP демона, а вторая разрешает подключаться к нему только анонимных пользователей с возможностью записи, удаления файлов и папок.

Ярлыки: ,

19.06.2008

Руссификация FreeBSD



Решил наконец то начать посвящать какое то время леди ФРИ!
Начнем с понимания друг друга тоесть языка системы и файлов помощи.

Для того чтобы руссифицировать саму систему необходимо:

1. /etc/rc.conf

keymap="ru.koi8-r"
scrnmap="koi8-r2cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"

2. /etc/profile

export LANG=ru.KOI8-R
export LC_ALL=ru_RU.KOI8-R

3. /etc/ttys

Меняем все значения с cons25 на cons25r

ttyv0 "/usr/libexec/getty Pc" cons25r on secure
ttyv1 "/usr/libexec/getty Pc" cons25r on secure
ttyv2 "/usr/libexec/getty Pc" cons25r on secure
ttyv3 "/usr/libexec/getty Pc" cons25r on secure
ttyv4 "/usr/libexec/getty Pc" cons25r on secure
ttyv5 "/usr/libexec/getty Pc" cons25r on secure
ttyv6 "/usr/libexec/getty Pc" cons25r on secure
ttyv7 "/usr/libexec/getty Pc" cons25r on secure

Для того чтобы руссифицировать Шелл необходимо:

/etc/csh.cshrc

setenv CHARSET KOI8-R
setenv MM_CHARSET KOI8-R
setenv LANG ru_RU.KOI8-R
setenv USE_LANG ru_RU.KOI8-R

Для того чтобы получить руссифицированные МАНы необходимо:

1. В домашней директории создаем файл конфигурации:

freebsd# touch rus_man.conf
freebsd# ee rus_man.conf

2. Добавляем следущие строки и сохраняем:

*default host=cvsup.FreeBSD.org.ua
*default base=/var/db
*default prefix=/usr/src
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
doc-ru

3. Запускаем csup из директории где лежит конфигурационный файл и ждем пока закончится синхронизация текстов:

csup -g -L 2 rus_man.conf

4. Инсталлируем мануалы

freebsd# cd /usr/src/frdp/doc/ru_RU.KOI8-R/man/
freebsd# make && make distrib-dirs \
? && make install && make cleandir

5. Проверяем и пользуемся:

freebsd# man uptime

Formatting page, please wait...Done.
UPTIME(1) Справочник основных команд FreeBSD UPTIME(1)

НАЗВАНИЕ
uptime -- показать как долго работает система

...

ИСТОРИЯ
Команда uptime появилась в 3.0BSD.

FreeBSD 6.1 18 апреля 1994

Также есть интересный скрипт, позволяющий довольно быстро перевести систему. Благодарность выражаем некому Роману Богданову

Ярлыки: ,