DNS · 5 min read · Oct 03, 2025

Традиционное руководство по DNS

Традиционное руководство по DNS

Версия 1.0
Авторы: Том Адельштейн
Фалько Тимме
Последнее редактирование: 03/11/2006

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

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

Интернет использует протокол TCP/IP для отправки и получения всего в Интернете. Когда вы вводите Google.com в своем браузере для поиска, вы используете DNS. В противном случае вам пришлось бы использовать это числовое значение: 64.233.187.99. Нажмите на каждое из них и посмотрите, что вы получите.

Вы видите, что Google.com является именем в базе данных, к которой обращается ваш браузер, чтобы найти IP-адрес веб-сайта Google. Но это прозрачно для пользователя. Как бы вам хотелось вести записную книжку IP-адресов, чтобы вручную искать и находить веб-сайты, которые вы хотите посетить? Что ж, Система доменных имен делает это за вас автоматически.

Если вы сидите и читаете это и думаете: “О да, я уже об этом знаю”, то подождите минуту или две. Работа с DNS требует значительных знаний и дисциплины. Системные администраторы, которых я знаю, могут выполнять множество задач, но немногие могут справиться с DNS. Почти без исключений они теряются, потому что не понимают основ.

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

Интернет-опросы записей DNS показали случаи ошибок до 72%. Мы знаем, что большинство этих ошибок возникает из-за неудачных делегирований. Неудачные делегирования включают домены, зарегистрированные с DNS-серверами, назначенными им, когда никто на самом деле не хостит домен. Другие причины включают отсутствие файлов зон, ошибки в ресурсных записях, истекшие регистрации доменов.

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

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

Итак, если вы хотите идти вперед и узнать все о BIND, пожалуйста, сделайте это. Это не поможет вам сделать много с DNS с одним исключением. Некоторые люди все еще используют версию BIND 4. Вы хотите обновиться с BIND 4 до BIND 8 или 9. Мне просто не повезло, что вы выйдете создать файлы конфигурации DNS, и они не будут иметь смысла. Это потому, что многие люди все еще используют BIND 4.

Расскажите мне о файлах конфигурации

BIND поставляется с тремя компонентами. Первую компоненту мы называем named или name-dee. Это демон, который запускает серверную часть DNS. Это станет понятным через некоторое время.

Вторая компонента BIND называется библиотекой резолвера. Люди думают о резолвере как о клиентской стороне BIND. Код резолвера делает запросы к DNS-серверам в попытке перевести удобное имя в IP-адрес. Эта компонента использует файл resolv.conf. Звучит как сокращение UNIX? Должно, потому что это так.

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

Какова моя ответственность в системе DNS?

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

База данных системы доменных имен имеет три уровня. Первую группу серверов мы называем “корневыми” серверами. Вторую мы называем доменами верхнего уровня или (TLD). Когда ваш резолвер должен найти адрес веб-сайта, он делает запрос.

Допустим, вы хотите найти Google.com. Ваш резолвер спрашивает корневые серверы, чтобы определить IP Google.com. Корневой сервер отвечает: “Я не знаю, но я знаю, где вы можете найти ответ. Начните с серверов TLD для COM.”

Итак, корень отправляет ваш запрос на сервер COM. Он говорит: “Хорошо. У меня нет этой информации, но я знаю сервер имен, который ее имеет. У него адрес 64.233.167.99 и имя ns1.google.com. Итак, идите по этому адресу, и он скажет вам адрес веб-сайта google.com.

Ваш резолвер берет информацию от ns1.google.com и возвращается с IP-адресом. Если сервер имен Google дал вашему резолверу правильное имя, вы получите веб-страницу.

Путь, по которому вы прошли, выглядит как на Рисунке 1.

Рисунок 1 - От корня к вашему домену.

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

Корневые серверы находятся на вершине распределенной базы данных DNS. У них есть информация о доменах верхнего уровня (TLD). TLD включают com, net, org, mil, gov, edu и т. д. Когда вы заключаете контракт на использование доменного имени, вы выбираете, какой TLD вы хотите. В моем случае у меня есть домен в пространстве имен org под названием centralsoft.org.

Когда я зарегистрировал свои серверы имен, я указал имя server1.centralsoft.org и ns0.centralsoft.org своему агенту по регистрации. На серверах TLD для org вы найдете мои серверы имен. Серверы org знают, где вы должны найти информацию о centralsoft.

Когда я зарегистрировался, я сказал агенту, что возьму на себя ответственность за поддержание базы данных IP-адресов и удобных имен и сопоставлю их друг с другом. Итак, мы заключили соглашение, и Система доменных имен сказала: “Хорошо, теперь у вас есть полномочия на данные о centralsoft.org. Когда кто-то хочет найти услуги, которые вы предлагаете в Интернете, мы укажем им на вас.”

Итак, теперь мне нужно запустить приложение, которое может ответить на ваши запросы и сказать: “Конечно, если вы хотите увидеть мою веб-страницу или отправить почту одному из моих пользователей, вы можете найти их здесь. Если вы спросите меня о имени, я дам вам IP-адрес, потому что я знаю, что у вас есть этот протокол, который использует TCP/IP, и я понимаю, что вам нужен адрес, даже когда вы указываете имя.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.