Есть ли команда для перечисления 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".
Могу ли я получить ту же информацию из командной строки?
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 является правильным и 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. На мой взгляд, это куча дерьма.
Вы можете выполнить все, что вам нужно, вручную, не беспокоясь об изменении настроек, особенно если у вас на компьютере несколько сетевых адаптеров.
Удивительно, как много существует способов сделать это. На сервере Ubuntu 18.04, если вы не хотите устанавливать что-либо дополнительное, например nm-tool, тогда systemd-resolve --status будет работать из коробки для получения информации о DNS.
Если вы заинтересованы в получении не только ваших DNS-серверов, но и шлюза по умолчанию, IP-адреса, сетевой маски и т.д., То netplan ip leases eth0 предоставит вам всю эту информацию в удобной для чтения форме (при условии, что вы заинтересованы в eth0 интерфейс).
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, спасибо тебе за это ответ что привело меня по этому пути.