Установка и настройка DNS в Ubuntu.

26.06.2019

К ак настроить Частные DNS – сервера с BIND на Ubuntu 16.04. BIND (Berkeley Internet Name Domain) является наиболее широко используемым программным обеспечением DNS через Интернет. Пакет BIND доступен для всех дистрибутивов Linux, что делает установку легко и просто. В сегодняшней статье мы покажем вам, как установить, настроить и управлять BIND 9 в качестве частного сервера DNS на , в несколько шагов.

Требования:

  • Два сервера (NS1 и NS2), подключенный к частной сети
  • В этой статье мы будем использовать подсети 10.35.0.0/16
  • DNS-клиенты, которые будут подключаться к вашим DNS-серверам

1. Обновите оба сервера

Начните с обновления пакетов на обоих серверах:

# sudo apt-get update

2. Установите BIND на обоих серверах

# sudo apt-get install bind9 bind9utils

3. Установите BIND в режим IPv4

Установка BIND в режиме IPv4, мы сделаем это путем редактирования файла “/etc/default/bind9” и добавление «-4» к переменной OPTIONS:

# sudo nano /etc/default/bind9

Отредактированный файл должен выглядеть следующим образом:

# run resolvconf? RESOLVCONF=no # startup options for the server OPTIONS="-4 -u bind"

Теперь давайте настроим ns1, как наш основной сервер DNS.

4. Настройка первичного сервера DNS

Отредактируйте файл named.conf.options:

В верхней части блока параметров добавьте новый блок с именем trust. Этот список позволит клиентам, указанным в нем, отправлять рекурсивные DNS-запросы на наш основной сервер:

Acl "trusted" { 10.35.30.13; 10.35.30.14; 10.35.55.154; 10.35.55.155; };

5. Включить рекурсивные запросы на нашем ns1 сервере, и прослушайте сервер в нашей частной сети

Затем мы добавим несколько параметров конфигурации для включения рекурсивных запросов на нашем ns1 сервере и возможность сервера прослушивать нашу частную сеть, добавьте параметры конфигурации в каталоге “/var/cache/bind”, как в примере ниже:

Options { directory "/var/cache/bind"; recursion yes; allow-recursion { trusted; }; listen-on { 10.35.30.13; }; allow-transfer { none; }; forwarders { 8.8.8.8; 8.8.4.4; }; };

Если директива “listen-on-v6” присутствует в файле named.conf.options, удалите ее, так как мы хотим BIND слушать только на IPv4.
Теперь на ns1 откройте файл named.conf.local для редактирования:

Здесь мы собираемся добавить zone:

Zone "test.example.ru" { type master; file "/etc/bind/zones/db.test.example.ru"; allow-transfer { 10.35.30.14; }; };

Наша частная подсеть 10.35.0.0/16, поэтому мы добавим обратную zone со следующими строками:

Zone "20.10.in-addr.arpa" { type master; file "/etc/bind/zones/db.10.35"; allow-transfer { 10.35.30.14; }; };

Если серверы находятся в нескольких частных подсетей на том же физическом месте, необходимо указать зону и создать отдельный файл zone для каждой подсети.

6. Создание файла обратной зоны

Теперь мы создадим каталог, где мы будем хранить наши файлы зоны:

# sudo mkdir /etc/bind/zones

Мы будем использовать пример файла db.local, чтобы сделать наш прямой файл zone, давайте скопируем файл первым:

# cd /etc/bind/zones # sudo cp ../db.local ./db.test.example.ru

Теперь отредактируйте файл зоны, мы просто скопировали:

# sudo nano /etc/bind/zones/db.test.example.ru

Это должно выглядеть как на примере ниже:

$TTL 604800 @ IN SOA localhost. root.localhost. (2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800) ; Negative Cache TTL ; @ IN NS localhost. ; delete this @ IN A 127.0.0.1 ; delete this @ IN AAAA::1 ; delete this

Теперь давайте отредактируем запись SOA. Заменим Localhost на доменное имя вашего Ns1 сервера, а затем заменим «root.localhost» на «admin.test.example.ru». Каждый раз, когда вы редактируете файл zone, увеличьте серийное значение перед перезапуском имени иначе привязка не будет применять изменение к zone, мы увеличим значение до “3”, это должно выглядеть примерно так:

Затем удалите последние три записи, помеченные как «delete this» после записи SOA.

После этого добавить записи для хостов, которые должны находиться в этой зоне. Это означает, что любой сервер, имя которого мы хотим закончить на «.test.example.ru»:

; name servers - A records ns1.test.example.ru. IN A 10.35.30.13 ns2.test.example.ru. IN A 10.35.30.14 ; 10.35.0.0/16 - A records host1.test.example.ru. IN A 10.35.55.154 host2.test.example.ru. IN A 10.35.55.155

Файл db.test.example.ru должен выглядеть следующим образом:

$TTL 604800 @ IN SOA ns1.test.example.ru. admin.test.example.ru. (3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800) ; Negative Cache TTL ; ; name servers - NS records IN NS ns1.test.example.ru. IN NS ns2.test.example.ru. ; name servers - A records ns1.test.example.ru. IN A 10.35.30.13 ns2.test.example.ru. IN A 10.35.30.14 ; 10.35.0.0/16 - A records host1.test.example.ru. IN A 10.35.55.154 host2.test.example.ru. IN A 10.35.55.155

7. Создание файла обратной зоны

Зададим записи PTR для обратных DNS-запросов в файлах обратных зон. Когда сервер DNS получает запрос подстановок PTR для примера для IP: «10.35.55.154», он будет проверять обратный файл зоны для извлечения полного доменного имени IP-адреса, в нашем случае это будет «host1.test.example.ru».

Мы создадим обратную файл zone для каждой обратной зоны, указанной в файле named.conf.local, который мы создали для ns1. Мы будем использовать файл зоны db.127 как образец для того чтобы создать наш обратный файл zone:

# cd /etc/bind/zones # sudo cp ../db.127 ./db.10.35

Отредактируйте файл обратной зоны, чтобы он соответствовал обратной зоне, определенной в named.conf.local:

# sudo nano /etc/bind/zones/db.10.35

Исходный файл должен выглядеть следующим образом:

$TTL 604800 @ IN SOA localhost. root.localhost. (1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800) ; Negative Cache TTL ; @ IN NS localhost. ; delete this 1.0.0 IN PTR localhost. ; delete this

Вы должны изменить запись SOA и увеличивать серийное значение. Это должно выглядеть примерно так:

@ IN SOA ns1.test.example.ru. admin.test.example.ru. (3 ; Serial

Затем удалите последние три записи, помеченные «delete this» после записи SOA.

Добавьте записи серверов имен в конце файла:

; name servers - NS records IN NS ns1.test.example.ru. IN NS ns2.test.example.ru.

Теперь добавить ptr-записи для всех узлов, которые находятся в одной подсети в файл зоны, который вы создали. Он состоит из наших хостов, которые находятся в подсети 10.20.0.0/16. В первой колонке мы изменим порядок последние два октета IP-адреса узла, которые мы хотим добавить:

; PTR Records 13.30 IN PTR ns1.test.example.ru. ; 10.35.30.13 14.30 IN PTR ns2.test.example.ru. ; 10.35.30.14 154.55 IN PTR host1.test.example.ru. ; 10.35.55.154 155.55 IN PTR host2.test.example.ru. ; 10.35.55.155

Файл обратной zone «/etc/bind/zones/db.10.35» должен выглядеть следующим образом:

$TTL 604800 @ IN SOA test.example.ru. admin.test.example.ru. (3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800) ; Negative Cache TTL ; name servers IN NS ns1.test.example.ru. IN NS ns2.test.example.ru. ; PTR Records 13.30 IN PTR ns1.test.example.ru. ; 10.35.30.13 14.30 IN PTR ns2.test.example.ru. ; 10.35.30.14 154.55 IN PTR host1.test.example.ru. ; 10.35.55.154 155.55 IN PTR host2.test.example.ru. ; 10.35.55.155

8. Проверьте файлы конфигурации

Используйте следующую команду, чтобы проверить синтаксис конфигурации всех файлов named.conf, которые мы сконфигурировали:

# sudo named-checkconf

Если файлы конфигурации не имеют каких-либо проблем синтаксиса, вывод не будет содержать каких-либо сообщений об ошибках. Однако, если у вас есть проблемы с файлами конфигурации, сравните параметры в раздела «Настройка основного DNS-сервера» с файлами, если у вас есть ошибки, сделайте правильные корректировки, и вы можете попробовать еще раз, выполнив команду named-checkconf.

named-checkconf может быть использован для проверки правильности конфигурации ваших файлов зон. Вы можете использовать следующую команду, чтобы проверить зону напрямую «test.example.ru»:

# sudo named-checkzone test.example.ru db.test.example.ru

И если вы хотите проверить конфигурацию обратной zone, выполните следующую команду:

# sudo named-checkzone 20.10.in-addr.arpa /etc/bind/zones/db.10.35

После того, как вы правильно настроили файлы конфигурации и zone, перезапустите службу BIND:

9. Настройка вторичного DNS-сервера

Настройка вторичного сервера DNS всегда хорошая идея, так как он будет служить в качестве перехода на другой ресурс и будет отвечать на запросы, если первичный сервер не отвечает на запросы.

На ns2, отредактировать файл named.conf.options:

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

В верхней части файла, добавьте ACL с частными IP-адресами для всех ваших доверенных серверов:

Acl "trusted" { 10.35.30.13; 10.35.30.14; 10.128.100.101; 10.128.200.102; };

Так же, как в файле named.conf.options для ns2, добавьте следующие строки в директиве каталог “/var/cache/bind”:

Recursion yes; allow-recursion { trusted; }; listen-on { 10.35.30.13; }; allow-transfer { none; }; forwarders { 8.8.8.8; 8.8.4.4; };

Сохраните и закройте файл.

Теперь откройте файл named.conf.local для редактирования:

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

Теперь мы должны указать ведомые зону, соответствующие мастер-зоне на сервере DNS ns1. Директива мастера должна быть установлена на частный IP-адрес DNS Ns1 сервер:

Zone "test.example.ru" { type slave; file "slaves/db.test.example.ru"; masters { 10.35.30.13; }; }; zone "20.10.in-addr.arpa" { type slave; file "slaves/db.10.35"; masters { 10.35.30.13; }; };

Теперь сохраните и закройте файл.

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

# sudo named-checkconf

Затем перезапустить службу BIND:

# sudo service bind9 restart

10. Конфигурирование DNS-клиентов

Теперь настроим хосты в нашей 10.35.0.0/16 подсети использовать NS1 и NS2 сервера в качестве основных и вторичных серверов DNS. Это в значительной степени зависит от операционной системы, но для большинства дистрибутивов Linux настройки, которые должны быть изменены постоянно находиться в файле /etc/resolv.conf.

Как правило, на распределениях Ubuntu, и просто отредактируйте файл /etc/resolv.conf, выполните следующую команду как root:

# nano /etc/resolv.conf

Затем замените существующие сервера имен на:

Nameserver 10.35.30.13 #ns1 nameserver 10.35.30.14 #ns2

Теперь сохраните и закройте файл и клиент должен быть настроен на использование сервера имен NS1 и NS2.

Затем проверьте, как ваши клиенты могут отправлять запросы к DNS-серверам, которые вы только что настроили:

# nslookup host1.test.example.ru

Вывод этой команды должен быть следующим:

Output: Server: 10.35.30.13 Address: 10.35.30.13#53 Name: host1.test.example.ru Address: 10.35.55.154

Вы также можете проверить обратный поиск, запрашивая DNS-сервер с IP-адресом хоста:

# nslookup 10.35.55.154

Вывод должен выглядеть следующим образом:

Output: Server: 10.35.30.13 Address: 10.35.30.13#53 154.55.20.10.in-addr.arpa name = host1.test.example.ru.

Проверьте правильность решения всех узлов с помощью приведенных выше команд, если это означает, что все настроено правильно.

Добавление нового хоста в DNS-сервера

Если вам нужно добавить хост в DNS-сервера, просто выполните следующие действия:

На сервере ns1 имен выполните следующие действия:

  • Создание записи A в файле передней зоны для хоста и увеличение значения последовательных переменных.
  • Создание записи PTR в обратном файле зоны для хоста и увеличение значения последовательных переменных.
  • Добавить частного IP-адреса хоста в доверенном ACL в named.conf.options.

На сервере ns2 имен выполните следующие действия:

  • Добавить частный IP-адрес хоста в доверенном ACL в named.conf.options.
  • Обновить BIND с помощью следующей команды: sudo service bind9 reload

На хост-компьютере выполните следующие действия:

  • Отредактируйте /etc/resolv.conf и измените сервер имен для вашего DNS-серверов.
  • Используйте nslookup, чтобы проверить, что хост запрашивает DNS-серверы.

Удаление существующего хоста из ваших DNS-серверов

Если вы хотите удалить узел из ваших DNS-серверов, просто отмените шаги, описанные выше.

Примечание:

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

Добрый день, сегодня расскажу как настроить DNS на сервере Ubuntu 14.04 LTS. Для начало теория: DNS это служба сервера, которая преобразует доменное имя в IP-адрес. Например www.example.com будет преобразовано в 93.184.216.34. Записи в DNS имеют несколько типов (Основные: A -address record, AAAA -IPv6 address record, CNAME -canonical name record, MX -mail exchange, NS -name server, PTR -pointer, SOA -Start of Authority).

И так приступим к самой настройке DNS. Прежде всего, я полагаю что у Вас установлен сервер Ubuntu 14.04 LTS, выполнено его обновление. Для обновления, выполните в командной строке две команды:

Apt-get update

Sudo apt-get upgrade

После выполнения обновления выполним установку службы Bind9.

Sudo apt-get install bind9

Bind9 установлен, но не настроен. Произведем его настройку. Остановим службу:

Sudo service bind9 stop

Укажем адреса, на которых Bind9 будет слушать запросы и куда перенаправлять в случае если он не отвечает за эту зону. Для этого открываем файл /etc/bind/named.conf.options

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

в графу forwarders указываем сервера для пересылки запросов, а в графу listen-on указываем на каких адресах он должен отвечать. Должно получится что-то вроде этого:

Options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0"s placeholder. // forwarders { // 0.0.0.0; // }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; forwarders { 8.8.8.8; 8.8.4.4; }; listen-on { 127.0.0.1; 192.168.0.1; }; };

Обратите внимание на строку listen-on-v6 { any; }; если у Вас включен IPv6, то Bind9 будет слушать на всех адресах IPv6. Если необходимо этого избежать, то за комментируйте эту строку или укажите конкретный адрес. Не рекомендуется слушать на всех адресах, особенно которые на прямую смотрят в интернет, так как существует масса атак на DNS сервера.

Теперь настроим зоны, которыми будет управлять наш Bind9. Для этого открываем файл /etc/bind/named.conf.local

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

Прописываем согласно примера:

Zone "example.com" { //Домен которой будем управлять type master; //Тип. Bind9 главный он и будет управлять file "/etc/bind/db.example.com"; //Файл с содержанием домена }; zone "0.168.192.in-addr.arpa" { //Обратная запись для домена type master; //Тип. Bind9 главный он и будет управлять file "/etc/bind/db.0.168.192"; //Файл с обратными записями домена };

Теперь создадим файл зон:

Sudo touch /etc/bind/db.example.com

Sudo touch /etc/bind/db.0.168.192

В файл /etc/bind/db.example.com мы должны прописать зоны прямого просмотра и указать NS сервера, по сколько мы будем являться для данного домена NS сервером, то необходимо указать имя нашего хоста. У меня имя хоста сервера, заданное при установке, srv-bind9. Заполняем по примеру:

; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA srv-bind9.example.com. root.srv-bind9.example.com. (//обратите внимание в конце стоит точка 20150120 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800) ; Negative Cache TTL ; @ IN NS srv-bind9.example.com. @ IN A 192.168.0.1 //указываем адрес нашего сервера @ IN AAAA::1 //указываем IPv6 адрес нашего сервера, если есть. srv-bind9 IN A 192.168.0.1 //указываем адрес нашего сервера

Прямую зону настроили, теперь настроим обратную. Открываем файл: /etc/bind/db.0.168.192 и настраиваем по примеру:

; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA srv-bind9.example.com. root.srv-bind9.example.com. (//обратите внимание в конце стоит точка 20141126 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800) ; Negative Cache TTL ; @ IN NS srv-bind9. //обратите внимание в конце стоит точка 1 IN PTR srv-bind9.example.com. //В первой колонке указывается последняя цифра IP-адреса. //Обратите внимание в конце стоит точка

Осталось проверить правильность настроек выполнив команду:

Named-checkconf

Если она ничего не сообщила, то всё сделано правильно. И можно запускать Bind9:

Sudo service bind9 start

Вот мы и закончили установку и настройку Bind9

DNS (Domain Name System) – важный и довольно сложный в настройке компонент, необходимый для работы веб-сайтов и серверов. Многие пользователи обращаются к DNS-серверам, которые предоставляет их хостинг-провайдер, однако собственные DNS-серверы имеют некоторые преимущества.

В данном мануале вы узнаете, как установить Bind9 и настроить его как кэширующий или перенаправляющий DNS-сервер на сервере Ubuntu 14.04.

Требования

  • Понимание базовых типов DNS-серверов. Ознакомиться с подробностями можно в .
  • Две машины, из которых хотя бы одна работает на Ubuntu 14.04. Первая машина будет настроена как клиент (IP-адрес 192.0.2.100), а вторая – как DNS-сервер (192.0.2.1).

Вы научитесь настраивать клиентскую машину для отправки запросов через DNS-сервер.

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

Серверы этого типа также называются определителями, поскольку они обрабатывают рекурсивные запросы и, как правило, могут выполнить поиск данных DNS не других серверах.

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

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

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

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

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

Это позволяет перенаправляющему серверу обслуживать запросы из своего кэша, не обрабатывая при этом рекурсивных запросов. Таким образом, этот сервер обрабатывает только одиночные запросы (перенаправленные запросы клиента), а не всю процедуру рекурсии. Это может быть преимуществом в средах с ограниченной внешней пропускной способностью, в которых необходимо часто менять кэширующие серверы, и в ситуациях, когда нужно перенаправить локальные запросы на один сервер, а внешние – на другой.

1: Установка Bind на DNS-сервер

Пакет Bind можно найти в официальном репозитории Ubuntu. Обновите индекс пакетов и установите Bind с помощью менеджера apt. Также нужно установить пару зависимостей.

sudo apt-get update
sudo apt-get install bind9 bind9utils bind9-doc

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

2: Настройка кэширующего DNS-сервера

Сначала нужно настроить Bind в качестве кэширующего DNS-сервера. Такая конфигурация заставит сервер рекурсивно искать ответы на клиентские запросы на других DNS-серверах. Он будет последовательно опрашивать все соответствующие DNS-сервера, пока не найдет ответ.

Конфигурационные файлы Bind хранятся в каталоге /etc/bind.

Большую часть файлов редактировать не нужно. Главный конфигурационный файл называется named.conf (named и bind – два названия одного приложения). Этот файл ссылается на файлы named.conf.options, named.conf.local и named.conf.default-zones.

Для настройки кэширующего DNS-сервера нужно отредактировать только named.conf.options.

sudo nano named.conf.options

Этот файл выглядит так (комментарии опущены для простоты):

options {
directory "/var/cache/bind";
dnssec-validation auto;

listen-on-v6 { any; };
};

Чтобы настроить кэширующий сервер, нужно создать список контроля доступа, или ACL.

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

Атаки DNS-усиления – это один из способов прекращения работы серверов и сайтов. Для этого злоумышленники пытаются найти общедоступные DNS-серверы, которые обрабатывают рекурсивные запросы. Они подделывают IP-адрес жертвы и отправляют запрос, который вернет DNS-серверу очень объемный ответ. При этом DNS-сервер возвращает на сервер жертвы слишком много данных в ответ на небольшой запрос, увеличивая доступную пропускную способность злоумышленника.

Для размещения общедоступного рекурсивного DNS-сервера требуется тщательная настройка и администрирование. Чтобы предотвратить возможность взлома сервера, настройте список IP-адресов или диапазонов сети, которым сервер сможет доверять.

Перед блоком options добавьте блок acl. Создайте метку для группы ACL (в данном мануале группа называется goodclients).

acl goodclients {
};
options {
. . .

В этом блоке перечислите IP-адреса или сети, у которых будет доступ к этому DNS-серверу. Поскольку сервер и клиент работают в подсети /24, можно ограничить доступ по этой подсети. Также нужно разблокировать localhost и localnets, которые подключаются автоматически.

acl goodclients {
192.0.2.0/24;
localhost;
localnets;
};
options {
. . .

Теперь у вас есть ACL безопасных клиентов. Можно приступать к настройке разрешения запросов в блоке options. Добавьте в него такие строки:

options {
directory "/var/cache/bind";
recursion yes;

. . .

Блок options явно включает рекурсию, а затем настраивает параметр allow-query для использования списка ACL. Для ссылки на группу ACL можно также использовать другой параметр, например allow-recursion. При включенной рекурсии allow-recursion определит список клиентов, которые могут использовать рекурсивные сервисы.

Однако если параметр allow-recursion не установлен, Bind возвращается к списку allow-query-cache, затем к списку allow-query и, наконец, к спискам по умолчанию localnets и localhost. Поскольку мы настраиваем только кэширующий сервер (он не имеет собственных зон и не пересылает запросы), список allow-query всегда будет применяться только к рекурсии. Это самый общий способ определения ACL.

Сохраните и закройте файл.

Это все настройки, которые нужно добавить в конфигурационный файл кэширующего DNS-сервера.

Примечание : Если вы хотите использовать только этот тип DNS, переходите к проверке конфигураций, перезапустите сервис и настройте свой клиент.

3: Настройка перенаправляющего DNS-сервера

Если вашей инфраструктуре больше подходит перенаправляющий DNS-сервер, вы можете немного откорректировать настройку.

На данный момент файл named.conf.options выглядит так:

acl goodclients {
192.0.2.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-query { goodclients; };
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

Можно использовать тот же список ACL, чтобы ограничивать DNS-сервер конкретным списком клиентов. Однако при этом необходимо немного изменить конфигурацию, чтобы сервер больше не пытался выполнять рекурсивные запросы.

Не меняйте значение recursion на no. Перенаправляющий сервер все-таки поддерживает рекурсивные сервисы. Чтобы настроить перенаправляющий сервер, нужно создать список кэширующих серверов, на которые он будет перенаправлять запросы.

Это делается в блоке options {}. Сначала нужно создать в нем новый блок forwarders, где будут храниться IP-адреса рекурсивных серверов имен, на которые нужно перенаправлять запросы. В данном случае это будут DNS-серверы Google (8.8.8.8 и 8.8.4.4):

. . .
options {
directory "/var/cache/bind";
recursion yes;
allow-query { goodclients; };
forwarders {

8.8.8.8;

8.8.4.4;

};
. . .

В результате конфигурация выглядит так:

acl goodclients {
192.0.2.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-query { goodclients; };
forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

Последнее изменение касается параметра dnssec. При текущей конфигурации и в зависимости от настройки DNS-серверов, на которые перенаправляются запросы, в логах могут появиться такие ошибки:

Jun 25 15:03:29 cache named: error (chase DS servers) resolving "in-addr.arpa/DS/IN": 8.8.8.8#53
Jun 25 15:03:29 cache named: error (no valid DS) resolving "111.111.111.111.in-addr.arpa/PTR/IN": 8.8.4.4#53

Чтобы избежать их, нужно изменить значение параметра dnssec-validation на yes и явно разрешить dnssec.

. . .
forward only;
dnssec-enable yes;
dnssec-validation yes;
auth-nxdomain no; # conform to RFC1035
. . .

Сохраните и закройте файл. Настройка перенаправляющего DNS-сервера завершена.

4: Проверка настроек и перезапуск Bind

Теперь нужно убедиться, что настройки работают должным образом.

Чтобы проверить синтаксис конфигурационных файлов, введите:

sudo named-checkconf

Если в файлах нет ошибок, командная строка не отобразит никакого вывода.

Если вы получили сообщение об ошибке, исправьте ее и повторите проверку.

После этого можно перезапустить демон Bind, чтобы обновить настройки.

sudo service bind9 restart

После нужно проверить логи сервера. Запустите на сервер команду:

sudo tail -f /var/log/syslog

Теперь откройте новый терминал и приступайте к настройке клиентской машины.

5: Настройка клиента

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

Отредактируйте файл /etc/resolv.conf, чтобы направить сервер на сервер имен.

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

Откройте файл с помощью sudo в текстовом редакторе:

sudo nano /etc/resolv.conf

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

nameserver 192.0.2.1
# nameserver 8.8.4.4
# nameserver 8.8.8.8
# nameserver 209.244.0.3

Сохраните и закройте файл.

Теперь можно отправить тестовый запрос, чтобы убедиться, что он разрешается правильно.

Для этого можно использовать ping:

ping -c 1 google.com
PING google.com (173.194.33.1) 56(84) bytes of data.
64 bytes from sea09s01-in-f1.1e100.net (173.194.33.1): icmp_seq=1 ttl=55 time=63.8 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 63.807/63.807/63.807/0.000 ms

Для тех, кто не знает, что DNS представляет собой систему доменных имён, которая служит для преобразования имени в IP-адрес ПК и обратно. Таким образом, когда вы вводите адрес веб-страницы в браузере, система доменных имён преобразует его в IP-адрес хостинга , на котором располагается конкретный домен. В этой статье детально разберём, как установить и настроить DNS-сервер Ubuntu. Давайте же начнём. Поехали!

Перезапуск bind9

sudo service bind9 restart

Теперь укажите зоны прямого и обратного просмотра, а также введите их в конфигурации bind9. Исходные данные следующие:

Доменное имя - dom
IP-адрес сервера - 192.168.0.1
Имя сервера - ns.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

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.
$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»;

};

// зона обратного просмотра

zone «0.168.192.in-addr.arpa»{
type master;
file «/var/lib/bind/db.192»;
allow-update { key DHCP_UPDATER; };
};

key DHCP_UPDATER - информация о secret key, который вы записывали в самом начале (его необходимо прописывать в кавычках). Если ранее, вы воспользовались вторым способом, введите:

// зона прямого просмотра

zone «dom»{
type master;
file «/var/lib/bind/db.dom»;

};

// зона обратного просмотра

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» - данные о зоне применения системы доменных имён. Остаётся сохранить всё это дело, затем закрыть и перезапустить bind9, введя:

sudo /etc/init.d/bind9 restart

Проверка работы системы доменных имён

Теперь проверьте работу системы доменных имён:

в результате вы должны получить нечто вроде:

Server: 127.0.0.1
Address: 127.0.0.1#53
Name: ns.dom
Address: 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.

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

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

Чтобы настроить динамическое обновление , откройте /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), содержит ваш секретный ключ. Чтобы посмотреть rndc-key выполните:

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

в результате должно получиться нечто подобное:

secret «2mu11eRajAdm4KV0x0Pmcg==»;

На этом с настройками DHCP всё. Теперь необходимо перезапустить bind9 и dhcp. Для этого пропишите:

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

Остаётся проверить как всё работает. Запустите клиентскую машину, находящуюся в сети с сервером. После запуска машина получит IP от DHCP, а он, в свою очередь, создаст запись типа client-pc.dom. По запросу «nslookup имя_клиентской_машины», вы должны получить ответ. Перезапустив server, можно будет посмотреть файлы прямого и обратного просмотра. Если на предыдущих этапах вы всё настроили правильно , там вы увидите информацию о новых машинах. Готово. Настройка завершена.

Итоги

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

Сегодня продолжим цикл статей по настройке сервера и рассмотрим что же из себя представляет настройка DNS сервера Ubuntu. У нас уже есть сервер на базе ubuntu 14.04.1 LTS, на нем настроен DHCP сервер. Сегодня мы туда добавим еще и службу DNS.

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

По многочисленным просьбам читателей, я еще раз перепроверил все пункты и нашел некоторые ньюансы из-за которых сервер некорректно работал (изначально статья была написана для ubuntu server 11.04). Статья полностью переписана и проверена на Ubuntu Server 14.04.1