Setup-a-Basic-Recursive-Caching-DNS-Server-and-Configure-Zones-for-Domain

Настройка базового рекурсивного кэширующего DNS-сервера и настройка зон для домена — LFCS часть 19

LFCS

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

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

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

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

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

Разрешения имен DNS

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

Этот файл, использует очень простым синтаксис, позволяет связать имя (и/или псевдоним) с IP-адресом. Это выполняется следующим образом:

[IP address] [name] [alias(es)]

 

Например,

192.168.0.1 gateway gateway.mydomain.com
192.168.0.2 web web.mydomain.com

 

Таким образом, вы можете связаться с веб-машиной либо по имени web.mydomain.com, либо по её IP-адресу.

Для больших сетей или тех, которые подвержены частым изменениям, использование файла /etc/hosts для разрешения имен доменов на IP-адреса не будет приемлемым решением. Именно здесь возникает необходимость в специальном сервисе.

Залезем за кулисы работы DNSDNS-сервер запрашивает большую базу данных в виде дерева, которое начинается с корневой («.») зоны.

Следующий рисунок поможет нам понять о чём идет речь:

DNS-Name-Resolution-Diagram

 

 

На изображении выше  корневая зона (.) содержит com, edu и net домены первого уровня. Каждый из этих доменов управляется (или может управляться) различными организациями, чтобы избежать зависимости от одной большой — центральной. Это позволяет правильно распределять запросы по иерархии.

Давайте посмотрим, что происходит:

1. Когда клиент делает запрос на DNS-сервер для web1.sales.me.com, сервер отправляет запрос на верхний (корневой) DNS-сервер, который направляет запрос на сервер имен в зону .com.

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

2. В этом примере сервер имен в sales.me.com отвечает за адрес web1.sales.me.com и возвращает желаемую ассоциацию для имени домена-IP и другую информацию (если он настроен для этого).

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

 

Установка и настройка DNS-сервера

В Linux наиболее используемым DNS-сервером является bind (сокращение от Berkeley Internet Name Daemon), которое может быть установлено следующим образом:

# yum install bind bind-utils [CentOS]
# zypper install bind bind-utils [openSUSE]
# aptitude install bind9 bind9utils [Ubuntu]

 

После того, как мы установили bind и связанные с ним утилиты, сделаем копию файла конфигурации перед внесением каких либо изменений:

# cp /etc/named.conf /etc/named.conf.orig [CentOS and openSUSE]
# cp /etc/bind/named.conf /etc/bind/named.conf.orig [Ubuntu]

 

Затем давайте откроем named.conf и перейдем к блоку параметров, где нам нужно указать следующие настройки для рекурсивного кеширующего сервера с IP 192.168.0.18/24, к которому могут обращаться только хосты в той же сети (в качестве меры безопасности).

Параметры прямой зоны используются для указания того, какие серверы имен необходимо сначала запрашивать (в следующем примере мы используем серверы имен Google) для хостов вне нашего домена:

options {
...
listen-on port 53 { 127.0.0.1; 192.168.0.18};
allow-query { localhost; 192.168.0.0/24; };
recursion yes;
forwarders {
8.8.8.8;
8.8.4.4;
};
…
}

 

Вне блока опций мы определим нашу зону sales.me.com (в Ubuntu это обычно делается в отдельном файле с именем named.conf.local), который отображает домен с заданным IP-адресом и обратной зоной для сопоставления IP-адреса к соответствующей области.

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

Добавьте следующие строки в файл named.conf:

zone "sales.me.com." IN {
type master;
file "/var/named/sales.me.com.zone";
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "/var/named/0.162.198.in-addr.arpa.zone";
};

 

Обратите внимание, что inaddr.arpa (для адресов IPv4) и ip6.arpa (для IPv6) являются соглашениями для конфигураций обратной зоны.

После сохранения вышеуказанных изменений в named.conf мы можем проверить наличие ошибок следующим образом:

# named-checkconf /etc/named.conf

 

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

Настройка DNS-зон

В файлах /var/named/sales.me.com.zone и /var/named/0.168.192.in-addr.arpa.zone мы настроим прямую (домен → IP-адрес) и обратную (IP-адрес → домен) зоны.

Сначала рассмотрим прямую конфигурацию:

1. В верхней части файла вы найдете строку, начинающуюся с TTL (сокращение от Time To Live), в которой указано, как долго кешированный ответ должен «жить» перед его заменой результатами нового запроса.

В строке, расположенной ниже, мы свяжемся с нашим доменом и укажем адрес электронной почты, с которой должны быть отправлены уведомления (обратите внимание, что root.sales.me.com означает [email protected]).

2. Запись SOA (Start of Authority) указывает, что эта система является авторитетным сервером имен для машин внутри домена sales.me.com.

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

Serial используется для выделения одной версии файла определения зоны из предыдущей (где могли быть изменены параметры). Если кешированный ответ указывает на вывод с другим Serial, запрос выполняется снова, вместо того, чтобы вернутся к клиенту.

В настройке с ведомым (вторичным) сервером имен Refresh указывает время, в течение которого вторичный сервер должен проверять новый серийный номер с главного сервера.

Кроме того, Retry сообщает серверу, как часто вторичный объект должен пытаться связаться с основным, если ответ от первичного не получен, тогда как Expire указывает, когда определение зоны во вторичном режиме больше не действует после того, как становится невозможно получить ответ от главного сервера, и отрицательный TTL — это время, в течение которого не кэшируется несуществующий домен (NXdomain).

3. NS-запись указывает, что является авторитетным DNS-сервером для нашего домена (на который указывает знак @ в начале строки).

4. Запись A (для адресов IPv4) или AAAA (для адресов IPv6) преобразует имена в IP-адреса.

В приведенном ниже примере:

dns: 192.168.0.18 (the DNS server itself)
web1: 192.168.0.29 (a web server inside the sales.me.com zone)
mail1: 192.168.0.28 (a mail server inside the sales.me.com zone)
mail2: 192.168.0.30 (another mail server)

 

5. Запись MX указывает имена уполномоченных агентов передачи почты (MTA) для этого домена. Имя хоста должно быть предварено номером, указывающим приоритет, который должен иметь текущий почтовый сервер при наличии двух или более MTA для домена (чем ниже значение, тем выше приоритет) в следующем примере, mail1 является основным, тогда как mail2 является вторичным MTA).

6. Запись CNAME устанавливает псевдоним (www.web1) для хоста (web1).

ВАЖНО: важно наличие точки (.) в конце имен.

$TTL 604800
@ IN SOA sales.me.com. root.sales.me.com. (
2016051101 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
604800) ; Negative TTL
;
@ IN NS dns.sales.me.com.
dns IN A 192.168.0.18
web1 IN A 192.168.0.29
mail1 IN A 192.168.0.28
mail2 IN A 192.168.0.30
@ IN MX 10 mail1.sales.me.com.
@ IN MX 20 mail2.sales.me.com.
www.web1 IN CNAME web1

 

Давайте посмотрим на конфигурацию обратной зоны (/var/named/0.168.192.in-addr.arpa.zone). Запись SOA такая же, как и в предыдущем файле, тогда как последние три строки с записью PTR (указатель) указывают последний октет в адресе хостов IPv4 mail1, web1 и mail2 (192.168.0.28, 192.168.0.29, и 192.168.0.30, соответственно).

$TTL 604800
@ IN SOA sales.me.com. root.sales.me.com. (
2016051101 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
604800) ; Minimum TTL
@ IN NS dns.sales.me.com.
28 IN PTR mail1.sales.me.com.
29 IN PTR web1.sales.me.com.
30 IN PTR mail2.sales.me.com.

 

Вы можете проверить файлы зон на наличие ошибок:

# named-checkzone sales.me.com /var/named/sales.me.com.zone
# named-checkzone 0.168.192.in-addr.arpa /var/named/0.168.192.in-addr.arpa.zone

 

На следующем скриншоте показано, каков ожидаемый результат вывода:

Check-DNS-Zone-File-Configuration-Errors

 

 

В противном случае вы получите сообщение об ошибке и советом по её устранению:

Fix-DNS-Zone-Configuration-Error

 

 

После того, как вы проверили основной файл конфигурации и файлы зон, перезапустите именованную службу, чтобы применить изменения.

В CentOS и openSUSE выполните:

# systemctl restart named

 

И не забудьте также включить его:

# systemctl enable named

 

В Ubuntu:

$ sudo service bind9 restart

 

Наконец, вам нужно будет отредактировать конфигурацию основных сетевых интерфейсов:

---- In /etc/sysconfig/network-scripts/ifcfg-enp0s3 for CentOS and openSUSE ----
DNS1=192.168.0.18
---- In /etc/network/interfaces for Ubuntu ----
dns-nameservers 192.168.0.18 

 

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

 

Тестирование DNS-сервера

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

# host web1.sales.me.com
# host web1
# host www.web1

 

Query-DNS-on-Domain-Host

 

 

Как мы можем узнать, кто обрабатывает электронные письма для sales.me.com? Узнать это легко — просто запросите записи MX для домена:

# host -t mx sales.me.com

 

Query-MX-Record-Of-Domain

 

 

Аналогично, давайте проведем обратный запрос. Это поможет нам узнать имя IP-адреса:

# host 192.168.0.28
# host 192.168.0.29

 

DNS-Reverse-Query-on-IP-Address

 

 

Вы можете попробовать те же операции для внешних хостов:

# host -t mx linux.com
# host 8.8.8.8

 

Check-Domain-DNS-Information

 

 

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

# rndc querylog

 

И проверьте файл /var/log/messages (в CentOS и openSUSE):

# host -t mx linux.com
# host 8.8.8.8

 

Verify-DNS-Queries-in-Log

 

 

Чтобы отключить ведение журнала DNS, введите еще раз:

# rndc querylog

 

В Ubuntu для включения ведения журнала потребуется добавить следующий независимый блок (тот же уровень, что и блок опций) в /etc/bind/named.conf:

logging {
channel query_log {
file "/var/log/bind9/query.log";
severity dynamic;
print-category yes;
print-severity yes;
print-time yes;
};
category queries { query_log; };
};

 

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

 

Итоги

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

Чтобы обеспечить правильную работу вашего DNS-сервера, не забудьте разрешить эту службу в вашем брандмауэре (порт TCP 53), как описано в части 8 серии LFCE («Настройка брандмауэра Iptables для включения удаленного доступа к услугам»).

Стать сертифицированным системным администратором Linux

 

 

Спасибо за уделенное время на прочтение статьи!

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

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасности от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

 

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
LFCS

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Most Viewed Posts
Меню