Установка DNS сервера на Ubuntu 16.04

Сегодня установим DNS сервер bind9 с последующей его настройкой. Так же разберем настройку двух зон: зона прямого и зона обратного просмотров.
DNS – это система доменных имен для преобразования имени в ip адреса компьютера и наоборот. Зная имя компьютера, вам не нужно запоминать его ip адрес. Простыми словами набирая адрес интернет странички в Вашем браузере DNS сервер всемирной паутины преобразует его в ip-адрес хостинга на котором расположен данный домен. И так у нас уже есть установленная ОС Ubuntu Server 16.04 LTS, настроенный DHCP сервер и настроенный кэширующий прокси-сервер squid.

Установка DNS сервера на Ubuntu

Установим службу DNS сервера Bind9 на наш сервер.

sudo apt install bind9

Следующим шагом, генерируем ключ для обновления DNS записей или же воспользуемся уже имеющимся у Вас в системе.

Первый вариант:
dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER

выведем ключ на экран

cat Kdhcp_updater.*.private|grep Key

на экране вы должны увидеть , что то подобно этому:
Key: 9DxMmNw7J813qviXajG7rQ==
Обязательно сохраните этот ключ, в последующей настройке он нам понадобится.

Второй вариант:

добавим в файл /etc/bind/named.conf запись о ключе, который уже присутствует у Вас в системе

sudo nano /etc/bind/named.conf

Добавьте запись:

include "/etc/bind/rndc.key";

Настраиваем DNS сервер Bind9

Открываем файл конфигурации DNS сервера

sudo nano /etc/bind/named.conf.options

Добавим в него следующий код:

options {
 directory "/var/cache/bind";
 listen-on {
 192.168.0.0/24;
 127.0.0.1;
 };
 forwarders {
 77.88.8.1;
 8.8.8.8;
 };

 dnssec-validation auto;
 auth-nxdomain no;
 listen-on-v6 { all; };
 version "DNS server v1.0";
};
  • forwarders – вышестоящий dns сервер (у меня в примере это сервер yandex и google), используется если URL запроса не найден в нашей базе.
  • listen-on – с каких сетей или  IP адресов будут обслуживаться запросы нашим DNS сервером.
  • version — параметр задает версию DNS сервера.

Перезапустим bind9

sudo service bind9 restart

Далее нам нужно будет указать две зоны (прямого и обратного просмотра) DNS и прописать их в конфигурации сервера bind9. Исходные данные:

  • Доменное имя – dom
  • IP адрес сервера – 192.168.0.1
  • Имя сервера – ns.dom

Настройка прямой зоны DNS

создадим файл в котором будет храниться данные о зоне прямого просмотра dom. Для этого создадим копию образца файла прямого просмотра:

sudo cp /etc/bind/db.local /var/lib/bind/db.dom

откроем его

sudo nano /var/lib/bind/db.dom

и отредактируем по моему примеру:

$ORIGIN .
$TTL 604800     ; 1 week
dom          IN            SOA      ns.dom. root.ns.dom. (
                                201605277  ; serial
                                604800     ; refresh (1 week)
                                86400      ; retry (1 day)
                                2419200    ; expire (4 weeks)
                                604800     ; minimum (1 week)
                                )
@            IN            NS       ns.dom.
@            IN            A        192.168.0.1
@            IN            AAAA     ::1
$ORIGIN dom.
$TTL 604800     ; 1 week
ns           IN            A        192.168.0.1

Записи вида А — предназначен для ip адресов версии 4

Запись вида АААА — предназначен для ip адресов версии 6

Настройка обратной зоны DNS

Создадим копию только что созданного и отредактированного файла прямого просмотра:

sudo cp /var/lib/bind/db.dom /var/lib/bind/db.192.dom

откроем его

sudo nano /var/lib/bind/db.192.dom

и также отредактируем его:

$ORIGIN .
$TTL 604800     ; 1 week
0.168.192.in-addr.arpa  IN  SOA    ns.dom. root.ns.dom. (
                                2016052655 ; serial
                                604800     ; refresh (1 week)
                                86400      ; retry (1 day)
                                2419200    ; expire (4 weeks)
                                604800     ; minimum (1 week)
                                )
@          IN         NS        ns.dom.
$ORIGIN 0.168.192.in-addr.arpa.
$TTL 604800     ; 1 week
1          IN         PTR       ns.dom.

Настройки зон в файле конфигурации bind9

Открываем файл конфигурации зон

sudo nano /etc/bind/named.conf.local

И тут опять два пути если вы создавали секретный ключ по первому варианту то пишем следующее:

key DHCP_UPDATER {
      algorithm HMAC-MD5.SIG-ALG.REG.INT;
      secret "9DxMmNw7J813qviXajG7rQ=="; 
};

// зона прямого просмотра
zone "dom"{
      type master;
      file "/var/lib/bind/db.dom";
      allow-update { key DHCP_UPDATER; };
};

// зона обратного просмотра
zone "0.168.192.in-addr.arpa"{
      type master;
      file "/var/lib/bind/db.192";
      allow-update { key DHCP_UPDATER; };
};

key DHCP_UPDATER — информация о ключе, который мы с вами записывали (в кавычки вам нужно вписать свой ключ) если же по второму варианту то вставляем следующее:

// зона прямого просмотра
zone "dom"{
      type master;
      file "/var/lib/bind/db.dom";
      allow-update { key rndc-key; };
};

// зона обратного просмотра
zone "3.168.192.in-addr.arpa"{
      type master;
      file "/var/lib/bind/db.192";
      allow-update { key rndc-key; };
};
  • key rndc-key — информация о ключе взятая из системы.
  • zone «dom» — информация о зоне использования DNS, указан тип — master, путь к файлу хранения данных зоны, обновления файла разрешено с использованием ключа.
  • zone «0.168.192.in-addr.arpa» — создание зоны обратного просмотра

Сохраняем, закрываем.

Теперь проверим правильность синтаксиса конфигурационных файлов BIND.

named-checkconf

Если конфигурационные файлы не содержат ошибок, вывод этой программы будет пуст.

Перезапускаем bind9

sudo /etc/init.d/bind9 restart

Проверяем работу DNS сервера:

nslookup ns.dom

в ответ вы должны увидеть:

Server:        127.0.0.1
Address:    127.0.0.1#53

Name:    ns.dom
Address: 192.168.0.1

Как видите зона прямого просмотра работает, нам показался ip адрес проверяемого имени. Теперь проверим работу зоны обратного просмотра

nslookup 192.168.0.1

В ответ должны получить:

Server:        127.0.0.1
Address:    127.0.0.1#53

1.0.168.192.in-addr.arpa    
name = ns.dom.

Как видим в ответе мы получили имя сервера по его адресу. Если у вас в ответ на nslookup так же все корректно отображается, значит вы все сделали правильно! Если нет, проверяйте что сделали не так.

Проверяем версию DNS сервера

dig @ns.dom version.bind chaos txt

Примерный вывод команды:

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;version.bind. CH TXT

;; ANSWER SECTION:
version.bind. 0 CH TXT "DNS server v.1.0"

;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.

;; Query time: 0 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Thu Mar 23 09:59:39 +04 2017
;; MSG SIZE rcvd: 85

Настройка динамического обновления зон DHCP сервером

Настройку dhcp-сервера мы уже описывали, статья по Установке DHCP сервера на Ubuntu 16.04.

Откроем файл /etc/dhcp/dhcpd.conf

sudo nano /etc/dhcp/dhcpd.conf

Выражение ddns-update-style none; меняем на ddns-update-style interim; Добавим строчку update-static-leases on; – она отвечает за создание зон для клиентов у которых статичный IP адрес. Проверяем что опция option domain-name содержит имя домена dom. Строка key должна содержать названия вашего ключа (если вы шли первым вариантом то пишем DHCP_UPDATER, если же вторым то rndc-key). Соответственно строка secret содержит ваш секретный ключ. Чтобы посмотреть ключ rndc-key набираем:

cat /etc/bind/rndc.key |grep secret

в ответ вы получите что то похожее:

secret "2mu11eRajAdm4KV0x0Pmcg==";

В примере покажу сразу в двух вариантах. Раскоментируйте те строки по какому варианту шли Вы (я же настраивал по второму варианту):

ddns-updates on;
ddns-update-style interim;
update-static-leases    on;

# Первый вариант
#key DHCP_UPDATER {
#algorithm hmac-md5;
#secret "9DxMmNw7J813qviXajG7rQ==";
#}

#zone dom. { 
#primary 127.0.0.1; 
#key DHCP_UPDATER; } 

#zone 0.168.192.in-addr.arpa. { 
#primary 127.0.0.1; 
#key DHCP_UPDATER; }
#key rndc-key {

# Второй вариант
key rndc-key {
algorithm hmac-md5;
secret "2mu11eRajAdm4KV0x0Pmcg==";
}

zone dom. { 
primary 127.0.0.1; 
key rndc-key; } 

zone 0.168.192.in-addr.arpa. { 
primary 127.0.0.1; 
key rndc-key; }

Пример файла dhcpd.conf:

ddns-updates on;
ddns-update-style interim;
update-static-leases on;

key rndc-key {
        algorithm hmac-md5;
        secret "2mu11eRajAdm4KV0x0Pmcg==";
}

zone dom. {
primary 192.168.0.1;
key rndc-key;
}

zone 0.168.192.in-addr.arpa. {
primary 192.168.0.1;
key rndc-key;
}

#default-lease-time 600;
#max-lease-time 7200;

authoritative;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.100 192.168.0.120;
        option routers 192.168.0.1;
        option broadcast-address 192.168.0.255;
        option domain-name-servers 192.168.0.1;
        option domain-name "dom";
        option subnet-mask 255.255.255.0;
        default-lease-time 604800;
        max-lease-time 604800;
}

host home-asus
        {
                hardware ethernet 00:00:00:00:00:00;
                fixed-address 192.168.0.100;
        }

Больше никакие настройки DHCP не трогаем, перезапускаем bind9 и dhcp

sudo service bind9 restart
sudo service isc-dhcp-server restart

Теперь нужно проверить как все это дело работает “в бою”. Запускаем клиентскую машину, которая находится в сети с сервером. После включения машина получит IP адрес от DHCP сервера, а DHCP сервер создаст запись вроде client-pc.dom. На запрос nslookup client-pc (client-pc это имя клиентской машины), мы должны увидеть ответ от сервера После перезагрузки сервера, можно посмотреть на файлы прямого и обратного просмотра, если все сделали правильно, то в них вы увидите записи о новых машинах. На этом настройка сервера bind9 закончена.

Если есть вопросы, то пишем в комментариях и не забываем проголосовать за статью.
Установка DNS сервера на Ubuntu 16.04
5 (100%) 19 votes

12 комментариев

  1. SYSadminАвтор 2018-07-05
  2. аноним 2018-07-05
  3. SYSadminАвтор 2018-05-06
  4. Алексей 2018-05-06
  5. SYSadminАвтор 2017-10-22
  6. SYSadminАвтор 2017-10-22
  7. полина 2017-10-21
  8. SYSadminАвтор 2017-09-20
  9. SYSadminАвтор 2017-09-20
  10. Вадим 2017-09-20
  11. barcelona 2017-02-11
  12. Scottlus 2017-01-19

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *