Как узнать, какой DNS я использую в Ubuntu с 14.04 года?


14

(Ответ на аналогичный вопрос за 12.04 .)

До Ubuntu 12.04 вы можете видеть активный DNS в /etc/resolv.conf. В Ubuntu 12.04 NetworkManager больше не работает с файлом. Вы должны напрямую обратиться к инструменту командной строки nm-tool.

Интересно, nm-toolчто больше не устанавливается по умолчанию в 14.04 и позже. Несмотря на то, что вы все равно можете выполнить установку через apt-get install, вы не можете предполагать, что все Ubuntu имеют это из коробки.

Так что вопрос остается. Откуда вы знаете, по умолчанию при установке DNS вы используете в командной строке?

Ответы:


30

Быстрый ответ

Новый инструмент NetworkManager nmcliтеперь установлен по умолчанию. Инструмент командной строки очень мощный, но немного сложнее в освоении. Придерживайтесь нашего вопроса, краткий ответ:

nmcli dev show | grep DNS

или, чтобы иметь более чистый выход

nmcli dev show | grep DNS | sed 's/\s\s*/\t/g' | cut -f 2


объяснять

Если у вас есть время, я могу объяснить вышеперечисленное:

  1. nmcli dev show

    Работает немного как старый nm-tool команда. Это уточняет текущую сетевую информацию.

    Вы также можете узнать настройки определенного интерфейса, добавив имя интерфейса. Например, чтобы узнать информацию eth0, вы можете использовать nmcli dev show eth0.

  2. grep DNS

    Очевидно, grep только строки с текстом «DNS» в нем.

  3. sed 's/\s\s*/\t/g' | cut -f 2

    Это только для очистки вывода. cutМожет выбрать выход на колонке, но он принимает только один символ в качестве разделителя ( в то время nmcliиспользует много пространства). sedПревращает пространства, в оригинальной продукции, в TAB.


7
+1. Не знал об этой утилите, однако я запускаю Ubuntu 14.04, и моя команда это nmcli d list. Помимо этого, отличные вещи здесь!
Терранс

1
sed имеет флаг -E для расширенного регулярного выражения, что позволяет r+вместоrr*
Squidly

1
На какой версии основан этот ответ? На моей версии Trusty nmcli 0.9.8.8 nmcli dev showвыдает большие фигурные сообщения об ошибках.
Оли

5
@Oli nmcli dev showпринадлежит nmcli 15.04. По какой-то причине старый nmcli считался нестабильным. , , теперь они используют nmcliте же флаги, что и Fedora. Вероятно, это связано с переключением на systemd. И поскольку этот ответ подходит для 15.04, а не для 14.04, я очень склонен его понизить
Сергей Колодяжный,

1
Я хотел бы повторить вышеупомянутые комментарии, это может быть правильно для 15.04, но не правильно для 14.04, что является вопросом.
Алекс

4

Пакетный анализ будет альтернативным методом, который работает независимо от NetworkManager или другого инструмента сетевого подключения, который вы используете. Основная идея заключается в том, чтобы отправить запрос DNS с nslookupи во втором терминале проверить, куда отправляются пакеты.

Для этого нам нужно было бы подключиться к сети в первый раз, чтобы ничто не мешало соединениям, и выполнить следующую команду:

sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com  

В альтернативном терминале запустить:

nslookup google.com 

Как только вы получите список пакетов от tcpdump, проверьте, куда они идут с вашего IP-адреса.

Например,

$ sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com                            
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    eagle.29862 > b.resolvers.Level3.net.domain: [udp sum ok] 64057+ [1au] A? google.com. ar: . OPT UDPsize=4096 (39)
    b.resolvers.Level3.net.domain > eagle.29862: [udp sum ok] 64057 q: A? google.com. 11/0/0 google.com. A 173.194.115.64, google.com. A 173.194.115.65, google.com. A 173.194.115.72, google.com. A 173.194.115.66, google.com. A 173.194.115.69, google.com. A 173.194.115.78, google.com. A 173.194.115.70, google.com. A 173.194.115.71, google.com. A 173.194.115.68, google.com. A 173.194.115.67, google.com. A 173.194.115.73 (204)
    eagle.16429 > b.resolvers.Level3.net.domain: [udp sum ok] 38822+ A? google.com. (28)

Как видите, мой ноутбук eagleотправляет пакеты в dns моего университета b.resolvers.Level3.net.domain. Если вы хотите увидеть IP-адрес, вы можете использовать -nфлаг с tcpdump.

Например:

$ sudo tcpdump -n -vv -i wlan0 -W 1200 | grep google.com                         
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    10.10.87.145.56474 > 4.2.2.2.53: [udp sum ok] 15606+ A? google.com. (28)

2

проверьте ваши сетевые подключения:

ls /etc/NetworkManager/system-connections/

и выберите соединение, которое вы хотите настроить.

 sudo cat /etc/NetworkManager/system-connections/Internet | grep dns

Замените «Интернет» без имени вашего подключения


Использование может по-прежнему использовать nm-tool:

nm-tool | grep DNS

Установите его для U14.04 и выше, используя

sudo apt-get install nm-tool

пример:

nm-tool | grep DNS
    DNS:             192.168.1.1
    DNS:             192.168.10.1
    DNS:             192.168.11.1

1

Он по-прежнему доступен по умолчанию в версии 14.04, поскольку он связан с сетевым менеджером. С тех пор он был удален из сетевого менеджера (версия 15.04 и выше) и даже недоступен через apt-get.

На данный момент, в версии 15.04, вы можете скачать и извлечь nm-tool из старого пакета вручную. Запустите следующие команды.

Сначала создайте временный каталог для работы в:

cd
mkdir APTGET;cd APTGET

Затем загрузите старую версию и распакуйте файлы:

wget 'http://us.archive.ubuntu.com/ubuntu/pool/main/n/network-manager/network-manager_0.9.8.8-0ubuntu7.1_amd64.deb'
ar xvf *
tar xvf dat*

Создайте новый каталог:

mkdir ~/bin

(если он говорит file already exists, просто проигнорируйте сообщение и продолжайте).

Скопируйте файл в новый каталог:

cp ./usr/bin/nm-tool ~/bin

Вернитесь в домашний каталог и удалите временный каталог:

cd ..
rm -R APTGET

Теперь установите псевдоним для nm-tool:

cp ~/.bashrc ~/.bashback
echo 'alias nm-tool="~/bin/nm-tool"' | tee -a ~/.bashrc;. ~/.bashrc

Текущий пользователь должен теперь иметь возможность запустить nm-tool из терминала.


Кроме того, это может все еще не точно предоставить все фактические преобразователи DNS, которые вы используете.

Вы можете перейти на DNSleaktest.com, чтобы получить полный отчет. Нажмите на расширенный тест, чтобы получить полный отчет.


1

На самом деле, NetworkManager действительно использует /etc/resolv.conf. Однако, по умолчанию настройки сервер DNS , перечисленный в resolv.confэто 127.0.0.1, потому что NetworkManager использует свою собственную внутреннюю службу DNS для некоторых неясных технических причин , которые не имеют отношений для многих людей. Вот почему вы должны использовать, nmcliчтобы увидеть, какие DNS-серверы используются NetworkManager для внутреннего использования.

Однако также возможно отключить это поведение и вернуться к старому, где указан фактический используемый DNS-сервер resolv.conf. Чтобы сделать это, просто закомментируйте строку dns=dnsmasqв /etc/NetworkManager/NetworkManager.confи перезагрузите компьютер. Для большинства людей это не должно иметь никакого значения, кроме факта, что фактический DNS-сервер теперь будет отображаться на resolv.conf. Если вы находитесь в числе ключевых случаев, для которых было внесено изменение, это должно стать очевидным быстро, и вы можете вернуться к поведению по умолчанию, снова раскомментировав строку.


1

список разработчиков nmcli | grep DNS

это выведет что-то вроде;
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

Вышеуказанная команда работает до Ubuntu 16.04.
Для Ubuntu 16.04 используйте:
nmcli dev show | grep DNS


Вы, наверное, имеете в виду nmcli dev show, нет nmcli dev list?
Холм

Я немного покопался, похоже, они изменили CLI между Ubuntu 14.04 и 16.04. Видимо nmcli dev listработает в 14.04, но не в 16.04.
Холм

1

Если у кого-то есть такой же вопрос, как у меня, для Ubuntu 18.04LTS:

Список всех сетевых устройств, управляемых через network-manager:

networkctl list

Показать конфигурацию конкретного устройства:

networkctl status eth0

Вместо eth0 вы должны ввести имя вашего сетевого устройства, показанное в списке ранее. Если DNS-записи нет, на вашей карте нет настроенного сервера имен.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.