Библиотека сайта rus-linux.net
Серверы Linux. Часть III. Сервер DNS
Оригинал: Introduction to DNSАвтор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: A.Панин
Дата перевода: 11 июля 2015 г.
Глава 4. Вводная информация о серверах DNS
4.14. Пример: настройка первичного авторитативного сервера DNS
1. Вместо создания сервера DNS для простого кэширования информации, полученной от других серверов DNS, мы можем создать сервер DNS, который будет авторитативным сервером для нашего домена.
2. Я выбрал домен домен верхнего уровня .local
, а также обычный домен paul.local
и разместил информацию о соответствующей зоне DNS в файле конфигурации сервера DNS, расположенном по пути /etc/bind/named.conf.local
.
root@debian7:~# cat /etc/bind/named.conf.local // // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "paul.local" IN { type master; file "/etc/bind/db.paul.local"; allow-update { none; }; };
3. Также следует добавить файл базы данных зоны DNS
с содержанием, аналогичным приведенному ниже (необходимо добавить в данный файл несколько ресурсных записей A для тестирования). При настройке не следует завышать значения параметров Refresh
и Retry
, соответствующих длительностям интервалов между обновлением данных зон DNS и попытками повторного обновления этих данных при возникновении ошибок, для того, чтобы не возникало сложностей при работе со сниффером (в данном примере ведомый сервер взаимодействует с ведущим сервером с интервалом в час).
root@debian7:~# cat /etc/bind/db.paul.local ; zone for classroom teaching $TTL 86400 @ IN SOA debianpaul.paul.local. root.paul.local ( 2014100101 ; Serial 1h ; Refresh 1h ; Retry 2h ; Expire 900 ) ; Negative Cache TTL ; ; name servers ; IN NS ns1 IN NS debianpaul IN NS debian7 ; ; servers ; debianpaul IN A 10.104.33.30 debian7 IN A 10.104.33.30 ns1 IN A 10.104.33.30 ;www IN A 10.104.33.30 root@debian7:~#
Обратите внимание на то, что запись www
отмечена как комментарий, поэтому соответствующее доменное имя не будет работоспособным.
4.14.1. Использование собственного сервера DNS
Если вы убеждены в работоспособности вашего сервера DNS
, вы можете использовать его в качестве единственного стандартного сервера DNS вашей системы, модифицировав соответствующим образом файл конфигурации /etc/resolv.conf
.
root@debian7:~# cat /etc/resolv.conf nameserver 10.104.33.30 root@debian7:~#
В том случае, если вы также используете клиент DHCP с именем dhclient
, вам придется добавить информацию о вашем сервере DNS в файл конфигурации клиента DHCP, расположенный по пути /etc/dhcp/dhclient.conf
.
root@debian7:~# diff /etc/dhcp/dhclient.conf /etc/dhcp/dhclient.conf.original 21c21 < prepend domain-name-servers 10.104.33.30; --- > #prepend domain-name-servers 127.0.0.1; 23,24c23 < # domain-name, domain-name-servers, domain-search, host-name, < domain-name, domain-search, host-name, --- > domain-name, domain-name-servers, domain-search, host-name, root@debian7:~#
В примере выше показано, что IP-адрес 10.104.33.30 становится стандартным адресом, который клиент DHCP
более не должен запрашивать у сервера DHCP
.
Отредактируйте файл конфигурации /etc/hosts
таким образом, чтобы в нем было отражено ваше доменное имя и проверьте корректность редактирования с помощью утилит hostname
и dnsdomainname
.
root@debian7:~# grep debian7 /etc/hosts 127.0.1.1 debian7.paul.local debian7 root@debian7:~# hostname debian7 root@debian7:~# hostname --fqdn debian7.paul.local root@debian7:~# dnsdomainname paul.local
4.14.2. Использование собственного домена
Рассмотрите следующий пример:
root@debian7b:~# cat /etc/resolv.conf nameserver 10.104.33.30 root@debian7b:~# ping -c1 www ping: unknown host www root@debian7b:~# vi /etc/resolv.conf root@debian7b:~# cat /etc/resolv.conf nameserver 10.104.33.30 domain paul.local root@debian7b:~# ping -c1 www PING www.paul.local (10.104.33.31) 56(84) bytes of data. 64 bytes from 10.104.33.31: icmp_req=1 ttl=64 time=0.021 ms --- www.paul.local ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.021/0.021/0.021/0.000 ms root@debian7b:~#
Добавление директивы domain paul.local
в файл конфигурации /etc/resolv.conf
позволяет избежать необходимости указания имени домена при использовании имен узлов.
Вы можете использовать данную возможность автоматически, просто отредактировав файл конфигурации клиента DHCP с именем dhclient.conf
.
root@debian7:~# grep paul.local /etc/dhcp/dhclient.conf prepend domain-name "paul.local"; prepend domain-search "paul.local"; root@debian7:~#
4. Перезапустите службу вашего сервера DNS и проверьте наличие сообщений о вашей зоне DNS в системном журнале.
root@debian7:~# service bind9 restart Stopping domain name service...: bind9. Starting domain name service...: bind9. root@debian7:~# grep paul.local /var/log/syslog Oct 6 09:22:18 debian7 named[2707]: zone paul.local/IN: loaded seria\ l 2014100101 Oct 6 09:22:18 debian7 named[2707]: zone paul.local/IN: sending noti\ fies (serial 2014100101)
5. Используйте утилиту dig
или nslookup
(или даже утилиту ping
) для проверки корректности ресурсных записей A вашей зоны DNS.
root@debian7:~# ping -c1 ns1.paul.local PING ns1.paul.local (10.104.33.30) 56(84) bytes of data. 64 bytes from 10.104.33.30: icmp_req=1 ttl=64 time=0.006 ms --- ns1.paul.local ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.006/0.006/0.006/0.000 ms root@debian7:~# ping -c1 www.paul.local ping: unknown host www.paul.local
Обратите внимание на то, что запись www
была отмечена как комментарий, поэтому при обращении к ней возникает ошибка.
root@debian7:~# dig debian7.paul.local ; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> debian7.paul.local ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50491 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 2 ;; QUESTION SECTION: ;debian7.paul.local. IN A ;; ANSWER SECTION: debian7.paul.local. 86400 IN A 10.104.33.30 ;; AUTHORITY SECTION: paul.local. 86400 IN NS ns1.paul.local. paul.local. 86400 IN NS debian7.paul.local. paul.local. 86400 IN NS debianpaul.paul.local. ;; ADDITIONAL SECTION: ns1.paul.local. 86400 IN A 10.104.33.30 debianpaul.paul.local. 86400 IN A 10.104.33.30 ;; Query time: 4 msec ;; SERVER: 10.104.33.30#53(10.104.33.30) ;; WHEN: Mon Oct 6 09:35:25 2014 ;; MSG SIZE rcvd: 141 root@debian7:~#
6. На данный момент наш первичный сервер DNS должен быть корректно настроен и должен функционировать. Следует обратить внимание на следующую информацию о сервере:
ОС сервера : Debian 7 IP-адрес : 10.104.33.30 Доменное имя : paul.local Имя сервера : ns1.paul.local
4.15. Пример: настройка ведомого сервера DNS
1. Ведомый сервер DNS получает данные зоны DNS по сети от ведущего сервера DNS (ведомый сервер DNS также может выполнять функции ведущего сервера DNS). Первичный сервер DNS управляет ресурсными записями зоны DNS, хранящимися в файле локальной файловой системы. В качестве практического задания, а также для проверки работы всех студентов следует создать ведомый сервер DNS, который будет взаимодействовать со всеми ведущими серверами DNS, созданными силами студентов в аудитории.
2. Перед настройкой ведомого сервера мы должны разрешить передачу данных всех зон DNS на этот сервер DNS. Помните о том, что подобная настройка не является безопасной, ведь данные зон DNS передаются в текстовом формате без какого-либо шифрования с ограничением на уровне IP-адресов. В данном примере продолжается настройка созданного ранее сервера DNS.
Представьте, что студентка с именем Джесс
закончила выполнение описанной выше последовательности действий и создала зону DNS jesse.local
с IP-адресом 10.104.15.20. После этого ее задача будет заключаться в создании ведомого сервера DNS для обслуживания зоны DNS paul.local
на ее компьютере, а ваша - в создании ведомого сервера DNS для обслуживания зоны DNS jesse.local
на вашем компьютере.
Ниже приведен пример использования директивы allow-transfer
. Будьте осторожны, ведь по умолчанию разрешена передача данных зоны DNS на любой сервер DNS.
root@debian7:/etc/bind# cat named.conf.local // // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "paul.local" IN { type master; file "/etc/bind/db.paul.local"; allow-update { none; }; allow-transfer { 10.104.15.20; }; };
3. Благодаря следующим параметрам конфигурации вы можете сделать свой сервер DNS ведомым сервером для зоны DNS jesse.local
.
root@debian7:/etc/bind# tail -6 named.conf.local zone "jesse.local" IN { type slave; file "/var/cache/named/db.jesse.local"; masters { 10.104.15.20; }; }; root@debian7:/etc/bind# mkdir /var/cache/named/ root@debian7:/etc/bind# chown bind:bind /var/cache/named/ root@debian7:/etc/bind# ls -ld /var/cache/named/ drwxr-xr-x 2 bind bind 4096 окт 1 20:01 /var/cache/named/
Обратите внимание на то, что мы размещаем описания зон DNS, при обслуживании которых сервер является ведомым
, в конфигурационном файле из директории /var/cache/named
, а не /etc/bind
.
4. После перезапуска службы сервера DNS bind ведомый сервер должен инициировать передачу файла данных зоны DNS. Проверьте наличие соответствующих записей в файле системного журнала /avr/log/syslog
(в выводе из примера ниже убраны метки даты и времени, причем сервер DNS на компьютере Джесс не использовал текущую дату при формировании порядкового номера записей зоны DNS...)
root@debian7:/etc/bind# grep jesse /var/log/syslog named[2731]: zone jesse.local/IN: Transfer started. named[2731]: transfer of 'jesse.local/IN' from 10.104.15.20#53: connected u\ sing 10.104.33.30#44719 named[2731]: zone jesse.local/IN: transferred serial 20110516 named[2731]: transfer of 'jesse.local/IN' from 10.104.15.20#53: Transfer co\ mpleted: 1 messages, 8 records, 239 bytes, 0.001 secs (239000 bytes/sec)
А это записи зоны DNS на ведомом сервере DNS
:
root@debian7:/etc/bind# cat /var/cache/named/db.jesse.local $ORIGIN . $TTL 604800 ; 1 week jesse.local IN SOA ns.jesse.local. root.jesse.local.jesse.local. ( 20110516 ; serial 300 ; refresh (5 minutes) 200 ; retry (3 minutes 20 seconds) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) ) NS ns.jesse.local. $ORIGIN jesse.local. anya A 10.104.15.1 mac A 10.104.15.30 ns A 10.104.15.20 ubu1010srv A 10.104.15.20 www A 10.104.15.25 root@debian7:/etc/bind
4.16. Практическое задание: DNS
-
1. Установите сервер DNS
bind9
в систему и проверьте с помощью сниффера его работоспособность. -
2. Добавьте в конфигурационный файл вашего сервера DNS параметры доступа к
перенаправляющему серверу DNS
и проверьте их работоспособность. -
3. Создайте
первичный сервер DNS для обслуживания зоны DNS
с именем <ваше_имя>.local, которая должна содержать как минимум две ресурсных записи NS и четыре ресурсных записи A. -
4. Используйте утилиту
dig
илиnslookup
для проверки корректности добавления ресурсных записей NS и A. -
5. Создайте
ведомый сервер DNS
для обслуживания вашей основной зоны DNS (на другом сервере) и проверьте работоспособностьмеханизма передачи данных зоны DNS
. -
6. Используйте два сервера DNS для обслуживания двух зон DNS, после чего сделайте один из серверов DNS
условно-перенаправлющим
(вы можете использовать два сервера DNS, настроенных ранее).
4.17. Корректная процедура выполнения практического задания: DNS
-
1. Установите сервер DNS
bind9
в систему и проверьте с помощью сниффера его работоспособность. -
В процессе проверки работоспособности сервера DNS с помощью сниффера
tcpdump
илиwireshark
вы должны обнаружить запросы, отправляемые вашим сервером корневым серверам имен. -
2. Добавьте в конфигурационный файл вашего сервера DNS параметры доступа к
перенаправляющему серверу DNS
и проверьте их работоспособность. -
Параметры для доступа к перенаправляющему серверу DNS могут быть добавлены в файл конфигурации с именем named.conf.options таким же образом, как показано в разделе с теоретической информацией.
-
3. Создайте
первичный сервер DNS для обслуживания зоны DNS
с именем <ваше_имя>.local, которая должна содержать как минимум две ресурсных записи NS и четыре ресурсных записи A. -
Решение подробно описано в разделе с теоретической информацией.
-
4. Используйте утилиту
dig
илиnslookup
для проверки корректности добавления ресурсных записей NS и A. -
Решение подробно описано в разделе с теоретической информацией.
-
5. Создайте
ведомый сервер DNS
для обслуживания вашей основной зоны DNS (на другом сервере) и проверьте работоспособностьмеханизма передачи данных зоны DNS
. -
Решение подробно описано в разделе с теоретической информацией.
-
6. Используйте два сервера DNS для обслуживания двух зон DNS, после чего сделайте один из серверов DNS
условно-перенаправлющим
(вы можете использовать два сервера DNS, настроенных ранее). -
Условно-перенаправляющий сервер DNS описывается как зона DNS в конфигурационном файле с именем named.conf.local (обратитесь к информации о перенаправляющих серверах DNS из раздела с теоретической информацией).
Предыдущий раздел: | Оглавление | Следующий раздел: |
4.10. Кэш DNS | Глава 5. Дополнительная информация о серверах DNS |