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

254

Есть ли команда для отображения 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 OVERWRITTEN
nameserver 127.0.0.1
$ cat /etc/network/interfaces 
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

Но это не перечисляет никаких серверов, если я иду к «Инструменту GUI Network Manager», в разделе Wireless это перечисляет «DNS 192.168.1.1 8.8.8.8 8.8.4.4»

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

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

Анураг Униял
источник
Что ты пытаешься найти? DNS-серверы, используемые вашей системой? или вы пытаетесь сделать поиск DNS?
Томас Уорд
Бывший @LordofTime
иш
@LordofTime DNS-серверы, используемые моей системой
Anurag Uniyal
вы используете 127.0.0.1. у вас работает DNS сервер?
Skaperen
См. Unix.stackexchange.com/q/28941/38647 для версии этого вопроса, не
относящейся к

Ответы:

250

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-адреса до этой записи, они могут привыкнуть, но я не совсем уверен, как это работает. Я думаю, что лучше всего использовать сетевой менеджер в большинстве случаев, когда это возможно.

Марти Фрид
источник
2
спасибо, да, похоже, что это работает, работа с сетями в Ubuntu, похоже, сбивает с толку, поэтому я могу установить dns-серверы в resol.conf / base или в / etc / network / interfaces, или в сетевом менеджере, есть ли полное руководство по работе с сетями Ubuntu?
Anurag Uniyal
Если вы используете графический интерфейс, то лучше всего его настроить, создав профили в диалоге сетевых подключений. Я продублировал значение по умолчанию, затем отредактировал его, чтобы внести необходимые изменения, сохранив настройки по умолчанию, чтобы убедиться, что у меня всегда был рабочий профиль. Тогда легко переключать профили. Я не знаю, как это сделать без графического интерфейса, но есть пользователь «Джеймс Хенстридж», который очень хорошо разбирается в сетях Ubuntu; Вы можете попробовать поискать информацию в Аскубунту. Он рассказал мне о команде, которую я дал вам в этом посте .
Марти Фрид
1
stgraber.org/2012/02/24/dns-in-ubuntu-12-04 - хорошая статья о разрешении DNS в Ubuntu 12.04
Anurag Uniyal
6
Я использую 15.04, и вместо этого работает «nmcli dev show | grep DNS».
flickerfly
1
@vcardillo: первоначальный вопрос гласил: «Я использую Ubuntu 12.04 LTS». Прошло 5 лет с тех пор, как я опубликовал свой ответ. Ничто не вечно.
Марти Фрид
85

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


использование

nm-tool

Вы получите вывод, похожий на

NetworkManager Tool

State: 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
tgm4883
источник
1
просто хотел дополнения, зайдя в nm-appletменю информации о подключении тоже будет работать :)
Самик
1
+1 это тоже работает, как и nm-cli в ответе @Marty Fried
Anurag Uniyal
2
отлично работает на lubuntu 14.04, а также. спасибо
jamescampbell
2
НМ-инструмент не найден 15.10
лабиринт
1
да, это больше не работает ... нет и nm-toolв 16.х тоже. nmcli(в ответе Марти Фрида) это путь
Ламбарт
46

Два наиболее популярных ответа, 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)

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

> nm-tool | grep DNS:
    DNS:             8.8.8.8

Но если 127.0.0.1/localhost не используется, вывод nm-tool's and 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 OVERWRITTEN
nameserver 1.2.3.4
nameserver 127.0.0.1
search MyDomain
Петр В. Мёрч
источник
3
Это самый полный ответ
Marinos An
Спасибо. Некоторые из нас здесь не используют NM, и это хорошо для сообщества.
Стивен Бостон
Просто для завершения, digутилита может быть легко установлена ​​с apt install dnsutils.
Даниэле Бругнара
32

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

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

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

где xDNS-серверы вы хотите использовать

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

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

ССК
источник
2
Должен ли я перезапустить nm после внесения изменений в днс?
Бхаргав Нанекалва
1
--Спасибо. Это здорово. Это работает даже без этого бизнеса сетевого менеджера.
Адам
msgstr "cat /etc/resolv.conf должен показывать ваши DNS-серверы". Это не так.
Marinos An
25

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

PLA
источник
NB, если вы
катитесь
11

nmcli версия 0.9.10

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

nmcli -t -f IP4.DNS device show eth0
IP4.DNS[1]:192.168.1.1
IP4.DNS[2]:8.8.8.8

nmcli -t -f IP4.DNS connection show conn-name
IP4.DNS[1]:192.168.1.1
IP4.DNS[2]:8.8.8.8
иман
источник
2

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

nmcli device show <interface name> 
Сулеман Хасиб
источник
0

Кажется, управляется сетевым менеджером. Посмотрите здесь http://manpages.ubuntu.com/manpages/precise/man5/NetworkManager.conf.5.html

для большого объяснения.

Или короткую версию это посмотреть в

 /etc/NetworkManager/NetworkManager.conf

или же

 <SYSCONFDIR>/NetworkManager/NetworkManager.conf
MBS
источник
4
но /etc/NetworkManager/NetworkManager.confнет DNS-серверов, перечисленных в нем
Anurag Uniyal