Представьте, что было бы, если бы мы должны были помнить IP-адреса всех веб-сайтов, которые мы используем ежедневно. Даже если бы у нас была потрясающая память, процесс перехода на сайт был бы смехотворно медленным и трудоемким.
А как насчет того, если нам нужно посещать несколько веб-сайтов или использовать несколько приложений, которые находятся на одном компьютере или виртуальном хосте? Это будет одна из худших головных болей, которые только можно представить — не говоря уже о возможности изменения IP-адреса, связанного с веб-сайтом или приложением, без предварительного уведомления.
Только сама мысль об этом была бы достаточной причиной, чтобы через некоторое время отказаться от использования Интернета или внутренних сетей.
Именно так будет выглядеть мир без системы доменных имен (также известный как DNS). К счастью, эта служба решает все проблемы, упомянутые выше, даже если связь между IP-адресом и доменным именем изменяется.
По этой причине в этой статье мы узнаем, как настроить и использовать простой DNS-сервер, службу, которая позволит переводить доменные имена в IP-адреса и наоборот.
Разрешения имен DNS
Для небольших сетей, которые не подвержены частым изменениям, файл /etc/hosts можно использовать как рудиментарный метод определения имени домена для разрешения IP-адреса.
Этот файл, использует очень простым синтаксис, позволяет связать имя (и/или псевдоним) с IP-адресом. Это выполняется следующим образом:
Например,
Таким образом, вы можете связаться с веб-машиной либо по имени web.mydomain.com, либо по её IP-адресу.
Для больших сетей или тех, которые подвержены частым изменениям, использование файла /etc/hosts для разрешения имен доменов на IP-адреса не будет приемлемым решением. Именно здесь возникает необходимость в специальном сервисе.
Залезем за кулисы работы DNS. DNS-сервер запрашивает большую базу данных в виде дерева, которое начинается с корневой («.») зоны.
Следующий рисунок поможет нам понять о чём идет речь:
На изображении выше корневая зона (.) содержит 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), которое может быть установлено следующим образом:
После того, как мы установили bind и связанные с ним утилиты, сделаем копию файла конфигурации перед внесением каких либо изменений:
Затем давайте откроем named.conf и перейдем к блоку параметров, где нам нужно указать следующие настройки для рекурсивного кеширующего сервера с IP 192.168.0.18/24, к которому могут обращаться только хосты в той же сети (в качестве меры безопасности).
Параметры прямой зоны используются для указания того, какие серверы имен необходимо сначала запрашивать (в следующем примере мы используем серверы имен Google) для хостов вне нашего домена:
Вне блока опций мы определим нашу зону sales.me.com (в Ubuntu это обычно делается в отдельном файле с именем named.conf.local), который отображает домен с заданным IP-адресом и обратной зоной для сопоставления IP-адреса к соответствующей области.
Однако фактическая конфигурация каждой зоны будет проходить в отдельных файлах, как указано в директиве файла («master» означает, что мы будем использовать только один DNS-сервер).
Добавьте следующие строки в файл named.conf:
Обратите внимание, что inaddr.arpa (для адресов IPv4) и ip6.arpa (для IPv6) являются соглашениями для конфигураций обратной зоны.
После сохранения вышеуказанных изменений в 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-адреса.
В приведенном ниже примере:
5. Запись MX указывает имена уполномоченных агентов передачи почты (MTA) для этого домена. Имя хоста должно быть предварено номером, указывающим приоритет, который должен иметь текущий почтовый сервер при наличии двух или более MTA для домена (чем ниже значение, тем выше приоритет) в следующем примере, mail1 является основным, тогда как mail2 является вторичным MTA).
6. Запись CNAME устанавливает псевдоним (www.web1) для хоста (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, соответственно).
Вы можете проверить файлы зон на наличие ошибок:
На следующем скриншоте показано, каков ожидаемый результат вывода:
В противном случае вы получите сообщение об ошибке и советом по её устранению:
После того, как вы проверили основной файл конфигурации и файлы зон, перезапустите именованную службу, чтобы применить изменения.
В CentOS и openSUSE выполните:
И не забудьте также включить его:
В Ubuntu:
Наконец, вам нужно будет отредактировать конфигурацию основных сетевых интерфейсов:
Теперь перезапустите службу сети, чтобы применить изменения.
Тестирование DNS-сервера
На этом этапе мы готовы запросить наш DNS-сервер для локальных и внешних имен и адресов. Следующие команды вернут IP-адрес, связанный с хостом web1:
Как мы можем узнать, кто обрабатывает электронные письма для sales.me.com? Узнать это легко — просто запросите записи MX для домена:
Аналогично, давайте проведем обратный запрос. Это поможет нам узнать имя IP-адреса:
Вы можете попробовать те же операции для внешних хостов:
Чтобы убедиться, что запросы действительно проходят через наш DNS-сервер, давайте включим ведение журнала:
И проверьте файл /var/log/messages (в CentOS и openSUSE):
Чтобы отключить ведение журнала DNS, введите еще раз:
В Ubuntu для включения ведения журнала потребуется добавить следующий независимый блок (тот же уровень, что и блок опций) в /etc/bind/named.conf:
Обратите внимание, что файл журнала должен существовать и быть доступен для записи по имени.
Итоги
В этой статье мы объяснили, как настроить базовый рекурсивный, кеширующий DNS-сервер и как настроить зоны для домена.
Чтобы обеспечить правильную работу вашего DNS-сервера, не забудьте разрешить эту службу в вашем брандмауэре (порт TCP 53), как описано в части 8 серии LFCE («Настройка брандмауэра Iptables для включения удаленного доступа к услугам»).
Стать сертифицированным системным администратором Linux
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.