RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

Beyond Linux From Scratch. Версия 6.0

Часть VI. Сетевой сервер

BIND-9.3.0p1

Введение в BIND

Пакет BIND предоставляет DNS-сервер и клиентские утилиты. Если Вам интересны только утилиты, то обратитесь к BIND Utilities-9.3.0p1.

Информация о пакете

Дополнительно

Зависимости BIND

Опционально

OpenSSL-0.9.7e.

Опционально (для запуска полного теста)

Net-tools-1.60 (для ifconfig) и модули Perl: Net-DNS.

Опционально (для [пере]сборки документации)

OpenJade-1.3.2, JadeTeX-3.13, DocBook DSSSL Stylesheets-1.78.

Установка BIND

Установим BIND запуском следующих команд:


patch -Np1 -i ../9.3.0-patch1 &&
sed -i -e "s/dsssl-stylesheets/&-1.78/g" configure &&
./configure --prefix=/usr --sysconfdir=/etc \
            --enable-threads --with-libtool &&
make

А теперь, как пользователь root:


make install &&
chmod 755 \
      /usr/lib/{lib{bind9,isc{,cc,cfg},lwres}.so.?.?.?,libdns.so.20.0.0} &&
mv /usr/share/man/man8/named.conf.5 /usr/share/man/man5 &&
cd doc &&
install -d -m755 /usr/share/doc/bind-9.3.0/{arm,draft,misc,rfc} &&
install -m644 arm/*.html /usr/share/doc/bind-9.3.0/arm &&
install -m644 draft/*.txt /usr/share/doc/bind-9.3.0/draft &&
install -m644 rfc/* /usr/share/doc/bind-9.3.0/rfc &&
install -m644 misc/{dnssec,ipv6,migrat*,options,rfc-compliance,roadmap,sdb} \
        /usr/share/doc/bind-9.3.0/misc

Для запуска полного теста перед установкой пакета Вам надо установить некоторые фиктивные интерфейсы (для ifconfig ). Выполним следующие команды для выполнения полного теста (Вам необходимо быть пользователем root для выполнения команд ifconfig):


bin/tests/system/ifconfig.sh up &&
make check >check.log 2>&1 &&
bin/tests/system/ifconfig.sh down

Если желаете, выполните следующую команду для подтверждения, что все 145 тестов выполнены успешно:


grep "R:PASS" check.log | wc -l

Описание команд

patch -Np1 -i ../9.3.0-patch1: Существует уязвимость в коде DNSSEC Просмотрите http://www.kb.cert.org/vuls/id/938617. Этот патч устраняет ошибку.

sed -i -e ... configure: Эта команда принуждает configure искать стили DSSSL в стандартном месте BLFS.

--sysconfdir=/etc: Эта команда принуждает BIND искать файлы конфигурации в /etc вместо /usr/etc.

--enable-threads: Этот параметр включает способность multi-threading.

--with-libtool: Эта команда включает сборку динамических библиотек и связывает установленные бинарники с этими библиотеками.

cd doc; install ...: Эти команды устанавливают дополнительную документацию о пакете. Вы можете пропустить некоторые или все из этих команд.

Конфигурация BIND

Файлы конфигурации

named.conf, root.hints , 127.0.0, rndc.conf и resolv.conf.

Конфигурационная информация

BIND будет настроен для запуска в chroot окружении как непривилегированный пользователь (named). Такая конфигурация более защищенная в том, что компромисс DNS может действовать только на некоторые файлы в ДОМАШНЕМ каталоге пользователя named.

Создадим непривилегированного пользователя и группу named:


groupadd named &&
useradd -m -c "BIND Owner" -g named -s /bin/false named

Установим некоторые файлы, каталоги и устройства, необходимые для BIND:


cd /home/named &&
mkdir -p dev etc/namedb/slave var/run &&
mknod /home/named/dev/null c 1 3 &&
mknod /home/named/dev/random c 1 8 &&
chmod 666 /home/named/dev/{null,random} &&
mkdir /home/named/etc/namedb/pz &&
cp /etc/localtime /home/named/etc

Затем сгенерируем ключ для использования в файлах named.conf и rdnc.conf, используя команду rndc-confgen:


rndc-confgen -b 512 | grep -m 1 "secret" | cut -d '"' -f 2

Создадим файл named.conf, из которого named будет считывать положение файлов зон, корневого сервера имен и ключи безопасности DNS:


cat > /home/named/etc/named.conf << "EOF"
options {
   directory "/etc/namedb";
   pid-file "/var/run/named.pid";
   statistics-file "/var/run/named.stats";
};
controls {
   inet 127.0.0.1 allow {localhost;} keys {rndc_key;};
};
key "rndc_key" {
   algorithm hmac-md5;
   secret "[Вставьте сюда секрет из вывода rndc-confgen]";
};
zone "." {
   type hint;
   file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
   type master;
   file "pz/127.0.0";
};

// Bind 9 теперь регистрируется по умолчанию через syslog (исключая отладку).
// Правила регистрации по умолчанию.
logging {
   category default {default_syslog; default_debug;};
   category unmatched {null;};

channel default_syslog {
   syslog daemon;// посылка на демон syslog
   severity info;// только посылает очередную информацию
};

channel default_debug {
   file "named.run"; // пишет на named.run в рабочем каталоге
   // Замечание: stderr используется вместо "named.run",
   // если сервер запущен с опцией '-f'.
   severity dynamic; // регистрация на текущем уровне отладки сервера
};

channel default_stderr {
   stderr; // запись на stderr
   severity info;// только посылает очередную информацию
};

channel null {
   null;// сбрасывает все, что послано в этот канал
};
};
EOF

Создадим файл rndc.conf при помощи следующих команд:


cat > /etc/rndc.conf << "EOF"
key rndc_key {
   algorithm "hmac-md5";
   secret
   "[Вставьте сюда секрет из вывода rndc-confgen]";
};

options {
   default-server localhost;
   default-keyrndc_key;
};
EOF

Файл rndc.conf содержит информацию для контролирования операций named при помощи утилиты rndc.

Создадим файл зоны при со следующим содержанием:


cat > /home/named/etc/namedb/pz/127.0.0 << "EOF"
$TTL 3D
@INSOA ns.local.domain. hostmaster.local.domain. (
   1 ; Serial
   8H; Refresh
   2H; Retry
   4W; Expire
   1D) ; Minimum TTL
NSns.local.domain.
1 PTR localhost.
EOF

Создадим файл root.hints при помощи следующих команд:

[Замечание]

Замечание

Предупреждение должно быть использовано для подтверждения, что в этом файле нет ведущих пробелов.


cat > /home/named/etc/namedb/root.hints << "EOF"
. 6DINNSA.ROOT-SERVERS.NET.
. 6DINNSB.ROOT-SERVERS.NET.
. 6DINNSC.ROOT-SERVERS.NET.
. 6DINNSD.ROOT-SERVERS.NET.
. 6DINNSE.ROOT-SERVERS.NET.
. 6DINNSF.ROOT-SERVERS.NET.
. 6DINNSG.ROOT-SERVERS.NET.
. 6DINNSH.ROOT-SERVERS.NET.
. 6DINNSI.ROOT-SERVERS.NET.
. 6DINNSJ.ROOT-SERVERS.NET.
. 6DINNSK.ROOT-SERVERS.NET.
. 6DINNSL.ROOT-SERVERS.NET.
. 6DINNSM.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 6DINA 198.41.0.4
B.ROOT-SERVERS.NET. 6DINA 192.228.79.201
C.ROOT-SERVERS.NET. 6DINA 192.33.4.12
D.ROOT-SERVERS.NET. 6DINA 128.8.10.90
E.ROOT-SERVERS.NET. 6DINA 192.203.230.10
F.ROOT-SERVERS.NET. 6DINA 192.5.5.241
G.ROOT-SERVERS.NET. 6DINA 192.112.36.4
H.ROOT-SERVERS.NET. 6DINA 128.63.2.53
I.ROOT-SERVERS.NET. 6DINA 192.36.148.17
J.ROOT-SERVERS.NET. 6DINA 192.58.128.30
K.ROOT-SERVERS.NET. 6DINA 193.0.14.129
L.ROOT-SERVERS.NET. 6DINA 198.32.64.12
M.ROOT-SERVERS.NET. 6DINA 202.12.27.33
EOF

Файл root.hints является списком корневых сервером имен. Этот файл должен быть периодически обновляем утилитой dig. Текущая копия root.hints может быть получена из ftp://rs.internic.net/domain/named.root. Проконсультируйтесь в BIND 9 Administrator Reference Manual по поводу дополнительных деталей.

Создайте или измените resolv.conf для использования нового сервера имен при помощи следующих команд:

[Замечание]

Замечание

Замените [yourdomain.com] Вашим собственным правильным именем домена.


cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search [yourdomain.com]
nameserver 127.0.0.1
EOF

Установим права доступа для chroot окружения при помощи следующих команд:


chown -R named.named /home/named

Для запуска сервера DNS во время загрузки установим стартовый скрипт /etc/rc.d/init.d/bind, включенный в пакет blfs-bootscripts-6.0.


make install-bind

Теперь запустим BIND при помощи стартового скрипта:


/etc/rc.d/init.d/bind start

Тестирование BIND

Проверим новую установку BIND 9. Сначала запросим адрес локального хоста при помощи dig:


dig -x 127.0.0.1

Теперь попробуем просмотреть внешнее имя, обращая внимание на отличие в скорости ответов, обусловленное кэшированием. Запустите команду dig дважды по одним и тем же адресам:


dig www.linuxfromscratch.org &&
dig www.linuxfromscratch.org

Вы можете увидеть почти немедленные результаты кэширования имен. Проконсультируйтесь в BIND Administrator Reference Manual, размещенном в doc/arm/Bv9ARM.html в дереве исходников пакета, для получения дополнительных опций конфигурации.

Содержание

Установленные программы: dig, dnssec-keygen, dnssec-signzone, host, isc-config.sh, lwresd, named, named-checkconf, named-checkzone, nslookup, nsupdate, rndc и rndc-confgen. Установленные библиотеки: libbind9.[so,a], libdns.[so,a], libisc.[so,a], libisccc.[so,a], libisccfg.[so,a] и liblwres.[so,a]. Установленные каталоги: /home/named, /usr/include/bind9, /usr/include/dns, /usr/include/dst, /usr/include/isc, /usr/include/isccc, /usr/include/isccfg, /usr/include/lwres и /usr/share/doc/bind-9.3.0.

Короткое описание

dig

Опрашивающие DNS-серверы.

dnssec-keygen

Это генератор ключей для защиты DNS.

dnssec-signzone

Генерирует знаковые версии файлов зон.

host

Утилита для просмотра DNS.

lwresd

Только кэширующий сервер имен для использования в локальных процессах.

named

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

named-checkconf

Проверяет синтаксис файлов named.conf.

named-checkzone

Проверяет правильность файла зон.

nslookup

Это программа, используемая для запроса серверов имен интернет-доменов.

nsupdate

Используется для представления запросов обновления DNS.

rndc

Контролирует операции BIND.

rndc-confgen

Генерирует файлы rndc.conf.

Поиск

 

Найди своих коллег!