Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:bind9 [2014/11/02 12:30] |
wiki:bind9 [2016/06/01 19:24] (текущий) [Настройка логгирования] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Bind9 ====== | + | ====== BIND 9 ====== |
+ | <note tip>Эта статья не закончена. Вы можете помочь проекту добавив следующую информацию: | ||
+ | * описание BIND 9 | ||
+ | * ссылки на другие статьи и сайты посвященные BIND 9 | ||
+ | * wiki-разметка | ||
+ | </note> | ||
+ | В этой статье рассказывается как установить и настроить собственный кэширующий DNS-сервер BIND 9 с вымышленной зоной исключительно для локальной сети c последующим помещением его в "песочницу" [[chroot]]. | ||
- | Устанавливаем собственный кэширующий DNS сервер (bind 9) с вымышленной зоной исключительно для локальной сети. С последующим помещением его | + | ===== Установка ===== |
- | в "песочницу" (chroot). (Нет купленного доменного имени, но есть статический ip). | + | <style float-left>[[app>bind9|BIND 9]]</style> |
+ | [[wiki:установка_программ|Установить]] BIND 9 можно перейдя по ссылке слева или введя в терминале следующую команду: | ||
+ | <code bash>sudo apt-get install bind9</code> | ||
- | УСТАНОВКА BIND 9 | + | ===== Помещение BIND 9 в "песочницу" ===== |
+ | -- Останавите демон BIND 9 | ||
+ | .. <code bash>/etc/init.d/bind9 stop</code> | ||
+ | .. Из соображений безопасности лучше запускать BIND в chroot среде, для этого проделайте несколько простых операций. | ||
+ | -- Отредактируйте файл ///etc/init.d/bind9//, в него надо добавить строку в среде chroot которая будет находится в ///var/lib/named//. Измените строку ''OPTIONS="-u bind"'' на ''OPTIONS="-u bind -t /var/lib/named"'' | ||
+ | .. <code bash>OPTIONS="-u bind -t /var/lib/named" | ||
+ | # Set RESOLVCONF=no to not run resolvconf | ||
+ | RESOLVCONF=yes</code> | ||
+ | .. :!: Здесь важно то, что изменять надо файл в папке init.d, а не в папке default! Если не найдете в скрипте init.d, добавьте эти строки. | ||
+ | -- Создайте необходимые для работы BIND 9 директории. | ||
+ | .. <code bash>mkdir -p /var/lib/named/etc | ||
+ | mkdir /var/lib/named/dev | ||
+ | mkdir -p /var/lib/named/var/cache/bind | ||
+ | mkdir -p /var/lib/named/var/run/bind/run</code> | ||
+ | -- Переместите директорию с конфигурацией BIND 9 из ///etc// в ///var/lib/named/etc//: | ||
+ | .. <code bash>mv /etc/bind /var/lib/named/etc</code> | ||
+ | -- Создайте символическую ссылку на новую директорию с файлами конфигурации BIND на случай если в дальнейшем вы соберётесь обновить пакет, это поможет избежать проблем. | ||
+ | .. <code bash>ln -s /var/lib/named/etc/bind /etc/bind</code> | ||
+ | -- Создайте необходимые устройства и установите права на каталоги | ||
+ | .. <code bash>mknod /var/lib/named/dev/null c 1 3 | ||
+ | mknod /var/lib/named/dev/random c 1 8 | ||
+ | chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random | ||
+ | chown -R bind:bind /var/lib/named/var/* | ||
+ | chown -R bind:bind /var/lib/named/etc/bind</code> | ||
- | 1. Устанавливаем Bind 9 | + | ==== Настройка логгирования ==== |
- | <code>ubuntu_server:~# apt-get install bind9 | + | Для того чтобы логирование событий работало из песочницы необходимо изменить стартовый скрипт демона ''sysklogd'' для того, чтобы сообщения BIND 9 попадали в [[syslog]]. Отредактируйте файл ///etc/default/sysklogd//, измените там строку ''SYSLOGD=""'' на ''SYSLOGD="-u syslog -a /var/lib/named/dev/log"''. Опять же очень многие пытаются найти сточку SYSLOGD="" в файле /etc/init.d/sysklogd а её там нет и быть не должно – смотреть надо в директории /etc/default/sysklogd. Иногда sysklogd ругается на опцию "-u", тогда укажите SYSLOGD="-a /var/lib/named/dev/log". |
- | </code> | + | |
- | 2. Если все установилось без ошибок то останавливаем его | + | После изменения настроек syslog перезапустите демон: |
- | <code> ubuntu_server:~# /etc/init.d/bind9 stop | + | <code bash>/etc/init.d/sysklogd restart</code> |
- | </code> | + | <note important>В зависимости от дистрибутива, такой службы может и не быть. Появилась служба более глобального масштаба – rsyslog объединяющая две службы syslogd и klogd. Поэтому надо идти в папку /etc/rsyslog.d и создать там файл bind-chroot.conf (владелец root, прав достаточно будет 640). |
- | Из соображений безопасности лучше запускать Bind в chroot среде, для этого | + | <code bash>touch /etc/rsyslog.d/bind-chroot.conf |
- | проделайте несколько простых операций. | + | chown root:root /etc/rsyslog.d/bind-chroot.conf |
- | + | chmod 640 /etc/rsyslog.d/bind-chroot.conf</code> | |
- | 3. Отредактируйте файл /etc/init.d/bind9, туда надо добавить строку в среде chroot | + | Для того, чтобы BIND 9 помещенный в chroot сумел найти системный лог добавьте в созданный файл ///etc/rsyslog.d/bind-chroot.conf// только одну строчку: |
- | которая будет находится у нас в /var/lib/named. | + | <code>$AddUnixListenSocket /var/lib/named/dev/log</code> |
- | Измените строку OPTIONS="-u bind" на OPTIONS="-u bind -t /var/lib/named" | + | |
- | <code>OPTIONS="-u bind -t /var/lib/named" | + | |
- | # Set RESOLVCONF=no to not run resolvconf | + | |
- | RESOLVCONF=yes | + | |
- | </code> | + | |
- | <note warning>Здесь важно то, что изменять надо файл в папке init.d, а не в папке default! Если не найдете в скрипте init.d, добавьте эти строки.</note> | + | |
- | 4. Теперь создадим все необходимые для работы bind9 директории. Кому привычнее в mc, кому из консоли: | + | |
- | <code> | + | |
- | ubuntu_server:~# mkdir -p /var/lib/named/etc | + | |
- | ubuntu_server:~# mkdir /var/lib/named/dev | + | |
- | ubuntu_server:~# mkdir -p /var/lib/named/var/cache/bind | + | |
- | ubuntu_server:~# mkdir -p /var/lib/named/var/run/bind/run | + | |
- | </code> | + | |
- | 5. Переместите директорию с конфигурацией bind9 из /etc в /var/lib/named/etc: | + | |
- | <code>ubuntu_server:~# mv /etc/bind /var/lib/named/etc</code> | + | |
- | 6. Создадим символическую ссылку на новую директорию с файлами конфигурации bind на случай если в дальнейшем вы соберётесь обновить пакет, это поможет избежать проблем. | + | |
- | <code>ubuntu_server:~# ln -s /var/lib/named/etc/bind /etc/bind</code> | + | |
- | 7. Создадим необходимые устройства и установим права на каталоги | + | |
- | <code> | + | |
- | ubuntu_server:~# mknod /var/lib/named/dev/null c 1 3 | + | |
- | ubuntu_server:~# mknod /var/lib/named/dev/random c 1 8 | + | |
- | ubuntu_server:~# chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random | + | |
- | ubuntu_server:~# chown -R bind:bind /var/lib/named/var/* | + | |
- | ubuntu_server:~# chown -R bind:bind /var/lib/named/etc/bind | + | |
- | </code> | + | |
- | 8. Далее надо немного изменить стартовый скрипт демона sysklogd для того что бы сообщения bind попадали в syslog. Отредактировать надо файл /etc/default/sysklogd, измените там строку SYSLOGD="" на SYSLOGD="-u syslog -a /var/lib/named/dev/log". Опять же очень многие пытаются найти сточку SYSLOGD="" в файле /etc/init.d/sysklogd а её там нет и быть не должно – смотреть надо в директории /etc/default/sysklogd. Иногда sysklogd ругается на опцию "-u", тогда укажите SYSLOGD="-a /var/lib/named/dev/log". | + | |
- | + | ||
- | И перезапуск службы: | + | |
- | <code>ubuntu_server:~# /etc/init.d/sysklogd restart</code> | + | |
- | <note important> | + | |
- | В зависимости от дистрибутива, такой службы может и не быть. Появилась служба более глобального масштаба – rsyslog объединяющая две службы syslogd и klogd. Поэтому надо идти в папку /etc/rsyslog.d и создать там файл bind-chroot.conf (владелец root, прав достаточно будет 640) | + | |
</note> | </note> | ||
- | <code> | + | Также необходимо создать папку ///var/lib/named/var/log// для последующего хранения файла с логами: |
- | ubuntu_server:~# touch /etc/rsyslog.d/bind-chroot.conf | + | <code bash>mkdir /var/lib/named/var/log |
- | ubuntu_server:~# chown root:root /etc/rsyslog.d/bind-chroot.conf | + | chown root:root /var/lib/named/var/log |
- | ubuntu_server:~# chmod 640 /etc/rsyslog.d/bind-chroot.conf | + | chmod 755 /var/lib/named/var/log</code> |
- | ubuntu_server:~# vim /etc/rsyslog.d/bind-chroot.conf | + | |
- | </code> | + | |
- | Для того, чтобы Bind 9 помещенный в chroot сумел найти системный лог добавьте в этот файл только одну строчку: | + | |
- | <code>$AddUnixListenSocket /var/lib/named/dev/log</code> | + | |
- | Далее приступим к настройке самого сервера имен. Заранее необходимо создать папку /var/lib/named/var/log для последующего хранения файла с логами: | + | |
- | <code> | + | |
- | ubuntu_server:~# mkdir /var/lib/named/var/log | + | |
- | ubuntu_server:~# chown root:root /var/lib/named/var/log | + | |
- | ubuntu_server:~# chmod 755 /var/lib/named/var/log | + | |
- | </code> | + | |
- | Вот теперь можно приступать к настройке DNS сервера. | + | |
- | + | ||
- | НАСТРОЙКА BIND 9 | + | |
+ | ===== Настройка BIND 9 ===== | ||
1. I этап - настройка зон – создаем отдельный файл конфигураций для наших зон ( в данном случае у нас будет одна зона описывающая несуществующий домен .ex): | 1. I этап - настройка зон – создаем отдельный файл конфигураций для наших зон ( в данном случае у нас будет одна зона описывающая несуществующий домен .ex): | ||
- | <code> | + | <code bash>touch /var/lib/named/etc/bind/myzones.conf |
- | ubuntu_server:~# touch /var/lib/named/etc/bind/myzones.conf | + | chown bind:bind /var/lib/named/etc/bind/myzones.conf</code> |
- | ubuntu_server:~# chown bind:bind /var/lib/named/etc/bind/myzones.conf | + | 2. Теперь отредактируем файл конфигурации нашей зоны .ex (имя вашего домена) ///var/lib/named/etc/bind/myzones.conf// добавив следующее (.ex - имя вашего домена) |
- | </code> | + | <code>zone "ex." { |
- | 2. Теперь отредактируем файл конфигурации нашей зоны .ex (имя вашего домена) | + | |
- | <code> | + | |
- | ubuntu_server:~# nano /var/lib/named/etc/bind/myzones.conf | + | |
- | </code> | + | |
- | в файл вносим следующее (.ex - имя вашего домена) | + | |
- | <code> | + | |
- | zone "ex." { | + | |
type master; | type master; | ||
file "/etc/bind/db.ex"; | file "/etc/bind/db.ex"; | ||
- | }; | + | };</code> |
- | </code> | + | |
В данном случаем мы специально создаем «несуществующую зону», так как настраиваем BIND для локальной сети – основная задача настроить кэширующий ДНС с возможностью обработки локальных имен/адресов (посредством создания зоны .ex и прямой и обратной зоны для локальной сети 192.168.1.0/24) | В данном случаем мы специально создаем «несуществующую зону», так как настраиваем BIND для локальной сети – основная задача настроить кэширующий ДНС с возможностью обработки локальных имен/адресов (посредством создания зоны .ex и прямой и обратной зоны для локальной сети 192.168.1.0/24) | ||
3. Теперь создадим файл зоны (прямой) для локальной сети | 3. Теперь создадим файл зоны (прямой) для локальной сети | ||
- | <code> | + | <code bash>touch /var/lib/named/etc/bind/db.ex |
- | ubuntu_server:~# touch /var/lib/named/etc/bind/db.ex | + | chown bind:bind /var/lib/named/etc/bind/db.ex |
- | ubuntu_server:~# chown bind:bind /var/lib/named/etc/bind/db.ex | + | nano /var/lib/named/etc/bind/db.ex</code> |
- | ubuntu_server:~# nano /var/lib/named/etc/bind/db.ex | + | |
- | </code> | + | |
и заполните файл как показано ниже | и заполните файл как показано ниже | ||
<code> | <code> | ||
Строка 109: | Строка 86: | ||
<note important>Обратите внимание на так называемый серийный номер зоны(serial). Дело в том, что сервер имён не использует конфигурации с тем же серийным номером или младше чем был указан. Поэтому, всякий раз, когда Вы вносите исправления в любой из файлов зон, - обязательно "увеличивайте" этот номер на какое то значение. Я делаю так: за первую часть - беру дату последнего редактирования файла в фомате (YYYYMMDD)+ сколько раз редактировался этот файл в этот день (01,02,03,04...) best practice так сказать!</note> | <note important>Обратите внимание на так называемый серийный номер зоны(serial). Дело в том, что сервер имён не использует конфигурации с тем же серийным номером или младше чем был указан. Поэтому, всякий раз, когда Вы вносите исправления в любой из файлов зон, - обязательно "увеличивайте" этот номер на какое то значение. Я делаю так: за первую часть - беру дату последнего редактирования файла в фомате (YYYYMMDD)+ сколько раз редактировался этот файл в этот день (01,02,03,04...) best practice так сказать!</note> | ||
4. Теперь создадим файл обратной зоны для локальной сети local.rev | 4. Теперь создадим файл обратной зоны для локальной сети local.rev | ||
- | <code> | + | <code bash>touch /var/lib/named/etc/bind/local.rev |
- | ubuntu_server:~# touch /var/lib/named/etc/bind/local.rev | + | chown bind:bind /var/lib/named/etc/bind/local.rev |
- | ubuntu_server:~# chown bind:bind /var/lib/named/etc/bind/local.rev | + | nano /var/lib/named/etc/bind/local.rev </code> |
- | ubuntu_server:~# nano /var/lib/named/etc/bind/local.rev | + | |
- | </code> | + | |
и заполните его: | и заполните его: | ||
<code> | <code> | ||
Строка 128: | Строка 103: | ||
</code> | </code> | ||
5.Редактируем файл /var/lib/named/etc/bind/named.conf.options | 5.Редактируем файл /var/lib/named/etc/bind/named.conf.options | ||
- | <code>ubuntu_server:~# nano /var/lib/named/etc/bind/named.conf.options</code> | + | <code bash>nano /var/lib/named/etc/bind/named.conf.options</code> |
и впишите туда несколько опций усложняющих жизнь хакерам и отключим поддержку IPv6: | и впишите туда несколько опций усложняющих жизнь хакерам и отключим поддержку IPv6: | ||
<code> | <code> | ||
Строка 138: | Строка 113: | ||
</code> | </code> | ||
6. Напоследок отредактируем файл /var/lib/named/etc/named.conf | 6. Напоследок отредактируем файл /var/lib/named/etc/named.conf | ||
- | <code>ubuntu_server:~# nano /var/lib/named/etc/bind/named.conf</code> | + | <code bash>nano /var/lib/named/etc/bind/named.conf</code> |
во первых включим в конце в конец файла наш файл зон | во первых включим в конце в конец файла наш файл зон | ||
<code>1 include "/etc/bind/myzones.conf";</code> | <code>1 include "/etc/bind/myzones.conf";</code> | ||
Строка 167: | Строка 142: | ||
<code>1 include "/etc/bind/myzones.conf";</code> | <code>1 include "/etc/bind/myzones.conf";</code> | ||
Для того, чтобы логи собирались в отдельный файл named.log, и не "сорили" в системные файлы – создадим в нашей "песочнице" (в папке, созданной ранее /var/lib/named/var/log), файл для логов и сделаем символическую ссылку в обычную папку log: | Для того, чтобы логи собирались в отдельный файл named.log, и не "сорили" в системные файлы – создадим в нашей "песочнице" (в папке, созданной ранее /var/lib/named/var/log), файл для логов и сделаем символическую ссылку в обычную папку log: | ||
- | <code> | + | <code>touch /var/lib/named/var/log/named.log |
- | ubuntu_server:~# touch /var/lib/named/var/log/named.log | + | chown bind:bind /var/lib/named/var/log/named.log |
- | ubuntu_server:~# chown bind:bind /var/lib/named/var/log/named.log | + | chmod 666 /var/lib/named/var/log/named.log |
- | ubuntu_server:~# chmod 666 /var/lib/named/var/log/named.log | + | ln -s /var/lib/named/var/log/named.log /var/log/bind.log</code> |
- | ubuntu_server:~# ln -s /var/lib/named/var/log/named.log /var/log/bind.log | + | |
- | </code> | + | |
И добавим в файл конфигурации в самый конец детальную настройку работы логов: | И добавим в файл конфигурации в самый конец детальную настройку работы логов: | ||
<code> | <code> | ||
Строка 286: | Строка 259: | ||
</code> | </code> | ||
9. Перезапускаем bind9 и перечитываем файлы зон | 9. Перезапускаем bind9 и перечитываем файлы зон | ||
- | <code> | + | <code bash>/etc/init.d/bind9 restart |
- | ubuntu_server:~# /etc/init.d/bind9 restart | + | rndc reload</code> |
- | ubuntu_server:~# rndc reload | + | |
- | </code> | + | |
У меня оказалось, что утилита nslookup и dig не установлена – пришлось поставить пакеты hosts и dnsutils командой | У меня оказалось, что утилита nslookup и dig не установлена – пришлось поставить пакеты hosts и dnsutils командой | ||
- | <code> | + | <code bash>apt-get install host dnsutils</code> |
- | ubuntu_server:~# apt-get install host dnsutils | + | |
- | </code> | + | |
10. И проверка на сервере: | 10. И проверка на сервере: | ||
- | <code> | + | <code bash>nslookup |
- | ubuntu_server:~# nslookup | + | |
> set q=any | > set q=any | ||
> localhost | > localhost | ||
Строка 333: | Строка 301: | ||
ya.ru nameserver = ns1.yandex.ru. | ya.ru nameserver = ns1.yandex.ru. | ||
ya.ru nameserver = ns5.yandex.ru. | ya.ru nameserver = ns5.yandex.ru. | ||
- | mx1.yandex.ru internet address = 77.88.21.89 | + | mx1.yandex.ru internet address = 77.88.21.89</code> |
- | </code> | + | |
- | + | ||
- | **Настройка BIND 9 в chroot для ubuntu/debian завершена!** | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | ===== Ссылки ===== | ||
+ | * [[http://demon.of.by/blog/linux-admin/how-to-configure-bind9-debian/|ретроспектива - 2009 год]] | ||
+ | * [[http://forum.ubuntu.ru/index.php?topic=254002.msg2008320#msg2008320|Обсуждение статьи на форуме]] | ||
+ | * FIXME | ||
+ | {{tag> Администрирование FIXME bind9 dns nameserver}} |