DNS сервер BIND

Mind map по DNS Скачать в полном размере

DNS как служба

Основное предназначение это преобразование IP адресов в доменные имена и наоборот.

DNS сервера BIND (Berkeley Internet Name Domain, ранее: Berkeley Internet Name Daemon) самая популярная реализация данной службы. Основу BIND составляет демон named, который для своей работы использует порт UDP/53 и для некоторых запросов TCP/53.

По стандарту RFC 1035 все DNS-серверы отвечают на порту 53 TCP и UDP. Ранние версии BIND использовали 53 порт так же и при отправке исходящих запросов, более новые ведут себя как обычные DNS-клиенты, используя свободные незарегистрированные порты.

Версия BIND 9 была последней, с 10-й версии права передают сообществу, и называется Bundy.

Устанавливается для Debian подобных ОС sudo apt install bind9. Чобы посмотреть пакеты нужные для работы bind9 apt cache search bind9

apt cache search bind9

Структура DNS

Терминология:

Сервер DNS.

Ресурсная запись. Единица хранения и передачи информации в DNS.

Символы в записях:

Type - тип записи:

A - address record

AAAA

CNAME - canonical name

MX - mail exchange

NS - name server

PTR - pointer.

SOA - start of authority. Определяет зону ответственности сервера.

SRV - server section

Клиенты DNS (resolver)

Используют системные вызовы

Ядро на основании файла /etc/nsswitch.conf определяет по какому пути действовать.

cat /etc/nsswitch.conf
hosts: file dns
networks: file /файл /etc/network
; Т.е. для преобразования имен хостов в IP сначало смотрим в hosts а затем запрос к DNS если там не оказалось.

Если согласно /etc/nsswitch.conf запрос идет на DNS то исп /etc/resolv.conf.

cat /etc/resolv.conf
nameserver 192.168.1.1
nameserver 192.168.1.2
domain example.com ; имя по умолчанию если DNS не удается найти имя хоста.
domain и search вместе не применяются.

Запросы DNS

Ответы DNS

Ответы DNS бывают следующего типа:

Ответ DNS можно помотреть утилитой dig

dig yandex,ru

Ответ DNS обычно содержит следующую информацию:

Пример ответа для яндекса dig ya.ru

; <<>> DiG 9.7.3 <<>> ya.ru (раздел заголовка)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53499
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 2, ADDITIONAL: 3

;; QUESTION SECTION: (раздел запроса)
;ya.ru.                         IN      A

;; ANSWER SECTION: (раздел ответа)
ya.ru.                  4813    IN      A       87.250.250.203
ya.ru.                  4813    IN      A       87.250.251.3
ya.ru.                  4813    IN      A       93.158.134.3
ya.ru.                  4813    IN      A       93.158.134.203
ya.ru.                  4813    IN      A       213.180.204.3
ya.ru.                  4813    IN      A       77.88.21.3
ya.ru.                  4813    IN      A       87.250.250.3

;; AUTHORITY SECTION: (авторитативные сервера)
ya.ru.                  4813    IN      NS      ns1.yandex.ru.
ya.ru.                  4813    IN      NS      ns5.yandex.ru.

;; ADDITIONAL SECTION: (дополнительная информация - адреса авторитативных name servers)
ns5.yandex.ru.          345565  IN      A       213.180.204.1
ns1.yandex.ru.          345565  IN      A       213.180.193.1
ns1.yandex.ru.          3565    IN      AAAA    2a02:6b8::1

;; Query time: 7 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Jul  2 23:02:45 2011
;; MSG SIZE  rcvd: 238

Mind map по настройке Скачать в полном размере

Настройка BIND 9

База данных прямого преобразования

** Расположение ** /etc/bind/db.RS

$TTL 5D; чтобы не записывать каждый раз TTL установил время жизни записи 5 дней
@ IN SOA skynet.local. skynetadmin.local. ( 100 10h 1h 1w 1d )
local. IN NS skynet.local.
skynet IN A 192.168.0.100 ; localhost, в частнотси на нем же прокси
88 IN A 192.168.88.7 ; Компьютер в сети

База данных обратного преобразования имен для подсети 192.168.88.0

** Расположение ** /etc/bind/db.rev88.RS

$TTL 3600
88.168.192.in-addr.arpa. IN SOA skynet.local. skynetadmin.local. ( 100 10h 1h 1w 1d )
@ IN NS skynet.local
7 IN PTR 88.local. ; Компьютер c адресом 192.168.88.7

Конфигурация локальных настроек

** Расположение ** /etc/bind/named.conf.local. Для любых локальных конфигураций.

zone "local" { type: master; file: "/etc/bind/db.RS ";}
zone "88.168.192.in-addr.arpa" { type: master; file: "/etc/bind/db.rev88.RS ";}

Глобальные настройки DNS сервера

** Расположение ** /etc/bind/named.conf.options.

 options {
     directory "/var/cache/bind";
     forwarders {
         8.8.8.8;
         4.4.4.4
         };
     listen-on { 127.0.0.1 };
     allow-query { any };
     dnssec-validation auto;
     auth-nxdomain no;
     };

Команды проверки работоспособности DNS

Пример настройки прямой почтовой зоны

 $TTL 5D
 @ IN SOA server2.rs.local. admin.rs.local. ( 110h 1h 1w 1d )
 rs.local. IN NS server2.rs.local.
 rs.local. IN TXT "V=spf1 ip4:34.10.88.120 +a -all" // Т.е. письма из нашего домена считаются отправленными с ip 34.10.88.120
 rs.local. IN SPF"V=spf1 ip4:34.10.88.120 -all" // Для новых DNS серверов аналогична предыдущей
 server2 IN A 34.10.88.120
 mail IN A 34.10.88.120
 pop IN CNAME mail.rs.local.
 smtp IN CNAME mail.rs.local.
 \_adsp.\_domaynkey.rs.local. TXT "dkim = all" // Все письма должны быть подписаны DKIM ключем

Содержание: