Какие DNS-серверы я использую?

Вопрос или проблема

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

Вы должны получить какую-то разумную информацию по следующей команде:

$ cat /etc/resolv.conf 

Вот как я это делаю:

( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS

Это работало раньше указанным способом:

nm-tool | grep DNS

На Debian вам нужно установить пакет network-manager.

На системах, работающих под управлением systemd, используйте:

systemd-resolve --status

Или:

resolvectl

Я думаю, вы также можете запросить DNS, и он покажет вам, какой сервер вернул результат. Попробуйте это:

dig yourserver.somedomain.xyz

И в ответе должно быть указано, какой сервер(ы) вернули результат. Интересующий вас вывод будет выглядеть как-то так:

;; Время запроса: 91 мсек
;; СЕРВЕР: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx)
;; КОГДА: Вт Апр 02 09:03:41 EDT 2019
;; РАЗМЕР СООБЩЕНИЯ получен: 207

Вы также можете указать dig запросить конкретный DNS-сервер, используя dig @server_ip

Просто выполните nslookup. Часть его результатов включает сервер, который он использует.

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

$ nslookup google.com
Сервер:     8.8.8.8
Адрес:      8.8.8.8#53

Неавторитетный ответ:
Имя:   google.com
Адрес: 172.217.22.174

С помощью новой команды network-manager nmcli, сделайте это:

nmcli --fields ipv4.dns,ipv6.dns con show [connection_name]

В последних версиях network-manager (таких как в Ubuntu 16.04) имена полей немного отличаются:

nmcli --fields ip4.dns,ip6.dns con show [connection_name]

Если вы не знаете имя соединения, используйте:

nmcli -t --fields NAME con show --active

Например, в старых версиях nmcli:

$ nmcli --fields ip4.dns,ip6.dns con show 'Проводное соединение 1'
IP4.DNS[1]:                             172.21.0.13
IP4.DNS[2]:                             172.21.0.4

Чтобы получить первый DNS СЕРВЕР (только IP):

cat /etc/resolv.conf|grep -im 1 '^nameserver' |cut -d ' ' -f2
  • cat выведет конфигурацию DNS
  • grep фильтрует только nameserver
  • -i grep игнорирует регистр
  • -m 1 grep останавливается после первого совпадения
  • cut извлекает часть IP из строки (второй столбец с разделителем ‘ ‘)

Если вы предпочитаете sed:

 cat /etc/resolv.conf | sed -rn "s/^nameserver ([.0-9]*).*$/\1/p"
  • Команда Sed: после nameserver вернуть все, что является числом или точкой.

Чтобы поместить IP DNS в переменную окружения, вы можете использовать следующее:

export THEDNSSERVER=$(cat /etc/resolv.conf|grep -im 1 '^nameserver' |cut -d ' ' -f2)

Используя resolvectl

$ resolvectl status | grep -1 'DNS Server'
    Поддержка DNSSEC: нет
  Текущий DNS сервер: 1.1.1.1
         DNS серверы: 1.1.1.1
                      1.0.0.1

Опции grep: -C NUM, -NUM, --context=NUM Печатает NUM строк контекста вывода.

Для совместимости systemd-resolve является символической ссылкой на resolvectl на многих дистрибутивах, как в Ubuntu 18.10:

$ type -a systemd-resolve
systemd-resolve это /usr/bin/systemd-resolve

$ ll /usr/bin/systemd-resolve
lrwxrwxrwx 1 root root 10 ное.  15 21:42 /usr/bin/systemd-resolve -> resolvectl

$ type -a resolvectl
resolvectl это /usr/bin/resolvectl

$ file /usr/bin/resolvectl
/usr/bin/resolvectl: ELF 64-bit LSB shared object, x86-64, версия 1 (SYSV), динамически связанный, интерпретатор /lib64/ld-linux-x86-64.so.2, для GNU/Linux 3.2.0, BuildID[sha1]=09e488e849e3b988dd2ac93b024bbba18bb71814, очищенный

Если вы используете менеджер сети, то, вероятно, вы получаете все параметры сети от DHCP-сервера в вашем университете.

Если вы не хотите использовать свою оболочку для проверки настроек DNS (как описано Хессе и Алексисом), вы можете увидеть их в панели «Информация о сети».

Вы можете получить доступ к этой панели, щелкнув правой кнопкой мыши на значке менеджера сети и выбрав «Информация о соединении» в меню.

У меня Fedora 25, и я также испытывал подобную медленную реакцию командной строки на команды sudo.

nmcli dev show | grep DNS 

Показал, что только один из моих трех адаптеров (два активных) имел DNS-записи.
Добавив DNS-записи к одному активному адаптеру, у которого не было записи – вуаля!
Все хорошо, и время отклика мгновенное.

В Ubuntu >= 15

nmcli device show <interfacename> | grep IP4.DNS

Замените <interfacename> на ваше.

В Ubuntu <= 14

Команда

 nmcli dev list iface <interfacename> | grep IP4

Замените <interfacename> на ваше.

Примеры

 nmcli device show eth0 | grep IP4.DNS

Или

 nmcli dev list iface eth0 | grep IP4

Это выведет все DNS-серверы (если вы используете более одного).

В недавней Fedora 33 вы можете просто использовать

# resolvectl dns
Глобально:
Ссылка 2 (enp0s31f6):
Ссылка 3 (wlp4s0): 1.1.1.1 8.8.8.8
Ссылка 4 (virbr0):
Ссылка 5 (virbr0-nic):

Чтобы проверить, активен ли systemd-resolved, выполните cat /etc/resolv.conf. Это сообщит вам, кто управляет файлом.

Если вам нужны более подробные данные, вы можете использовать resolvectl status, resolvectl statistics, вы также можете сбросить кэши…

Для устранения неполадок вы можете использовать journalctl -u systemd-resolved -f -o cat | grep Looking после установки уровня на DEBUG: sudo resolvectl log-level debug

На системах, где systemd-resolved НЕ установлен:

$ host -v something.unknown | awk -F "[ #]" '/Received /{print$5}' | uniq
192.168.1.1

На системах, где работает NetworkManager:

$ ( nmcli -f IP4.DNS,IP6.DNS dev list || nmcli -f IP4.DNS,IP6.DNS dev show ) 2>/dev/null | awk '/DNS/{print$NF}'
192.168.1.1

В CentOS вы можете использовать:

/usr/sbin/named -v

Некоторые ребята используют tcpdump и довольны результатом:

tcpdump -i any port 53

Ответ или решение

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

Способы проверки DNS-серверов

  1. Чтение файла /etc/resolv.conf
    Этот файл содержит информацию о DNS-серверах, используемых вашей системой. Можно выполнить следующую команду:

    cat /etc/resolv.conf

    Вы увидите строки, начинающиеся с nameserver, за которыми следуют IP-адреса DNS-серверов.

  2. Использование nmcli
    Утилита nmcli предоставляет информацию о соединениях и их настройках. Для получения информации о DNS-серверах выполните:

    nmcli dev list | grep DNS

    или

    nmcli dev show | grep DNS

    Если вам нужно увидеть DNS-серверы для конкретного соединения, используйте:

    nmcli --fields ipv4.dns,ipv6.dns con show [имя_соединения]

    Чтобы получить имя соединения, выполните:

    nmcli -t --fields NAME con show --active
  3. Работа с systemd-resolve или resolvectl
    На системах, использующих systemd, можно использовать следующие команды для проверки статуса DNS:

    systemd-resolve --status

    или

    resolvectl status

    Эти команды предоставят информацию о текущих DNS-серверах и других параметрах.

  4. Запрос с помощью dig или nslookup
    Эти команды позволяют делать запросы к DNS и предоставляют информацию о том, какой сервер ответил на запрос. Например:

    dig вашдомен.xyz

    В выводе вы увидите строку, которая указывает, какой сервер обработал запрос:

    ;; SERVER: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx)

    Для nslookup:

    nslookup google.com

    Вывод будет содержать строки, показывающие, какой сервер использовался:

    Server:     8.8.8.8
    Address:    8.8.8.8#53
  5. GUI-интерфейс Network Manager
    Если вы предпочитаете графический интерфейс, нажмите правую кнопку мыши на значке Network Manager, выберите "Информация о соединении". Это позволит вам увидеть текущие параметры сети, включая DNS-серверы.

Заключение

Используя вышеописанные методы, вы можете легко определить, какие DNS-серверы используются вашим устройством под управлением Linux. Это часто является первой стратегией для диагностики проблем с разрешением доменов. Если данные значения не совпадают с ожидаемыми или возникают проблемы с доступом к определенным доменам, вы можете рассмотреть возможность изменения настроек DNS на своем устройстве.

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

Капча загружается...