Які сервери DNS я використовую?


248

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

Відповіді:


206

Ви повинні мати можливість отримати розумну інформацію в:

$ cat /etc/resolv.conf 

26
Однак майте на увазі, що (на сучасному Linuxen) вміст /etc/nsswitch.confдиктує, які служби імен використовуються (DNS, LDAP тощо) та в якому порядку. Скажи fgrep hosts: /etc/nsswitch.conf. Якщо він посилається лише на DNS, /etc/resolv.confце правильне місце для пошуку ваших серверів імен. Але ймовірно, що ви також використовуєте mDNS (він же ZeroConf, він же Avahi, aka Bonjour тощо) тощо. У цьому випадку все залежить від того, що ви використовуєте.
Олексій

27
Цей файл зазвичай вказує на 127.0.1.1 на Ubuntu - це локальний кеш-сервер DNS, а не власне висхідний потік.
Баррі Келлі

2
@BarryKelly Перевірте, що використовує ваш маршрутизатор, а потім
Geremia

2
І якщо у вас налаштовано кілька серверів вище за течією? Як дізнатися, який із них використовується зараз?
Sylvain Leroux

4
Дивіться відповіді від @ G32RW або @Lonniebiz для більш стійкого підходу за різних обставин, наприклад, коли ви отримаєте відповідь на зразок127.0.0.53
nealmcb

193

Ось як я це роблю:

nmcli dev show | grep DNS

Це працювало раніше, ніж вище:

nm-tool | grep DNS

14
Цей варіант корисний, якщо ви використовуєте VPN та NetworkManager . Ваш /etc/resolv.confбуде вказувати на вашу машину, з dnsmasqдозволу імен в конфігурації NetworkManager .
Grzegorz Żur

6
Для Debian для цього потрібен network-managerпакет.
TranslucentCloud

2
nm-інструмент недоступний у новіших Linux. наприклад, це не в пакеті "Менеджер мереж" для debian 8.
нехай яскравий

2
Я оновив відповідь, щоб відобразити, що працює на мене у 2016 році.
Lonniebiz

3
це найкраща відповідь, решимость.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


8
Для Debian для цього потрібен dnsutilsпакет.
Faheem Mitha

6
Якщо ви використовуєте будь-яку службу маскування / кешування DNS, яка працює на вашій локальній машині, вона приховає справжні сервери DNS.
karatedog

3
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пакет.
Gayan Weerakutti

5
На останньому Ubuntu це знову вказує на локальний кеш-сервер 127.0.0.1, як уже натякали в цьому коментарі
FriendFX

У CentOS 7 він закривається з помилкою, але це vm, тому я зробив nslookup google.comу хості Windows і знайшов сервер імен. Додайте його /etc/resolv.confяк: nameserver xx.xx.xx.xxі перезапустіть сервіс network, і все добре. Хвалимо вас.
WesternGun

54

У системах, на яких працює системне використання:

systemd-resolve --status

3
systemd-
resolution

@ABB система? версія системи?
G32RW

229-4ubuntu21.2
Acumenus

10
Це новий спосіб за замовчуванням зробити це в Ubuntu 18.04 Bionic Beaver - звикайте, всі!
AveryFreeman

4
Це єдине рішення, яке працювало для мене, оскільки інші повернулися 127.0.0.53
грезе

13

З новою network-managerкомандою nmcliзробіть це:

nmcli --fields ipv4.dns,ipv6.dns con show <connection_name>

У нових версіях мережевого менеджера (наприклад, в 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.
Sopalajo de Arrierez

Для мене це добре працює з мережевим менеджером 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 фільтрує лише сервер імен
  • head збереже лише перший рядок / екземпляр
  • cut прийняти ip частину рядка (другий стовпчик з "" як роздільник)

Щоб помістити DNS ip в змінну середовища, ви можете використовувати наступне:

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

2
grep -m 1припиняє відповідати після першого матчу, тому вам не доведеться користуватисяhead
покажіть

Для того, щоб полегшити трубопровід ще більше, захоплення групи з Perl регулярний вираз дуже акуратно, і Grep приймає файл аргумент: grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf. Щойно записав групи зйомки з регулярним виразом grep perl
sshow

8

Якщо ви використовуєте мережевий менеджер, ймовірно, ви отримуєте всі параметри мережі з вашого dhcp-сервера у вашому університеті.

Якщо ви не хочете використовувати свою оболонку для перевірки налаштувань dns (як описано у колесі і Alexios), ви можете побачити їх на панелі "Інформація про мережу".

Ви можете дійти до цієї панелі, натиснувши праву кнопку миші на піктограмі мережевого менеджера та вибравши в меню "Інформація про з'єднання".


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

прекрасно працює на Ubuntu 18.10.
Георг Стоянов

3

Команда

 nmcli dev list iface <interfacename> | grep IP4

Замініть "ім'я інтерфейсу" на ваше.

іспит

 nmcli dev list iface eth0 | grep IP4

Тут буде вказано список усіх DNS-серверів (якщо ви використовуєте більше одного).


nmcli dev list iface [devicename]правильна команда
sebix

Я не помітив, що <інтерфейс> приховано з моменту використання <>
Maythux,

1
У debian я отримую помилку --- $ nmcli dev list iface eth0 Помилка: команда 'dev' 'список' недійсна.
нехай яскравий

nmcli - конкретна команда RH.
Rui F Ribeiro

Це правильна відповідь!
VAdaihiep

3

У мене є Fedora 25, а також було подібне повільне реагування в командному рядку на команди sudo.

nmcli dev show | grep DNS 

показав, що лише один з 3 моїх адаптерів (два активних) мав записи DNS. Додавши записи DNS до однієї активної картки, на якій не було записано - presto! Все добре, і час реакції негайний.


можливо альтернативно
Амос Фоларін


0

Після того, як ви думаєте , що ви знайшли свій DNS, ви можете запитати його безпосередньо рити: dig @<dns ip> <host to lookup>. Якщо він працює, ви повинні побачити його SERVERзі статусом NOERROR.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.