Ubuntu DNS Сервер

1. У нас имеется некая сеть со следующими параметрами:

Диапазон: 192.168.10.0/255.255.255.0
Основной шлюз: 192.168.10.1
DNS-сервера провайдера: xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy
Имя нашего сервера: gateway1
Статический IP-адрес нашего сервера: 192.168.10.1
Предполагаемое имя нашего домена: team.local

Устанавливаем пакеты bind9 и dhcp3-server

После настройки сетевых интерфейсов записываем адреса DNS серверов в файле

 sudo nano /etc/resolv.conf 

добовляем в него строки

domain team.local
search team.local
nameserver 127.0.0.1
 

Перезапускаем службу networking

/etc/init.d/networking restart

Устанавливаем пакет bind9 и bind9utils

apt-get install bind9, bind9utils

Если bind9 уже установлен его версию можно посмотреть см.в конце

Указываем демону syslog, должен слушать и писать логи от DNS-сервера в файл /var/log/named.log.

Открываем файл:

sudo nano /etc/rsyslog.conf
 в конец файла добавляем

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

Перезапускаем демона логирования:

$ sudo /etc/init.d/rsyslog restart

Создаём секретный ключ, который необходим для обновления DNS-записей в зоне нашей локальной сети.

dnssec-keygen —a HMAC-MD5 —b 128 —r /dev/urandom —n USER имя

Где  HMCA-MD5 - используемый нами алгоритм (ключ -a algorithm)
128 - размер ключа для HMCA-MD5 (ключ -b keysize)

USER - тип владельца ключа (ключ -n nametype)

После генерации ключа в терминале будет выведено название ключа
Были сгененированы два ключа в текущем катологе проверим ик наличие командой

ls

должны увидеть два файла следующего вида:
имя.+157+20550.key имяю.+157+20550.private

4. Настраиваем BIND9. Правим файл конфигурации name.conf.options

sudo nano /etc/bind9/name.conf.options

разкомментируем строчку и добавим адреса (выдаются обычно провайдером) по которым будем переправлять запросы, которые не описаны:
forwarders {  xxx.xxx.xxx.xxx; yyy.yyy.yyy.yyy;  };
Добавим строчку на каких адресах будем слущать запросы (адрес петии и адрес смотрящий в локальную сеть):

listen-on { 127.0.0.1; 192.168.10.1;};

5. Создаём файл прямой зоны для нашей локальной сети (используется DNS сервером для преобразования имени локального ПК в ip-адрес). Локальная группа [bind] по умолчанию не имеет права на запись в эту директорию etc/bind поэтому помещаем файлы прямой и обратной зоны в папку: /var/lib/bind

sudo touch /var/lib/bind/forward.bind

Помещаем в файл

$TTL 86400      ;       1 day
team.local.    IN      SOA      ns1.team.local. admin.team.local. (
                               2013123101      ; Serial
                               10800           ; Refresh
                               3600            ; Retry
                               604800          ; Expire
                               86400           ; Minimum TTL
                       )
; DNS Servers
               IN      NS      ns1.team.local.
; MX Records
               IN      A       192.168.10.1
; Machine Names
localhost       IN      A       127.0.0.1
ns1             IN      A       192.168.10.1
gw              IN      A       192.168.10.1
; Различные клиенты сети
somePC           IN      A       192.168.10.6
; Aliases
www             IN      CNAME   @
 

Обратить внимение
team.local - заме
нить на ваше доменое имя (в файле после local ставится точка)
Нумерация Serial - Необходимо увеличивать Serial Number каждый раз, как делаете изменения в файле зоны, поэтому удобно использовать дату последнего редактирования в качестве Serial зоны в виде 2012010101, что соответствует формату yyyymmddss (где ss - Serial Number [за день]).

6. Создаем файл для обратной зоны (используется DNS-сервером для преобразования ip-адреса компьютеров локальной сети в доменное имя):

sudo touch /var/lib/bind/reverse.bind


Помещаем в файл

$TTL 86400      ;       1 day
10.168.192.in-addr.arpa. IN SOA ns1.team.local. admin.team.local. (
                        2013123101        ; Serial
                        10800           ; Refresh
                        3600            ; Retry
                        604800          ; Expire
                        3600 )          ; Minimum
        IN      NS      ns1.team.local.
1       IN      PTR     gw.team.local.
1       IN      PTR     team.local.
1       IN      PTR     ns1.team.local.
; Различные клиенты сети
6      IN      PTR     somePC.team.local.

Обратить внимание:
10.168.192.in-addr.arpa. - Замените 10.168.192 на первые три октета адресов сети, которую вы используете.
1       IN      PTR     gw.team.local. - цифра в начале строки это последний октет адреса хоста.
 

7 Правим файл name.conf.local

sudo nano /etc/bin/name.conf.local

Вставляем код

key ИМЯ {
        algorithm HMAC-MD5.SIG-ALG.REG.INT;
        secret КЛЮЧ ;
};
zone "team.local" IN {
        type master;
        file "/var/lib/bind/forward.bind";
        allow-update { key ИМЯ; };
};
zone "10.168.192.in-addr.arpa" IN {
        type master;
        file "/var/lib/bind/reverse.bind";
        allow-update { key ИМЯ; };
};

Обратить внимание:
10.168.192.in-addr.arpa. - Замените 10.168.192 на первые три октета адресов сети, которую вы используете.
Вставить имя ключа и сам секретный ключ

8. Перезагружаем Bind (должны увидеть ОК)

sudo /etc/init.d/bind9 restart

Если видим ошибку може просмотреть из за чего именно смотреть в конце
Проверяем как наш сервер преобразует свое локальное имя

host ns1

Должны получить в ответ

ns1.team.local has address 192.168.10.1

Проверяем обратное преобразование

host 192.168.10.1

Получаем в ответ

1.10.168.192.in-addr.arpa domain name pointer ns1.team.local.
1.10.168.192.in-addr.arpa domain name pointer team.local.
1.10.168.192.in-addr.arpa domain name pointer gw.team.local.

 

Как узнать версию установленого bind9:
Зависит от этой самой версии, пробуем:

named -v
ndc status
dig VERSION.BIND CHAOS TXT
strings 'which named' | fgrep named
strings 'which named' | grep 'named [0-9]'named -g -u bind

 

Не запускается сервис bind9

/etc/init.d/bind9 start
Starting domain name service...: bind9 failed!

Узнаем причину:

named -g -u bind
Таксаномия: