Настройка DNS сервера с FQDN-доменом и внешним статическим ip адресом

Сегодня настроим DNS сервер с FQDN-доменым именем и внешним статическим ip адресом. В качестве DNS сервера будет выступать bind9 и операционная система Ubuntu Server 16.04. Так же разберем настройку двух зон: зона прямого и зона обратного просмотра.

DNS – это система доменных имен для преобразования имени в ip адреса компьютера и наоборот. Зная имя компьютера, вам не нужно запоминать его ip адрес. Простыми словами набирая адрес интернет странички в Вашем браузере DNS сервер всемирной паутины преобразует его в ip-адрес хостинга на котором расположен данный домен.

И так у нас уже есть установленная ОС Ubuntu Server 16.04 LTS и настроенный DHCP сервер isc-dhcp-server. Что от нас требуется, так это установить и настроить DNS сервер bind9

Установка DNS сервера bind9 на Ubuntu | Debian | Linux Mint

Для установки DNS сервера нам необходимо подключиться к серверу при помощи ssh.

Как настроить доступ по ssh описано тут.

После того как подключились в первую очередь необходимо обновить систему. Вводим следующие команды.

sudo apt update
sudo apt dist-upgrade -y

Далее устанавливаем сам DNS сервер

 

sudo apt install bind9

Настройка зон для DNS

Исходные данные:

  • Доменное имя FQDN – obu4alka.ru
  • IP адрес сервера – 80.81.82.83/32
  • Имя сервера – ns1.obu4alka.ru

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

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

 

sudo cp /etc/bind/db.local /var/lib/bind/db.obu4alka.ru

И открываем его на редактирование

sudo nano /var/lib/bind/db.obu4alka.ru

Содержимое файла

$TTL 14400  
@  IN  SOA  ns1.reg.ru.  root.obu4alka.ru. (
            2018052655 ; serial 
            604800     ; refresh
            86400      ; retry
            2419200    ; expire
            604800     ; minimum
            )
@    IN  NS ns1.reg.ru.
@    IN  NS ns2.reg.ru.
@    IN  A  80.81.82.83
ns1  IN  A  80.81.82.83
www  IN  A  80.81.82.83

 

  • Записи вида А – предназначена для ip адресов версии 4
  • Запись вида АААА – предназначена для ip адресов версии 6
  • Запись вида NS – для DNS серверов регистратора (обычно).

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

Обратная зона преобразовывает IP адреса машины в доменное имя FQDN. Обратная зона нужна если у вас на сервере будет запущен ещё и почтовый сервер. Все известные почтовики проверяют сервер по обратной зоне. Если у Вас проблема с отправкой почты, например на mail.ru письма не приходят, а служба безопасности присылает отчёт, что данный почтовый сервер находится в списке недоверенных серверов, то скорее всего для вашего домена нет файла обратной зоны. Выход из сложившейся ситуации, попросить вашего провайдера создать файл зоны обратного просмотра. Ну а мы с вами создадим зону для нашего сервера.

Давайте сделаем копию файла прямого просмотра:

sudo cp /var/lib/bind/db.obu4alka.ru /var/lib/bind/db.revers.obu4alka.ru

Открываем его на редактирование:

sudo nano /var/lib/bind/db.revers.obu4alka.ru
$TTL 14400
 @ IN SOA ns1.reg.ru. root.obu4alka.ru. (
         2018052655 ; serial
         604800 ; refresh
         86400 ; retry
         2419200 ; expire
         604800 ; minimum
         )
 @ IN NS ns1.reg.ru.
 @ IN NS ns2.reg.ru.
 83 IN PTR ns1.obu4alka.ru.

Настройка конфигурационных файлов Bind9

Для начала отредактируем файл named.conf.options

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

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

options {
  directory "/var/cache/bind";
# с каких сетей или  IP адресов будут обслуживаться запросы нашим DNS сервером.
  listen-on { 
      80.81.82.83/32; 
      127.0.0.1; 
  };
# вышестоящий dns сервер, используется если URL запроса не найден в нашей базе.
  forwarders { 
      77.88.8.1; 
      8.8.8.8; 
  };
# Кому разрешено запрашивать dns сервер
  allow-query { any; };
  allow-query-cache { any; };
# Кому разрешено посылать рекурсивные запросы
  allow-recursion { any;};
# Запросы DNSSEC
  dnssec-validation auto;
# Запросы NXDOMAIN
  auth-nxdomain no;
# с каких сетей или  IPv6 адресов будут обслуживаться запросы нашим DNS сервером
  listen-on-v6 { all; };
# Прописываем версию DNS - для защиты от любопытных
  version "DNS server v1.0";
};

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

 

sudo nano /etc/bind/named.conf.local
 // зона прямого просмотра
zone "obu4alka.ru" {
  type master; 
  file "/var/lib/bind/db.obu4alka.ru";
  };
// зона обратного просмотра
zone "83.82.81.80.in-addr.arpa" {  
  type master; 
  file "/var/lib/bind/db.revers.obu4alka.ru";
  };

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

 

sudo named-checkconf

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

Перезагружаем bind9

sudo /etc/init.d/bind9 restart

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

nslookup ns1.obu4alka.ru

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

Server:     127.0.0.1
Address:    127.0.0.1#53
Non-authoritative answer:
Name:    ns1.obu4alka.ru
Address: 80.81.82.83

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

nslookup 80.81.82.83

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

 

Server:        127.0.0.1
Address:    127.0.0.1#53
Non-authoritative answer:
80.81.82.83.in-addr.arpa    name = ns1.obu4alka.ru.
Authoritative answers can be found from:

 

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

P.S. Также добавьте в файле resolv.conf свой nameserver

sudo nano /etc/resolv.conf

 

nameserver 80.81.82.83
nameserver 127.0.0.1
search obu4alka.ru

Для того чтобы ваш DNS сервер был виден из интернета, а также чтобы он обрабатывал все запросы по FQDN-имени (obu4alka.ru), у регистратора Вашего домена необходимо поменять NS сервера на IP вашего сервера DNS

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

dig @ns1.obu4alka.ru version.bind chaos txt

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

; (1 s; <<>> DiG 9.11.3-1ubuntu1.2-Ubuntu <<>> @ns1.pro-gram.ru version.bind chaos txt
 ; (1 server found)
 ;; global options: +cmd
 ;; Got answer:
 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36382
 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 ;; WARNING: recursion requested but not available
 ;; OPT PSEUDOSECTION:
 ; EDNS: version: 0, flags:; udp: 4096
 ;; QUESTION SECTION:
 ;version.bind.            CH  TXT
 ;; ANSWER SECTION:
 version.bind.        0   CH  TXT "DNS server v1.0"
 ;; AUTHORITY SECTION:
 version.bind.        0   CH  NS  version.bind.
 ;; Query time: 0 msec
 ;; SERVER: 80.81.82.83#53(80.81.82.83)
 ;; WHEN: Sun Apr 11 09:16:23 +04 2019
 ;; MSG SIZE  rcvd: 84