Есть ли команда для отображения 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
Но она не выводит список серверов, если я перехожу к «Network Manager GUI» Инструмент », в разделе« Беспроводная связь »перечислены« DNS 192.168.1.1 8.8.8.8 8.8.4.4 »
Могу ли я получить ту же информацию из командной строки?
Я использую Ubuntu 12.04 LTS
Это действительно для 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
версия 0.9.10 nmcli
Можно использовать любую из этих команд:
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
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
. На мой взгляд, это куча дерьма.
Вы можете выполнить все, что вам нужно сделать вручную, не беспокоясь об изменении настроек, особенно если у вас есть несколько сетевых карт на компьютере.
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-адреса до этой записи, они могут привыкнуть, но я не совсем уверен, как это работает. Я думаю, что лучше всего использовать сетевой менеджер в большинстве случаев, когда это возможно.
Оба ответа с наибольшим количеством баллов, 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
и nmcli
будет вводить в заблуждение:
Здесь 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
В Ubuntu 18.04 вы можете использовать systemd-resolve --status
Кажется, управляется сетевым менеджером. Посмотрите здесь http://manpages.ubuntu.com/manpages/precise/man5/NetworkManager.conf.5.html
для подробного объяснения.
Или короткую версию, чтобы посмотреть в
/etc/NetworkManager/NetworkManager.conf
или
<SYSCONFDIR>/NetworkManager/NetworkManager.conf
В 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
).
В системах, где systemd-resolved
НЕ установлен:
$ host -v something.unknown | awk -F "[ #]" '/Received /{print$5}' | uniq
192.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