bind9 named nslookup dns DNS - штука которая преобразует буквы в ip пример dns.google = 8.8.8.8

Рекурсивный DNS-запрос — это запрос, в котором DNS-сервер получает доменное имя и просит возвратить IP-адрес запрошенного домена. При этом сервер может обращаться к другим DNS-серверам.

Не рекурсивный DNS-запрос — это запрос, в котором DNS-сервер получает доменное имя и просит возвратить IP-адрес запрошенного домена. При этом сервер может обращаться к другим DNS-серверам только в своей доменной зоне.

Роли DNS

Кэширующий DNS сервер

Задача: Обработать DNS-запрос и сохранить результат в памяти на N’ый промежуток времени. Если же кэш домена отсутствует или истек, кэширующий DNS сервер посылает запрос другому DNS серверу.

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

Перенаправляющий DNS сервер

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

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

Авторитетный DNS сервер

Задача: отвечает на запросы определенных доменных зон. Дополнительно может иметь роль master или slave:

  • master - отвечает на запросы к зоне, обеспечивает самые актуальные записи
  • slave - отвечает на запросы к зоне, получает базу записей с master сервера

Настройка DNS сервера

Установка

bind9 Для работы с DNS требуется установить пакет bind9, но перезагружать нужно службу named.

apt install bind9 -y

Кэширующий DNS сервер

named

Для настройки кэширующего DNS сервера необходимо выполнить следующие действия:

  1. Открыть файл /etc/bind/named.conf.options
  2. Перед блоком options {} укажите следующее:
acl clients {           # clients = название сети, которое вы даете сами
		localhost;      # Разрешить 
		192.168.1.0/24; # Сеть клиентов
};
  1. Разрешить доступ к службе DNS только клиентам из списка. Для этого в тот же файл, но уже в конец блока options добавить строку:
allow-query { clients; }; # Где, clients это название вашего списка доступа.
                          # Который вы создали на прошлом этапе  
  • Можно также обойтись без списка клиентов
allow-query { 192.168.1.0/24; }; # Внутрии указываете сеть клиента DNS
  • При необходимости можно через ”;” можно записать несколько сетей.
  1. Разрешить DNS серверу рекурсивные запросы в блок options:
recursion yes;
  1. Включить dnssec-validation Это немного защиты
dnssec-validation yes;
  1. Указать на каких адресах DNS должен принимать запросы. Речь про адресы сервера.
listen-on { 192.168.1.1; };
  1. Перезагрузить службу
service named restart

Сервер пересылки

Для настройки роли сервера пересылки, в дополнение к параметрам указанных для кэширующего DNS, нужно указать следующее в блок options:

forwarders { 8.8.8.8; }; 
  • Где, 8.8.8.8 это название DNS сервера на который будут пересылаться все неразрешимые запросы.

Авторитетный DNS сервер

Master DNS Сервер

  1. Сделать копию локальной зоны (будет использоваться в качестве шаблона), задав ей имя db.имя_зоны
cd /etc/bind
cp db.local /var/lib/bind/db.vm
  1. Привести полученный шаблон к требуемому по заданию виду
$TTL    604800
@       IN      SOA     srv1.vm.local. root.vm.local. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@         IN       NS      srv1.vm.local.
srv1      IN       A       192.168.1.11    # адрес сервера
RTR       IN       A       192.168.1.1     
Client    IN       A       192.168.1.5
DNS1      IN       A       192.168.1.11
DNS2      IN       A       192.168.1.12
  • Сверху меняется только “vm.local.”
  • @ - это сам сервер
  1. Добавить новую зону в конфигурацию службы DNS
    1. Открыть файл /etc/bind/named.conf.local и добавить следующие строчки:
zone "vm.local" {
        type master;             # Обозначает что сервер будет главным для 
                                 # Этой зоны
        file "/etc/bind/db.vm";  # Путь до файла зоны
        allow-transfer { 192.168.1.12; }; # Разрешить передачу зоны на DNS2
};
  1. Создать список клиентов, которым разрешен доступ к DNS серверу
  2. Разрешить доступ к службе DNS только клиентам из списка
  3. Включить dnssec-validation
  4. Указать на каких адресах DNS должен принимать запросы
  5. Перезагрузить службу
  • (c 4 по 7) По сути также как в кэширующем, только без рекурсии

Slave DNS Сервер

Создавать файл зоны vm.local не надо, slave будет брать его у master’а

  1. Добавить новую зону в конфигурацию службы DNS
    1. Открыть файл /etc/bind/named.conf.local и добавить следующие строчки:
zone "vm.local" {
        type slave;                       # Обозначает что сервер будет подчиненным 
        masters { 192.168.1.11; };        #
        file "/var/lib/bind/db.vm";       # Путь до файла зоны
                                          # Критична именно эта директория, так как в стандартную у bind нет прав на запись
};
  1. Создать список клиентов, которым разрешен доступ к DNS серверу
  2. Разрешить доступ к службе DNS только клиентам из списка
  3. Включить dnssec-validation
  4. Указать на каких адресах DNS должен принимать запросы
  5. Перезагрузить службу
  • (c 2 по 6) По сути также как в кэширующем, только без рекурсии

Зоны обратного просмотра

Ранее мы рассматривали только зоны прямого просмотра, позволяющие узнать адрес по имени. Зона обратного просмотра обеспечивает обратную функцию, сопоставляя адрес устройства к имени. Они имеют некоторые различия в настройке:

  1. Название зоны формируется иначе.
    1. Для IPv4 — это префикс сетевой адреса в обратном порядке с добавлением суффикса .in-addr.arpa.
    2. Для IPv6 имя зоны обратного просмотра формируется в формате IPv6 network prefix in reverse order.ip6.arpa. 
    3. В обоих случаях используется блок на основе октета (гекстета для IPv6), покрывающего диапазон
      1. Так для сетей 192.168.1.0/24, 192.168.1.64/26, 192.168.1.120/30 имя будет одно:
      • 168.192.in-addr.arpa
zone "1.168.192.in-addr.arpa" {
        type master;             # Обозначает что сервер будет главным для 
                                 # Этой зоны
        file "/etc/bind/vm.local.in-addr";  # Путь до файла зоны
        allow-transfer { 192.168.1.12; }; # Разрешить передачу зоны на DNS2
};
  1. В зоне обратного просмотра используются записи PTR. Пример зоны обратного просмотра:
$TTL 604800     ; 1 week
@  IN SOA  vm.local. root.vm.local. (
								3          ; serial  # Это надо поменять
								604800     ; refresh (1 week)
								86400      ; retry (1 day)
								2419200    ; expire (4 weeks)
								604800     ; minimum (1 week)
								)
		  IN	   NS      dns1.vm.local.
		  IN	   NS      dns2.vm.local.
		  
1.1		  IN	   PTR     rtr.vm.local
1.11	  IN	   PTR     dns1.vm.local
1.12      IN       PTR     dns2.vm.local

Обратная зона ipv6

2001:db8:1001:10::10 - адрес

2001:db8:1001:0010:0000:0000:0000:0010 - адрес со всеми нулями

2.0.0.1.0.d.b.8.1.0.0.1.0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0 - адрес где поставили точки

0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.1.0.0.1.8.b.d.0.1.0.0.2 - адрес перевернули

vi /etc/bind/named.conf.local

zone 0.1.0.0.1.0.0.1.8.b.d.0.1.0.0.2.ip6.arpa {
        type master;
        file "/var/lib/bind/local/ipv6.arpa";
        allow-transfer { servers; };
};

vi /var/lib/bind/local/10.ip6.arpa

@       IN      SOA     int.ws.kz. root.int.ws.kz. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire                                                                                                 604800 )       ; Negative Cache TTL
;
        IN      NS      int.ws.kz.
0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     int.ws.kz.
0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     int-srv01.int.ws.kz.

Автоматическая регистрация/обновление DNS имен устройств в сети

Для упрощения работы администратора (а в некоторых случаях и некоторых пользователей) полезно обеспечить автоматическое создание записей DNS для устройств получающих адрес по DHCP. Что позволит подключаться к ним по доменному имени, в не зависимости от того к какой подсети организации они подключены.

Настройка DHCP

  1. Действия выполняются в конфигурационном файле службы DHCP
  2. Необходимо включить режим interim для ddns:
#vi /etc/dhcp/dhcpd.conf
 
update-static-leases on;   # Обновлять статически выданные адресса
ddns-update-style interim; # находим и меняем на interim
  1. Указать зоны которые будут использоваться для этого:
#vi /etc/dhcp/dhcpd.conf
 
zone vm.local { # Технически может быть достаточно и зоны только прямого просмотра
            
            primary 172.16.1.2; # Указывает на master сервер 
    }
zone 1.16.172.in-addr.arpa { # Но в некоторых случаях полезно иметь и обратные адреса
 
            primary 172.16.1.2; # Указывает на master сервер 
    }
  1. Перезагрузить службу

Настройка DNS

  1. Добавьте параметр allow-update в параметры master зоны:
zone "vm.local" {
	type master;           
	file "/etc/bind/db.vm";
	allow-update { 172.16.1.254; }; 
};

Какие-то DNS записи

@       IN      NS      lego.dk.
		IN      MX      1 mail.lego.dk.
        IN      A       10.1.20.11
        IN      TXT     "v=spf1 ipv4:mail.lego.dk -all"
2025._domainkey.lego.dk. IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHpEDYtnNXMsePiyI7pnbQQjPdZErRs2ZUaeKaDlZS4qWRoLxQpKfr4vauJzb73Hl7oPojbLyYfECuSvjiNlscrHG72CFpdgvBEjyNwpeg1svAmSFbIUFUsnARlfjCF92gzxvhlBVYZfb3tdDm3Yxzh2j3Wo3zetNEM4IJkqrS1UsFp7p80N6zQy/TX9qy51eB8pkByDB1DuxR"   "0r25gS7sOgVZnsiSOX4TFl7EihUtI1vNWbBmnxggeVmvJ/CtdUHtPCx1foaDScUqrGjBK6yZA0eMvycigM9hHMI0y6vmQeYWSGEmtJfRqZCayeDb9pKAjyXrdNWrRjIYDQBGu9UQIDAQAB" )
 
_dmarc.lego.dk.  IN      TXT     "v=DMARC1; p=none; pct=100; rua=mailto:admin@lego.dk"
 
_ldap._tcp IN SRV 10 50 389 int-srv01int-srv01
 
 
crl     IN      CNAME   lego.dk.
aia     IN      CNAME   lego.dk.
ldap    IN      A       10.1.10.11
mail    IN      A       10.1.20.12
  1. NS - запись которая обозначает DNS сервер, который обслуживает домен
  2. MX - запись для почты, при отправки почты на домен (lego.dk) пересылает его на почтовый сервер (mail.lego.dk). Единичка означает приоритет, нужен если несколько почтовых серверов. Нужна будет A запись.
  3. A - запись указывает на хост с DNS записью
  4. TXT - запись содержит любую информацию о домене. В нашем случае их 2:
    1. SPF - запись, которая говорит кто почтовый сервер
    2. 2025._domainkey.lego.dk. - DKIM Запись говорит что письмо, точно шло от нашего почтового сервера.
    3. _dmarc.lego.dk. - DMARC запись политика для SPF и/или DKIM
  5. CNAME - запись ссылка на A запись
  6. _ldap._tcp - служебная запись ldap указывает что:
    1. SRV - запись сервера
    2. 10 - приоритет
    3. 50 - вес
    4. 389 - порт

Настройка view

Разделение локальной зоны и зоны внешней

  1. Создать файл /etc/bind/named.conf.acl
acl WAN {
        192.168.4.0/24;                                                                                                 };
acl Local {
        192.168.1.0/24;
        192.168.2.0/24;
        192.168.3.0/24;
};
  1. Дописать и закомментировать зону по умолчанию
# /etc/bind/named.conf
# Дописать
include "/etc/bind/named.conf.acl";
 
# Закоментировать 
//include "/etc/bind/named.conf.default-zones";
  1. Создать зоны
# /etc/bind/named.conf.local
 
 
view "local" {
        match-clients {
                Local;
        };
 
        zone "itnet.kz" {
                type master;
                allow-transfer { "none"; };
                file "/etc/bind/view/local/itnet.kz";
        };
};
 
view "wan" {
        match-clients {
                WAN;
        };
 
        zone "itnet.kz" {
                type master;
                allow-transfer { "none"; };
                file "/etc/bind/view/wan/itnet.kz";
        };
};
  1. Настройки подключения
# Изменить на новый лад
allow-query { WAN; Local;};

Проверка работоспособности DNS

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

nslookup vm.local    #за место vm.local доменное имя поддерживаемой зоны сервером
  • В случае не удачи, нужно проверить статус сервера (все зоны должны быть импортированы, и упомянуты в процессе загрузки) настройки дополнительных опций, слушающих интерфейсов, разрешенных сетей и прочие выполненные и не выполненные настройки.
# vi /etc/reslov.conf
 
domain vm.local         # Доменное имя локального хоста 
 
search vm.local         # вместе с domain для команды nslookup DNS1.vm.local
                        # без vm.local
 
nameserver 8.8.8.8      # посылать dns запросы в гугл
namesrver 192.168.1.1   # посылать dns запросы на локальный dns сервер