Как узнать DNS сервер в Linux

Как узнать dns сервер linux

Как узнать dns сервер linux

В разных дистрибутивах используется собственный механизм хранения адресов DNS. Одни системы читают параметры из /etc/resolv.conf, другие используют systemd-resolved, NetworkManager или настройки конкретного интерфейса. Из-за этого данные нередко расходятся, и пользователю приходится уточнять, какой источник считается актуальным.

Проверка конфигурации позволяет понять, какой сервер отвечает за преобразование доменных имен, а также выявить сбои, перекрытия настроек или влияние VPN-клиентов. Для получения точных сведений применяются системные утилиты – systemd-resolve, nmcli, сетевые инструменты диагностики и просмотр конфигурационных файлов.

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

Проверка адресов DNS через файл resolv.conf

Проверка адресов DNS через файл resolv.conf

Файл /etc/resolv.conf содержит строку nameserver с IP-адресом сервера, к которому обращается система. Просмотр выполняется командой cat /etc/resolv.conf. Если в файле указано несколько строк nameserver, используется порядок сверху вниз.

В системах с systemd-resolved файл может быть символической ссылкой на динамически создаваемый вариант. Проверка выполняется через команду ls -l /etc/resolv.conf. Если отображается ссылка на /run/systemd/resolve/, содержимое обновляется автоматически и может отличаться от настроек интерфейса.

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

Получение текущих DNS параметров с помощью systemd-resolve

Для проверки конкретного адреса используется systemd-resolve example.com. Команда показывает, какой сервер обработал запрос и сколько времени занял отклик. Это помогает выявить источник задержек и определить, на какой DNS фактически идёт обращение.

Просмотр используемых DNS серверов через nmcli

Определение DNS настроек для активного интерфейса через ip addr и соответствующие файлы

Команда ip addr показывает список интерфейсов и их состояние. После определения активного устройства по полю state UP можно перейти к проверке его конфигурации в каталоге /etc/sysconfig/network-scripts/ (для систем на базе Red Hat) или в /etc/network/interfaces и /etc/netplan/ (в дистрибутивах на базе Debian и Ubuntu).

В файлах конфигурации могут присутствовать строки dns-nameservers, DNS1, DNS2 или параметры Netplan, задающие серверы в разделе nameservers. Эти значения применяются при загрузке или перезапуске службы сети и отображают адреса, которые будут использованы по умолчанию.

При активном OpenVPN-подключении серверы могут заменяться параметрами, переданными через push «dhcp-option DNS». Проверка выполняется просмотром логов клиента командой journalctl -u openvpn или анализом файлов в каталоге /var/log/openvpn/, где отмечены строки с полученными DNS адресами.

В случаях, когда OpenVPN работает через скрипты обновления маршрутов, DNS параметры могут записываться в /run/systemd/resolve/ или временный файл resolv.conf. Проверка состояния после подключения выполняется командами resolvectl status и cat /etc/resolv.conf, что позволяет определить, какие адреса подставлены туннелем.

Проверка DNS серверов в Docker-контейнере

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

  • Запустить контейнер с интерактивной сессией: docker run -it —rm ubuntu bash.
  • Внутри контейнера просмотреть файл /etc/resolv.conf: cat /etc/resolv.conf. Здесь указаны адреса DNS, назначенные Docker.
  • Использовать утилиту nslookup или dig для тестирования разрешения доменных имен и проверки ответов конкретных серверов.
  • Для явного задания DNS при запуске контейнера добавить параметр —dns IP_адрес, чтобы заменить стандартные серверы.

Если контейнер подключен к пользовательской сети Docker, DNS серверы могут наследоваться от docker network inspect имя_сети. Сравнение этих данных с содержимым /etc/resolv.conf внутри контейнера позволяет точно определить, какой сервер отвечает за обработку запросов.

Определение задействованных DNS серверов при помощи dig и nslookup

Утилиты dig и nslookup позволяют проверить, какие серверы обрабатывают DNS-запросы и время отклика. Для анализа используют конкретные домены или IP-адреса серверов.

Пример использования dig:

dig example.com
dig @8.8.8.8 example.com

Пример использования nslookup:

nslookup example.com

Результат показывает сервер, который обработал запрос, и соответствующие A или AAAA записи.

Для наглядного сравнения можно оформить данные в таблицу:

Инструмент Синтаксис
dig dig example.com DNS сервер, IP, время ответа
dig с указанием сервера dig @8.8.8.8 example.com Ответ от конкретного сервера, IP домена
nslookup nslookup example.com DNS сервер, IP адреса, A/AAAA записи
nslookup с сервером nslookup example.com 1.1.1.1 Ответ от указанного сервера

Вопрос-ответ:

Как посмотреть текущие DNS сервера в Linux?

Для проверки используемых DNS серверов можно открыть файл /etc/resolv.conf командой cat /etc/resolv.conf. В нём указаны строки nameserver с IP-адресами серверов. В системах с systemd-resolved актуальные адреса лучше смотреть через команду systemd-resolve —status, где отображаются активные серверы по каждому интерфейсу.

Можно ли узнать, какой DNS сервер используется только для конкретного интерфейса?

Да, для этого сначала определяют активный интерфейс командой ip addr или nmcli dev show. Затем проверяют его параметры в конфигурационных файлах, например, /etc/network/interfaces или /etc/netplan/ для Debian/Ubuntu, либо /etc/sysconfig/network-scripts/ifcfg-* для Red Hat. Там отображаются адреса DNS, назначенные для конкретного подключения.

Как проверить DNS сервера, если используется OpenVPN?

При работе через OpenVPN сервер может передавать собственные DNS параметры через push «dhcp-option DNS». Их можно увидеть в логах клиента (journalctl -u openvpn) или через NetworkManager с помощью nmcli connection show для VPN-профиля. Также проверку выполняют через resolvectl status или просмотр /etc/resolv.conf после подключения.

Какие команды использовать для теста работы DNS серверов?

Для проверки разрешения доменов применяют dig и nslookup. Например, dig example.com покажет, какой сервер обработал запрос и какой IP-адрес был возвращён. Можно указать конкретный сервер: dig @8.8.8.8 example.com или nslookup example.com 1.1.1.1. Эти команды помогают увидеть задержку ответа и корректность работы выбранного сервера.

Как узнать, какие DNS сервера использует контейнер Docker?

В контейнере открывают файл /etc/resolv.conf командой cat /etc/resolv.conf, где указаны адреса, назначенные Docker. Для проверки разрешения доменов внутри контейнера используют dig или nslookup. Если нужно задать собственный DNS сервер, контейнер запускают с параметром —dns IP_адрес при запуске через docker run.

Как узнать, какой DNS сервер используется на Linux-сервере без systemd?

Если systemd-resolved не используется, основной источник информации — файл /etc/resolv.conf. Командой cat /etc/resolv.conf можно увидеть строки nameserver с IP-адресами. Эти адреса применяются системой при преобразовании доменных имён в IP. При наличии нескольких серверов система обращается к ним по порядку сверху вниз.

Можно ли проверить DNS серверы для конкретного сетевого интерфейса в Linux?

Да, сначала определяют активный интерфейс командой ip addr. После этого смотрят конфигурацию в файлах: для Debian/Ubuntu — /etc/network/interfaces или /etc/netplan/.yaml, для Red Hat — /etc/sysconfig/network-scripts/ifcfg-. В этих файлах указаны строки с DNS адресами, которые используются только для выбранного интерфейса. Также актуальные данные можно проверить через nmcli dev show.

Ссылка на основную публикацию