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

176

Есть ли команда для перечисления 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

    
задан Anurag Uniyal 18.06.2012 в 16:36
источник

7 ответов

172

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

Ubuntu & gt; = 15

nmcli device show <interfacename> | grep IP4.DNS

Ubuntu & lt; = 14

nmcli dev list iface <interfacename> | grep IP4

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

Убедитесь, что это то, что вы хотите.

ИЗМЕНИТЬ:

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

    
ответ дан Marty Fried 18.06.2012 в 17:20
источник
81

Это справедливо для 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.06.2012 в 17:22
источник
27

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 03.05.2013 в 17:27
источник
23

В двух ответах верхнего уровня, 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 DNS 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.05.2015 в 21:19
источник
6

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.08.2015 в 12:03
источник
2

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

nmcli device show <interface name> 
    
ответ дан Suleman 02.03.2016 в 19:09
источник
1

Кажется, управляется сетевым менеджером. Посмотрите здесь Ссылка

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

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

 /etc/NetworkManager/NetworkManager.conf

или

 <SYSCONFDIR>/NetworkManager/NetworkManager.conf
    
ответ дан mbs 18.06.2012 в 16:46
источник

Ознакомьтесь с другими вопросами по меткам