Администрирование сетей в Linux часто требует работы с системой доменных имён. Без понимания основ DNS и без знания соответствующих команд сложно диагностировать проблемы с доступом к сайтам, работой электронной почты или настройкой серверов. В этой статье мы собрали все необходимые инструменты для проверки и настройки DNS в операционной системе Linux. Вы узнаете, какие команды существуют, для чего каждая из них предназначена, как очищать кэш, настраивать DNS-резолверы и избегать типичных ошибок.
Что такое DNS и зачем работать в терминале
DNS расшифровывается как Domain Name System и представляет собой распределённую базу данных, которая преобразует доменные имена в IP-адреса и обратно. Без DNS интернет был бы недоступен для обычных пользователей, поскольку запоминать цифровые адреса невозможно. В Linux работа с DNS чаще всего выполняется через командную строку. Это связано с гибкостью терминала, возможностью автоматизации и быстрым доступом к диагностическим средствам. Графические интерфейсы не предоставляют такого уровня детализации и контроля, поэтому системным администраторам необходимо знать основные DNS-команды.
Инструменты для DNS-диагностики в Linux
В стандартном наборе дистрибутивов Linux присутствует несколько утилит для работы с DNS. Каждая из них имеет свои особенности и применяется в разных ситуациях.
dig — проверка DNS-записей
Команда dig считается наиболее мощным и информативным инструментом для опроса DNS-серверов. Она позволяет запрашивать любые типы записей, включая A, AAAA, MX, CNAME, TXT, NS и многие другие. Dig выдаёт полную информацию о процессе разрешения имени, включая время ответа, путь запроса и содержимое записей. Эта команда незаменима при детальном анализе проблем с делегированием или при проверке корректности настроек.
nslookup — аналог dig
Nslookup представляет собой более старую утилиту, которая также используется для запросов к DNS. Она проще в использовании и предоставляет базовую информацию об IP-адресах и записях. В некоторых дистрибутивах nslookup считается устаревшим, но он всё ещё присутствует во многих системах и часто используется для быстрых проверок без необходимости запоминать сложные синтаксисы.
host — быстрый просмотр IP
Утилита host предназначена для получения IP-адреса по доменному имени или обратного преобразования. Она выдаёт краткий ответ без лишней информации. Это удобно, когда нужно быстро узнать, на какой IP указывает сайт, не анализируя структуру DNS-ответа.
resolvectl — управление DNS
Команда resolvectl появилась в системах с systemd-resolved. Она позволяет управлять настройками DNS-резолвера, просматривать текущую конфигурацию, очищать кэш и изменять DNS-серверы для отдельных сетевых интерфейсов. resolvectl становится основным инструментом для управления разрешением имён в современных дистрибутивах.
/etc/resolv.conf — файл настроек
Файл resolv.conf содержит список DNS-серверов, которые использует система для разрешения имён, а также параметры поиска доменов. В классических системах администратор может редактировать этот файл напрямую. Однако в современных дистрибутивах изменения в resolv.conf часто перезаписываются сетевыми менеджерами, поэтому важно понимать механизмы его формирования.
Очистка кэша DNS в Linux
Кэширование DNS-запросов ускоряет повторные обращения, но иногда оно становится причиной проблем, когда изменения на DNS-сервере ещё не применились, а локальный кэш хранит старые записи. В Linux очистка кэша зависит от используемого сервиса.
systemd-resolved
Если система использует systemd-resolved (что характерно для многих современных дистрибутивов), очистка кэша выполняется командой resolvectl flush-caches. Эта команда удаляет все кэшированные записи и заставляет систему выполнять свежие запросы к DNS-серверам.
nscd
Nscd — это демон кэширования имён и служб, который может кэшировать DNS-ответы. Для очистки его кэша необходимо перезапустить сервис командой sudo systemctl restart nscd или использовать специальные опции, если они доступны. В некоторых системах также помогает команда nscd -i hosts.
dnsmasq
Dnsmasq часто используется как лёгкий DNS-форвардер и DHCP-сервер. Очистка кэша в dnsmasq выполняется отправкой сигнала SIGHUP процессу, либо перезапуском службы sudo systemctl restart dnsmasq. После этого кэш сбрасывается, и запросы начинают обрабатываться заново.
DNS-команды в Windows — сравнение
В операционной системе Windows также есть инструменты для работы с DNS, но их синтаксис и возможности отличаются. Основной командой является nslookup, которая работает аналогично своему аналогу в Linux, но имеет меньше опций. Также существует ipconfig /displaydns для просмотра кэша и ipconfig /flushdns для его очистки. В Windows нет прямого аналога dig, хотя его можно установить отдельно. В целом Linux предоставляет более широкий набор диагностических средств, что делает его предпочтительным для серьёзной сетевой работы.
Шпаргалка — таблица команд
Для быстрого обращения к часто используемым командам полезно иметь под рукой краткую таблицу.
| Команда | Назначение |
|---|---|
| dig example.com | Получить A-запись для домена |
| dig example.com MX | Получить MX-записи (почтовые серверы) |
| dig example.com NS | Получить NS-записи (серверы имён) |
| nslookup example.com | Простой запрос IP-адреса |
| host example.com | Быстрое получение IP |
| resolvectl status | Показать текущие DNS-настройки |
| resolvectl flush-caches | Очистить кэш (systemd-resolved) |
| cat /etc/resolv.conf | Посмотреть используемые DNS-серверы |
| dig @8.8.8.8 example.com | Запрос к конкретному DNS-серверу |
Настройка DNS-сервера
Для изменения DNS-серверов, используемых системой, существует несколько способов. Выбор метода зависит от того, какая система управления сетью используется.
Через nmcli
Nmcli — это интерфейс командной строки для NetworkManager. Чтобы изменить DNS-сервер для конкретного подключения, выполните nmcli con mod "Имя подключения" ipv4.dns "8.8.8.8 1.1.1.1" и затем nmcli con up "Имя подключения". Этот способ удобен, если вы используете NetworkManager, так как изменения сохраняются и не перезаписываются при перезагрузке.
Через systemd-resolved
Для systemd-resolved настройка выполняется с помощью resolvectl. Команда resolvectl set-dns интерфейс 8.8.8.8 устанавливает DNS для указанного интерфейса. Можно также задать глобальные настройки. После изменений обязательно проверьте статус resolvectl status.
Постоянные изменения resolv.conf
В некоторых случаях, особенно при использовании статической конфигурации без NetworkManager, администратор может напрямую редактировать файл /etc/resolv.conf. Однако следует помнить, что многие системы перезаписывают этот файл при перезагрузке. Для постоянного изменения необходимо либо отключить службы, которые управляют resolv.conf, либо использовать файл /etc/resolvconf.conf или другие механизмы, специфичные для дистрибутива.
Сценарии использования команд
Различные ситуации требуют применения определённых диагностических приёмов. Рассмотрим наиболее частые сценарии.
Сайт не открывается
Если сайт не открывается, первым делом проверьте, разрешается ли его доменное имя в IP-адрес. Используйте dig site.ru или nslookup site.ru. Если ответа нет или он неверный, проблема может быть в DNS-сервере или в самом домене. Попробуйте выполнить запрос к другому DNS-серверу, например, dig @8.8.8.8 site.ru. Если запрос к внешнему серверу работает, значит, проблема в локальном резолвере.
Почта не доставляется
Для почтовых проблем важно проверить MX-записи домена. Команда dig domain.ru MX покажет, какие почтовые серверы обслуживают домен. Если записи отсутствуют или указан неверный сервер, письма не будут доставляться. Также полезно проверить SPF и DKIM записи, хотя они не влияют на доставку напрямую, но помогают избежать спам-фильтров.
Настройка VPS
При настройке виртуального сервера часто требуется указать DNS-серверы для разрешения имён. На этапе установки операционной системы можно задать DNS через установщик, но после установки удобно использовать nmcli или resolvectl. Если сервер будет выступать в роли DNS-сервера для других машин, необходимо установить и настроить BIND или dnsmasq, а также открыть соответствующие порты в брандмауэре.
В случае сложностей с настройкой DNS на VPS или в корпоративной среде многие компании обращаются за профессиональной помощью. Компания iTeron предоставляет услуги по настройке и администрированию серверов, включая корректную конфигурацию DNS. Специалисты iTeron помогут выбрать оптимальные DNS-серверы, настроить резолвинг и обеспечить стабильную работу ваших сервисов.
Медленный резолвинг
Если разрешение имён занимает много времени, это может быть связано с медленным ответом DNS-сервера, неправильными таймаутами или большим количеством попыток. Воспользуйтесь dig с опцией +stats, чтобы увидеть время ответа. Также проверьте, не используется ли нестабильный DNS-сервер. Иногда помогает смена провайдера DNS на более быстрый, например, на 1.1.1.1 или 8.8.8.8.
Проверка делегирования
При создании нового домена или переносе зоны необходимо убедиться, что делегирование выполнено корректно. Для этого запросите NS-записи у корневых серверов: dig @a.root-servers.net domain.ru NS. Сравните результат с тем, что указано у вашего регистратора. Любые расхождения указывают на ошибку делегирования.
Частые ошибки
Даже опытные администраторы иногда допускают типичные ошибки при работе с DNS. Вот наиболее распространённые из них.
Обновление DNS — не мгновенно
После изменения записи на DNS-сервере изменения распространяются не сразу. Это связано с TTL (Time To Live) — временем жизни записи в кэше. Изменения могут вступать в силу от нескольких минут до суток. Не стоит паниковать, если после обновления сайт или почта продолжают работать по-старому. Подождите истечения TTL или временно уменьшите TTL перед плановыми изменениями.
Не редактируйте resolv.conf напрямую
Если ваша система использует NetworkManager или systemd-resolved, изменения в resolv.conf будут перезаписаны. Вместо этого используйте соответствующие утилиты управления. Редактирование resolv.conf напрямую допустимо только в статичных конфигурациях без сетевых менеджеров.
Очищайте кэш
Многие проблемы решаются простой очисткой кэша DNS. Если вы изменили записи, но видите старые данные, выполните resolvectl flush-caches или перезапустите соответствующий сервис. Игнорирование этого шага может привести к ложным выводам и потере времени.
Не путайте A и CNAME
A-запись связывает домен с IP-адресом, а CNAME создаёт псевдоним для другого домена. Использование CNAME для основного домена или для зоны без других записей может привести к ошибкам. Всегда проверяйте тип записи, которую вы изменяете.
Используйте dig, а не только nslookup
Nslookup даёт базовую информацию, но dig показывает гораздо больше деталей. Особенно это важно при диагностике сложных проблем, где нужны полные ответы, время ответа и маршрут запроса. Привыкнув к dig, вы будете быстрее находить корень проблемы.
В итоге знание DNS-команд Linux является обязательным навыком для любого системного администратора. Они помогают быстро диагностировать сетевые проблемы, настраивать серверы и обеспечивать бесперебойную работу сервисов. Даже если вы не являетесь профессионалом, освоив эти команды, вы сможете самостоятельно решать многие задачи. Однако если вы сталкиваетесь с масштабными проектами или критически важными системами, где цена ошибки высока, профессиональная поддержка становится необходимой. Компания iTeron предлагает полный спектр услуг по администрированию Linux-серверов, включая глубокую диагностику DNS, оптимизацию настроек и мониторинг инфраструктуры. Обратившись в iTeron, вы получаете надёжную техническую экспертизу и можете быть уверены в стабильности своей сети.
Оставьте заявку — рассчитаем обслуживание для вашего бизнеса, проекта, стартапа.







