headermask image

Установка и настройка DNS сервера bind9 Ubuntu-Debian HOWTO

В этом HOWTO я расскажу вам как настроить DNS сервер и создать в нем зоны для своего домена. Установка описана для дистрибутивов Ubuntu и Debian. Все пакеты из штатных репозиториев.

Установим сам DNS сервер bind9.
Код:

apt-get install bind9

Из соображений безопасности лучше запускать Bind в chroot среде, для этого проделайте несколько простых операций.

Остановим bind
Код:


/etc/init.d/bind9 stop

Отредактируйте файл /etc/default/bind9 , туда надо добавить строку о среде chroot которая будет находится у нас в /var/lib/named.
Измените строку OPTIONS=” -u bind” на OPTIONS=”-u bind -t /var/lib/named”
Код:


vim /etc/default/bind9

Файл после радактирования должен выглядеть так:
Код:


OPTIONS="-u bind -t /var/lib/named"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes

Теперь создадим все необходимые для работы bind9 директории.
Код:


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

Переместите директорию с конфигурацией bind9 из /etc в /var/lib/named/etc:
Код:


mv /etc/bind /var/lib/named/etc

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


ln -s /var/lib/named/etc/bind /etc/bind

Создадим null и random девайсы и выставим правильные права на директории:
Код:


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

Далее надо немного изменить стартовый скрипт демона sysklogd для того что бы сообщения bind попадали в syslog.
Отредактировать надо файл /etc/init.d/sysklogd , измените там строку SYSLOGD=”-u syslog” на SYSLOGD=”-u syslog -a /var/lib/named/dev/log”
Код:


vim /etc/init.d/sysklogd

Строка должна выглядеть так:
Код:


[...]
SYSLOGD="-u syslog -a /var/lib/named/dev/log"
[...]

Перезапустите демона sysklogd
Код:


/etc/init.d/sysklogd restart

Запустите bind9 и проверьте /var/log/syslog на наличие ошибок
Код:


/etc/init.d/bind9 start

Если вы все сделали правильно то ошибок быть не должно.

Теперь можно приступать к настройке зоны для нашего домена, например example.com

Создадим файл конфигурации для наших будущих зон и отредактируем файл конфигурации bind
Код:


touch /var/lib/named/etc/bind/myzones.conf
chown bind:bind /var/lib/named/etc/bind/myzones.conf
vim /var/lib/named/etc/bind/named.conf

В конец файла впишите строку include “myzones.conf”;
Выглядеть это должно так
Код:


[...]
include "/etc/bind/named.conf.local";
include "/etc/bind/myzones.conf";

Теперь отредактируем файл конфигурации наших зон и добавим туда зону для домена example.com.
Код:


vim /var/lib/named/etc/bind/myzones.conf

Впишите в файл следующее содержимое
Код:


zone "example.com" {
type master;
file "example.com";
};

Теперь надо создать файл нашей зоны example.com, выставить на него права и отредактировать его.
Код:


touch /var/lib/named/etc/bind/example.com
chown bind:bind /var/lib/named/etc/bind/example.com
vim /var/lib/named/etc/bind/example.com

Отредактируйте файл до состояния приведенного ниже, адреса замените на нужные вам, так же смените дату перед параметром ; serial на текущую. последние цифры в строке с датой (01) обозначают сколько раз раз зона редактировалась за текущие сутки.
Код:


$ORIGIN example.com.
$TTL 86400 ; 1 day
@ IN SOA localhost. root.localhost. (
2008041501 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
@ IN NS localhost.
@ IN A 192.168.0.1
www IN CNAME example.com.

После этого обновите конфигурацию bind командой
Код:


rndc reload

После чего можно проверить работоспособность сервера dns командой
Код:


nslookup example.com 127.0.0.1

Вы должны увидеть примерно следующее
Код:


Server: 127.0.0.1
Address: 127.0.0.1#53
Name: example.com
Address: 192.168.0.1

На этом настройка завершена, я надеюсь у вас все получилось.

Источник: sudouser.com

vtoroy

17 комментов оставлено (Add 1 more)

  1. как вернуть все обратно? где мануал?

    1. Сергей on May 23rd, 2012 at 10:26 am
  2. пиздец, нихуя не пашет, nslookup пишет

    root@emstore:~# nslookup emstore.ru 127.0.0.1
    Server: 127.0.0.1
    Address: 127.0.0.1#53

    ** server can’t find emstore.ru: NXDOMAIN

    2. Сергей on May 23rd, 2012 at 10:19 am
  3. Хе хе ну намудрили, куда проще может быть
    sudo apt-get install bind9
    Правим два файла (см.выше):

    1) vim /var/lib/named/etc/bind/myzones.conf
    2) vim /var/lib/named/etc/bind/example.com

    потом
    rndc reload
    nslookup example.com 127.0.0.1
    Нафига мудрить?
    ————————————————————–
    Gentoo Linux proffessional choice

    3. coolwave on January 18th, 2012 at 11:54 am
  4. Да товарищ подсобил… Из за таких как ты только время терять. Если сам не шаришь, так не учи других. Надеюсь больше никогда на твои статьи не наткнусь.

    4. Neon on June 16th, 2011 at 2:36 pm
  5. Ты сраный пидор нихуя ты не шаришь в этой теме хуйню а не статью написал мудак ток людям западло делаешь уебок

    5. бравый перец on December 23rd, 2010 at 5:34 pm
  6. Вот такая вот ошибка, и что делать?

    root@ubuntu:/home/well# mknod /var/lib/named/dev/null с 1 3
    mknod: неверный тип устройства «с»

    6. Nikls on July 7th, 2010 at 3:08 pm
  7. У меня такая же хрень PERMISSION DENIED в логах и не работает ничего. Уважаемый автор где подвох????

    7. Andry on February 6th, 2010 at 5:10 pm
  8. Только редактировать надо не vim /etc/init.d/sysklogd

    а /etc/default/syslogd
    там вместо пустоты SYSLOGD=” -a /var/lib/named/dev/log”
    как-то так.

    8. root on December 12th, 2009 at 3:36 pm
  9. Я вообще отключил apparmor.d и выбросил из автозагрузки.

    /etc/init.d/apparmor stop
    update-rc.d -f apparmor remove

    И в /etc/default/bind9 тоже строку: OPTIONS=” -u bind -t /var/lib/named” все таки вернул к ее первобытному OPTIONS=” -u bind”.

    тогда все работает.
    Кстати в логах при запуске БИНДа можна увидеть , что он все таки запускаеться с флагом -t:
    “starting BIND 9.5.0-P2 -u bind -t /var/lib/named”

    9. TrEK on April 23rd, 2009 at 11:38 am
  10. 10. L745 on January 19th, 2009 at 4:32 pm
  11. Эээ… имеется в виду проблема из поста Aleksandrs

    11. Olga on January 6th, 2009 at 6:55 pm
  12. Первоисточник http://www.howtoforge.org/forums/showthread.php?p=116893
    Решается прописыванием в файле профиля Bind9 в AppArmor новых путей для файлов dns-сервера, которые были изменены при организации среды chroot. Редактируется файл /etc/apparmor.d/usr.sbin.named. Важно: перед редактированием остановить оба сервиса. После внесения изменений оба демона стартуются. На всякий случай смотрятся логи.
    Содержимое файла usr.sbin.named (русскоязычные комментарии в строках, естественно, не нужны):
    # vim:syntax=apparmor
    # Last Modified: Fri Jun 1 16:43:22 2007
    #include

    /usr/sbin/named {
    #include
    #include

    capability net_bind_service,
    capability setgid,
    capability setuid,
    capability sys_chroot,

    # /etc/bind should be read-only for bind
    # /var/lib/bind is for dynamically updated zone (and journal) files.
    # /var/cache/bind is for slave/stub data, since we’re not the origin of it.
    # See /usr/share/doc/bind9/README.Debian.gz
    #/etc/bind/** r, старый путь, закомментировано мной
    /var/lib/named/etc/bind/** r, новый путь, прописан мной
    /var/lib/bind/** rw,
    /var/lib/bind/ rw,
    /var/cache/bind/** rw,
    /var/cache/bind/ rw,

    # dnscvsutil package
    /var/lib/dnscvsutil/compiled/** rw,

    /proc/net/if_inet6 r,
    /usr/sbin/named mr,
    #/var/run/bind/run/named.pid w, старый путь, закомментировано мной
    /var/lib/named/var/run/bind/run/named.pid w, новый путь, прописан мной

    # support for resolvconf
    #/var/run/bind/named.options r, старый путь, закомментировано мной
    /var/lib/named/var/run/bind/named.options r, новый путь, прописан мной
    /var/lib/named/dev/null rw, прописан мной
    /var/lib/named/dev/random rw, прописан мной
    }

    12. Olga on January 6th, 2009 at 6:53 pm
  13. не, чувак определенно отжигает…

    zone “example.com” {
    type master;
    file “example.com”;

    13. G.Freeman on December 27th, 2008 at 7:15 am
  14. у меня Debian 4.0 etch.
    Ну во-первых,

    в /etc/init.d/sysklogd переменная SYSLOGD нигде не инициализируется.
    она инициализируется в /etc/default/syslogd и там она равна “”

    в /etc/init.d/sysklogd старт происходит так

    start-stop-daemon –start –quiet –exec $binpath — $SYSLOGD

    т.е., если следовать гайду, sysklogd будет передаваться параметр -u, о котором он ничего не знает.
    т.е., чтобы его нормально запустить, в /etc/default/syslogd должно быть SYSLOGD=”-a /var/lib/named/dev/log” (ловко подсмотрел в http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=110)

    Дальше старта бинда читать не стал. Чувак допускает сильно много ошибок, или этот гайд написан строго под определенный дистрибутив.

    14. G.Freeman on December 27th, 2008 at 6:58 am
  15. Oct 10 00:06:04 worldnet named[10190]: none:0: open: /etc/bind/named.conf: permission denied
    Oct 10 00:06:04 worldnet named[10190]: loading configuration: permission denied

    15. molse on October 10th, 2008 at 8:49 am
  16. Млин! Чё за ерунда только дошёл до (Если вы все сделали правильно то ошибок быть не должно.) И на тебе сразу ошибки так что думаю лучьше эту фигню даже и не делать! Просто установить по умолчанию как есть и спокойно прописывать зоны! Иначе выдаёт ошибки такого рода!

    [code]
    Oct 10 00:06:01 worldnet syslogd 1.5.0#1ubuntu1: restart.
    Oct 10 00:06:04 worldnet named[10190]: starting BIND 9.4.2-P1 -u bind -t /var/lib/named
    Oct 10 00:06:04 worldnet named[10190]: found 1 CPU, using 1 worker thread
    Oct 10 00:06:04 worldnet named[10190]: loading configuration from '/etc/bind/named.conf'
    Oct 10 00:06:04 worldnet named[10190]: none:0: open: /etc/bind/named.conf: permission denied
    Oct 10 00:06:04 worldnet named[10190]: loading configuration: permission denied
    Oct 10 00:06:04 worldnet named[10190]: exiting (due to fatal error)
    Oct 10 00:06:04 worldnet kernel: [ 330.887341] audit(1223586364.403:17): type=1503 operation="inode_permission" requested_mask="::r" denied_mask="::r" name="/var/lib/named/etc/bind/named.conf" pid=10191 profile="/usr/sbin/named" namespace="default" [/code]

    16. Aleksandrs on October 10th, 2008 at 1:07 am
  17. мануал конечно превосходный… но что делать когда нет так называемого домена … и имена должны раздаватся из /etc/hosts …?

    17. Alec on June 7th, 2008 at 8:31 am