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

249

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

Grzenio
источник

Ответы:

207

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

$ cat /etc/resolv.conf 

источник
26
Тем не менее, имейте в виду, что (на современных Linuxen) содержимое /etc/nsswitch.confопределяет, какие службы имен используются (DNS, LDAP и т. Д.) И в каком порядке. Скажи fgrep hosts: /etc/nsswitch.conf. Если он ссылается только на DNS, /etc/resolv.confэто правильное место для поиска ваших серверов имен. Но есть вероятность, что вы также используете mDNS (он же ZeroConf, он же Avahi, он же Bonjour и т. Д.) И т. Д. В этом случае все зависит от того, что вы используете.
Алексиос
27
Этот файл обычно указывает на 127.0.1.1 в Ubuntu - это локальный сервер кэширования DNS, а не фактический восходящий поток.
Барри Келли
2
@BarryKelly Проверьте, что использует ваш роутер,
Geremia
2
А если у вас настроено несколько вышестоящих серверов? Как узнать, какой из них используется в настоящее время?
Сильвен Леру
4
Посмотрите ответы @ G32RW или @Lonniebiz для более надежного подхода при различных обстоятельствах, например, когда вы получите ответ типа127.0.0.53
nealmcb
194

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

nmcli dev show | grep DNS

Это сработало ранее, как описано выше:

nm-tool | grep DNS
Lonniebiz
источник
14
Это полезно, если вы используете VPN и NetworkManager . Вы укажете /etc/resolv.confна свой компьютер с dnsmasqразрешением имен в соответствии с настройками NetworkManager .
Гжегожур
6
В Debian для этого требуется network-managerпакет.
TranslucentCloud
2
nm-tool недоступен в новых версиях Linux. например, его нет в пакете 'сетевой менеджер' в Debian 8.
Don
2
Я обновил ответ, чтобы отразить, что работает для меня в 2016 году.
Lonniebiz
3
это лучший ответ, resol.conf не всегда показывает правду
клинок
72

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

dig yourserver.somedomain.xyz

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

;; Query time: 91 msec
;; SERVER: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx)
;; WHEN: Tue Apr 02 09:03:41 EDT 2019
;; MSG SIZE  rcvd: 207

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

Freiheit
источник
8
В Debian для этого требуется dnsutilsпакет.
Фахим Митха
6
Если вы используете какую-либо службу маскирования / кэширования DNS, которая работает на вашем локальном компьютере, она будет скрывать настоящие DNS-серверы.
каратэдог
4
Ubuntu 18.04 просто показывает локальный DNS-кеш:SERVER: 127.0.0.53#53(127.0.0.53)
wisbucky
58

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

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

$ nslookup google.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.22.174
Сэм
источник
1
Можете ли вы привести пример того, что вводить в подсказке?
Чови
Пример: $ nslookup www.google.com
Рен
7
В Debian для этого требуется dnsutilsпакет.
Гаян Виракутти
6
В недавней Ubuntu это снова указывает на локальный сервер кэширования 127.0.0.1, как уже
упоминалось
В CentOS 7 он завершается с ошибкой, но это vm, так что я сделал nslookup google.comна хосте Windows, и я нашел сервер имен. Добавьте это /etc/resolv.confкак: nameserver xx.xx.xx.xxи перезапустите сервис network, и все в порядке. Хвала вам.
WesternGun
55

В системах под управлением systemd используйте:

systemd-resolve --status
G32RW
источник
3
systemd-
resol
Система @ABB? версия systemd?
G32RW
229-4ubuntu21.2
Acumenus
11
Это новый способ сделать это по умолчанию в Ubuntu 18.04 Bionic Beaver - привыкните к этому, все!
AveryFreeman
5
Это единственное решение, которое сработало для меня, так как остальные вернули 127.0.0.53
greuze
13

С новой 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 --fields ip4.dns,ip6.dns con show 'Wired connection 1'
IP4.DNS[1]:                             172.21.0.13
IP4.DNS[2]:                             172.21.0.4
Самир
источник
Мои результаты: order «con» «show» is not valid.
Сопалахо де Арриерес
У меня это отлично работает с network-manager 1.0.4 на Ubuntu 15.10. Может быть, у вас есть старая версия?
Самер
Табличный формат довольно плох. Я надеюсь получить колонку, похожую на формат, похожий на Powershell.
CMCDragonkai
1
ВозвращаетError: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
FriendFX
просто nmcliбыло все, что мне нужно на Ubuntu 19.04
Джон Ми
9

получить первый DNS-сервер (только IP):

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

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

export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2)
boly38
источник
2
grep -m 1останавливает сопоставление после первого матча, поэтому вам не нужно использоватьhead
sshow
Для того, чтобы облегчить трубопровод еще больше, захват группы с Perl регулярное выражение очень аккуратно, и Grep принимает файл аргумент: grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf. Только что написал группы захвата с регулярным выражением grep perl
sshow
8

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

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

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

tombolinux
источник
5

С помощью resolvectl

$ resolvectl status | grep -1 'DNS Server'
    DNSSEC supported: no
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1
                      1.0.0.1

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

$ type -a systemd-resolve
systemd-resolve is /usr/bin/systemd-resolve

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

$ type -a resolvectl
resolvectl is /usr/bin/resolvectl

$ file /usr/bin/resolvectl
/usr/bin/resolvectl: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=09e488e849e3b988dd2ac93b024bbba18bb71814, stripped
olibre
источник
отлично работает на Ubuntu 18.10.
Георгий Стоянов
3

Команда

 nmcli dev list iface <interfacename> | grep IP4

Замените «имя интерфейса» на ваше.

базы подписки

 nmcli dev list iface eth0 | grep IP4

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

Maythux
источник
nmcli dev list iface [devicename]это правильная команда
Sebix
Я не заметил, что <interface> скрыт, так как я использую <>
Maythux
1
В Debian я получаю сообщение об ошибке --- $ nmcli dev list iface eth0 Ошибка: 'dev' команда 'list' недопустима.
Дон Яркий
nmcli - специфическая для RH команда.
Руи Ф Рибейро
Это правильный ответ!
Вадайхиеп,
3

У меня Fedora 25, а также медленный ответ в командной строке, аналогичный командам sudo.

nmcli dev show | grep DNS 

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

CRTLBREAK
источник
возможно в качестве альтернативы
Амос Фоларин
0

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

/usr/sbin/named -v
Милуд Элумри
источник
0

После того, как вы думаете , что вы нашли свой DNS, вы можете запросить его непосредственно рыть: dig @<dns ip> <host to lookup>. Если это работает, вы должны увидеть его SERVERсо статусом NOERROR.

ohlemacher
источник