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