Также расмотренты некоторые опции по тюнингу производительности и надежности.
Вся настройка проводилась на FreeBSD 8.x Bind 9.x
По умолчанию во FreeBSD уже есть named, его нужно просто настроить.
1. Создаем конфиг для утилиты rndc,при помощи которой можно управлять named (хотя возможностей пока маловато...)
#/usr/sbin/rndc-confgen > /etc/namedb/rndc.conf
2. В /etc/namedb/rndc.conf копируем вторую часть в /etc/namedb/named.conf иубираем коментарии
# key "rndc-key" {
algorithm hmac-md5;
# secret "++secret-key==";
# };
#.
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
3. Создаем ACL /etc/namedb/named.conf
acl localnet { 192.168.0.0/22; 127.0.0.1;};.
acl all { any; };
4. Настраиваем логирование (мой пример)
// Relative to the chroot directory, if any
logging {
channel syslog {
file "/var/log/named/named.log";
severity info;
print-time yes;
print-category yes;
print-severity yes;
};
channel security_ch {
file "/var/log/named/security.log";
print-time yes;
print-category yes;
};
channel lame {
file "/var/log/named/lame.log";
print-time yes;
print-category yes;
};
channel default_ch {
file "/var/log/named/default.log";
print-time yes;
print-category yes;
};
category default { syslog; };
category security { security_ch; };
category lame-servers { null; };
category default { default_ch; };
};
5. Настраиваем раздел опций.
options {
// Relative to the chroot directory, if any
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
// Запрет отдавать номер версии сервера.
version none;
// Запрет отдавать имя хоста, на котором работает BIND
hostname none;
// запрет отдавать запросы об идентификаторе
server-id none;
// Разрешаем по-умолчанию днс запросы только от доверенных сетей
allow-query { localnet; };
// Разрешать ли рекурсивные запросы, или отдавать только те зоны, которые держит сам сервак.
recursion yes;
// Посылка рекурсивных запросов
// разрешена только клиентам подсети
allow-recursion { localnet; };
// Игнорировать запросы blackhole
// DNS-сервер не посылает запросы к DNS-серверам из этого списка
// и не отвечает на запросы, получаемые от этих серверов.
blackhole {
0.0.0.0/8;
10.0.0.0/8;
169.254.0.0/16;
172.16.0.0/12;
192.0.2.0/24;
192.168.0.0/16;
224.0.0.0/4;
240.0.0.0/4;
};
// Интервал принудительной очистки кеша. По-умолчанию - 60 мин.
// Экономит ОЗУ, использует CPU для очистки
// При 0 - отключить очистку (Удаление данных при обнулении TTL)
cleaning-interval 360;
// Количество рекурсивных запросов
recursive-clients 5000; // По-умолчанию 1000
// Максимальный объем памяти, отводимой под кэш DNS-сервера, в байтах
// Когда объем данных кэша достигает этог о предела, DNS-сервер
// принудительно удаляет записи, даже если срок их жизн и не истек,
// чтобы не превысит ь ограничение . По умолчанию - unlimited,
// то есть записи удаляются из кэша только по истечении
их времени жизни .
max-cache-size 128M;
max-acache-size 128M;
// Параметр max-ncache-ttl устанавливает максимальное время
// хранения отрицательных ответов , в секундах .
// Значение по умолчанию - 10800 секунд (3 часа) .
max-ncache-ttl 10800;
// Устанавливает максимальное время кэширования
// обычных (положительных ) ответов. По умолчанию - одна неделя
// Выставляю 1 сутки
max-cache-ttl 86400;
clients-per-query 70;
max-clients-per-query 100;
Ограничение участников транзакций на основе IP-адреса
allow-query: указывает список хостов, которым разрешено запрашивать все зоны name-сервера или конкретную зону внутри name-сервера.
allow-recursion: указывает список хостов, которым разрешено создавать рекурсивные запросы к name-серверу для всех зон или для конкретной зоны, обслуживаемой name-сервером.
allow-transfer: указывает список хостов, которым разрешено инициировать запросы зонной пересылки к name-серверу для всех зон или для конкретной зоны внутри name-сервера. Данное утверждение обязательно требуется в конфигурации первичного name-сервера.
allow-update: указывает список хостов, которым разрешено инициировать запросы динамического обновления.
allow-update-forwarding: указывает список хостов, которым разрешено перенаправление запросов динамического обновления (независимо от того, кто является источником запроса).
allow-notify: указывает список хостов, с которых можно принимать сообщения DNS NOTIFY, говорящих об изменениях в зонном файле. Данный список относится только к конфигурации вторичного name-сервера.
blackhole: указывает список хостов, которые входят в черный список (запрещен доступ) для инициализации любых транзакций с данным name-сервером.
6.1 Настройка прав для директории /var/named/etc/namedb
Необходимо отредактировать файл /etc/mtree/BIND.chroot.dist.
Этот файл выставляет права на файлы и папки для chroot.
Более детально можно прочитать в /usr/src/etc/mtree/README
Сохраняем стандартный файл
cp /etc/mtree/BIND.chroot.dist /etc/mtree/BIND.chroot.dist_BACK
Приводим к следующему виду /etc/mtree/BIND.chroot.dist
# $FreeBSD$
#
# Please see the file src/etc/mtree/README before making changes to this file.
#
/set type=dir uname=bind gname=wheel mode=0500
.
dev uname=root mode=0555
..
etc
namedb uname=bind mode=0500
dynamic uname=bind mode=0700
..
master uname=bind mode=0500
..
slave uname=bind mode=0700
..
working uname=bind mode=0700
..
..
..
/set type=dir uname=bind gname=wheel mode=0755
var uname=root
dump
..
log
..
run
named
..
..
stats
..
..
..
Выставляем руками некоторые права доступа
chown -R bind:wheel /var/named/etc/namedb
chmod -R go-rwx /var/named/etc/namedb
cd /var/named/etc/namedb
chmod u-wx named.root named.conf rndc.conf
chmod -R u+rw-x /var/named/etc/namedb/slave/*
chmod -R u+r-wx /var/named/etc/namedb/master/*
Рестарт named. При рестарте выставляются все права на папки в соответствии с /etc/mtree/BIND.chroot.dist
Если будут несоответствия прав доступа, будут выданы соответствующие сообщения, в первый раз это нормально. Предварительно нужно выполнить пункт 7
/etc/rc.d/named restart
Проверяем права доступа
# ll /etc/namedb/
total 87
drwx------ 2 bind wheel 2 Jul 18 02:12 dynamic
dr-x------ 2 bind wheel 146 Dec 30 17:58 master
-r-------- 1 bind wheel 21333 Jan 12 13:22 named.conf
---------- 1 bind wheel 13998 Dec 3 13:14 named.conf_DEFAULT
---------- 1 bind wheel 34223 Jan 11 13:19 named.conf_OLD
-r-------- 1 bind wheel 3009 Jul 18 02:18 named.root
-r-------- 1 bind wheel 479 Dec 3 14:12 rndc.conf
-r-------- 1 bind wheel 1439 Dec 1 19:49 rndc.conf.sample
drwx------ 2 bind wheel 6 Dec 3 14:40 slave
drwx------ 2 bind wheel 2 Jul 18 02:12 working
6.2 Настройка прав для директорий логов
#mkdir /var/named/var/log/named
#chmod 700 /var/named/var/log/named
#chown bind:wheel /var/named/var/log/named
#ln -s /var/named/var/log/named /var/log/named
7. Автозапуск - добавляем в /etc/rc.conf
### DNS
named_enable="YES"
named_uid="bind"
8. Ротация логов. Добавляем в /etc/newsyslog.conf
# DNS
/var/log/named/named.log bind:wheel 600 7 200 * JC
/var/log/named/security.log bind:wheel 600 7 200 * JC
/var/log/named/default.log bind:wheel 600 7 200 * JC
/var/log/named/lame.log bind:wheel 600 7 200 * JC
9. Все :) !
Работа с утилитой rndc
Перечитать конфиг named.conf
# rndc reload
server reload successful
Получить данные статистики named.stat (должно быть настроено в named.conf)Путь к файлу указан в конфиге относительно корня песочницы.
# rndc stats
# rndc status
version: 9.7.1 (version.bind/txt/ch disabled)
CPUs found: 1
worker threads: 1
number of zones: 129
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/50
tcp clients: 0/100
server is up and running
Дамп кеша в файл (debug проблем резолва какого либо домена в интернете)
rndc dumpdb
Полный сброс кеша вашего DNS сервера:
rndc flush
Просто полезные команды
Просмотре версии BIND
# /usr/sbin/named -v
BIND 9.7.1
Если в папке master у вас нет файлов localhost.rev и localhost-v6.rev, то в /etc/namedb есть файл make-localhost и выполнив команду, эти два файла будут созданы автоматически.
sh make-localhost
Рестарт BIND
#/etc/rc.d/named restart
Проверка конфига /etc/namedb/named.conf, если есть какие либо ошибки, они будут выданы
#named-checkconf
Проверка зон
named-checkzone movie.edu db.movie
zone movie.edu/IN: loaded serial 4
OK
Проверка трансфера зоны
dig @ns1.example.com example.com AXFR
ОШИБКИ
Ошибка возникает при получении зоны от мастера на слейве.
Побороть эту ошибку можно прописав полнуй путь к файлу зоны.
general: dumping master file: slave/tmp-ZyMPa0odDK: open: file not found
UPDATE 19.01.2011
В основном Использовалась книга Альбитц П , Ли К DNS и BIND. Издательство Символ Плюс.
Теория и настройка DNS сервера (bind) на FreeBSD
При запуске named.reload появляется
ОтветитьУдалитьrndc: connect failed: 127.0.0.1#953: connection refused
Что делать?
FreeBSD 8.3
попытаться проделать следующее (описано в сатье)
ОтветитьУдалить1. сгенерировать заново rndc ключ.
2. скопировать его в named. /etc/namedb/rndc.conf - НЕ УДАЛЯТЬ!!!
3. рестарт named. Проверить, что порт 953 слушается named
4. проверить еще раз
# rndc status
Удачи :)
Спасибо, пожулу лучшее рководство!
ОтветитьУдалить