Командная строка для отображения 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 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

195 голосов | спросил Anurag Uniyal 18 J0000006Europe/Moscow 2012, 18:36:27

7 ответов


194

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

ответил Marty Fried 18 J0000006Europe/Moscow 2012, 19:20:45
82

Это справедливо для Ubuntu 13.10 и более ранних версий. Для Ubuntu 14.04 и выше см. Ответ Koala Yeung на: Как узнать, какой 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 do

nm-tool | grep DNS
ответил tgm4883 18 J0000006Europe/Moscow 2012, 19:22:54
29

Два ответа на верхний счет, 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 используется not , то вывод nm-tool и 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, разрешены правильно. Все, о чем 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
ответил Peter V. Mørch 28 Maypm15 2015, 22:19:45
28

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. По-моему, это куча дерьма.

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

ответил ssc 3 Maypm13 2013, 19:27:37
8

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
ответил iman 19 PM00000010000003931 2015, 13:03:39
2

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

nmcli device show <interface name> 
ответил Suleman 2 MarpmWed, 02 Mar 2016 21:09:11 +03002016-03-02T21:09:11+03:0009 2016, 21:09:11
0

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

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

Или короткую версию, которую нужно посмотреть в

 /etc/NetworkManager/NetworkManager.conf

или

 <SYSCONFDIR>/NetworkManager/NetworkManager.conf
ответил mbs 18 J0000006Europe/Moscow 2012, 18:46:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132