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

Есть ли команда для перечисления dns-серверов, используемых моей системой?

Я пытался

$ cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENnameserver 127.0.0.1$ cat /etc/network/interfaces # interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopback

Но в нем нет списка серверов, если я перейду в "Network Manager GUI Tool", в разделе беспроводной связи будет указано "DNS 192.168.1.1 8.8.8.8 8.8.4.4".

Могу ли я получить ту же информацию из командной строки?

Я использую Ubuntu 12.04 LTS

resolv.conf на самом деле больше не используется, если вы не реализуете его самостоятельно. Сетевой менеджер делает это сейчас. Я создал псевдоним для перечисления DNS-серверов в моей системе, так как иногда переключаюсь с OpenDNS на открытый DNS Google.

>Ubuntu = 15

nmcli device show <interfacename> | grep IP4.DNS

Ubuntu <= 14

nmcli dev list iface <interfacename> | grep IP4

В моем случае, <interfacename> является eth0, что является обычным явлением, но не всегда так.

Посмотрим, действительно ли это то, чего ты хочешь.

РЕДАКТИРОВАТЬ:

Я думаю, что resolv.conf на самом деле используется косвенно, потому что сетевой менеджер создает сервер, который прослушивает 127.0.0.1, но мне сказали, что это деталь реализации, на которую не следует рассчитывать. Я думаю, что если вы введете DNS-адреса перед этой записью, они могут быть использованы, но я точно не уверен, как это работает. Я думаю, что в большинстве случаев, когда это возможно, лучше всего использовать сетевой менеджер.

В Ubuntu 18.04 и 20.04 вы можете использовать systemd-resolve --status

Это действительно для Ubuntu 13.10 и более ранних версий. Для Ubuntu 14.04 и выше см. Ответ Коалы Юнга на вопрос: Как узнать, какой DNS я использую в Ubuntu начиная с 14.04 и далее


Воспользуйся

nm-tool

Вы получите результат, аналогичный

NetworkManager ToolState: connected (global)- Device: eth0  [Wired connection 1] -------------------------------------------  Type:              Wired  Driver:            e1000e  State:             connected  Default:           yes  HW Address:        00:11:22:33:44:55  Capabilities:    Carrier Detect:  yes    Speed:           1000 Mb/s  Wired Properties    Carrier:         on  IPv4 Settings:    Address:         10.21.6.13    Prefix:          24 (255.255.255.0)    Gateway:         10.21.6.1    DNS:             10.22.5.133    DNS:             10.22.5.3

Или посмотреть, что делает только DNS

nm-tool | grep DNS

Два ответа, набравших наибольшее количество баллов, nmcli dev list iface <interfacename> | grep IP4 и nm-tool оба предполагают, что сетевой менеджер находится под контролем. Так оно и есть - по крайней мере, на настольных компьютерах большую часть времени. Но более полный ответ заключается в том, что иногда сетевой менеджер не контролирует ситуацию. например. vpnc возится с /etc/resolv.conf непосредственно.

Итак: Сначала проверьте, используется ли 127.0.0.1/localhost. Это можно было бы сделать с помощью dig:

> dig something.unknown  | grep SERVER:;; SERVER: 127.0.0.1#53(127.0.0.1)

Теперь вы знаете, что мы являются используя localhost. Продолжайте с одним из популярных ответов. Мне нравится:

> nm-tool | grep DNS:    DNS:             8.8.8.8

Но если 127.0.0.1/localhost является нет использованный, тогда nm-tool's и nmcliвывод будет вводить в заблуждение:

> dig something.unknown  | grep SERVER:;; SERVER: 172.22.216.251#53(172.22.216.251)> nm-tool | grep DNS:    DNS:             8.8.8.8

Здесь, dig является правильным и nm-toolэта информация вводит в заблуждение. На самом деле адреса, локальные для среды, в которую я подключился через VPN, разрешены правильно. Все это DNS-серверы Google 8.8.8.8 не знаю об этом.

Это связано с тем, что после подключения к VPN с vpnc, он помещает строку в /etc/resolv.conf так что это выглядит как:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENnameserver 1.2.3.4nameserver 127.0.0.1search MyDomain

cat /etc/resolv.conf должны отображаться ваши DNS-серверы.

Вы не имеете права изменять resolv.conf непосредственно с Ubuntu 12.04. Однако, если вам нужно их изменить, вы можете добавить новые DNS-серверы в свой /etc/network/interfaces файл, добавив следующее:

 dns-nameservers x.x.x.x x.x.x.x

где x это DNS-серверы, которые вы хотите использовать.

На вашем месте я бы удалил network-manager. На мой взгляд, это куча дерьма.

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

nmcli версия 0.9.10

Вы можете использовать любую из этих команд:

nmcli -t -f IP4.DNS device show eth0IP4.DNS[1]:192.168.1.1IP4.DNS[2]:8.8.8.8nmcli -t -f IP4.DNS connection show conn-nameIP4.DNS[1]:192.168.1.1IP4.DNS[2]:8.8.8.8

В Ubuntu 15.10 вы можете получить DNS

nmcli device show <interface name> 

Удивительно, как много существует способов сделать это. На сервере Ubuntu 18.04, если вы не хотите устанавливать что-либо дополнительное, например nm-tool, тогда systemd-resolve --status будет работать из коробки для получения информации о DNS.

Если вы заинтересованы в получении не только ваших DNS-серверов, но и шлюза по умолчанию, IP-адреса, сетевой маски и т.д., То netplan ip leases eth0 предоставит вам всю эту информацию в удобной для чтения форме (при условии, что вы заинтересованы в eth0 интерфейс).

В Ubuntu 20.04

systemd-resolve --status | grep -B 9 -A 6 "Current DNS Server"

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

Чтобы перенастроить DNS

man systemd-resolved

показывает, что DNS-серверы, к которым обращаются, определяются глобальными настройками в /etc/systemd/resolved.conf.

Sudo отредактируйте этот файл, раскомментируйте и установите DNS= и FallbackDNS= на нужные вам DNS-серверы IPv4.Например, DNS=8.8.8.8 и FallbackDNS=8.8.4.4 бы использовать Общедоступный DNS Google.Перезагрузите компьютер, чтобы применить изменения.

@PLA, спасибо тебе за это ответ что привело меня по этому пути.

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

$ host -v something.unknown | awk -F "[ #]" '/Received /{print$5}' | uniq192.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

Что ты пытаешься найти? DNS-серверы, используемые вашей системой? или вы пытаетесь выполнить поиск по DNS?

Бывший @LordofTime

@LordofTime DNS-серверы, используемые моей системой

Видишь networking - What DNS servers am I using? - Unix & Linux Stack Exchange для версии этого вопроса, отличной от Ubuntu

вы используете 127.0.0.1. используете ли вы * DNS-сервер?