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

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

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

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

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

6 ответов

Решение

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

Новый инструмент 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 может выбрать вывод по столбцу, но он принимает только 1 символ в качестве разделителя (в то время как nmcli использует много пространства). sed превращает пробелы в исходном выводе в TAB.

Анализ пакетов будет альтернативным методом, который работает независимо от того, какой 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, отправляет пакеты в днс моего университета, 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)

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

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

networkctl list

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

networkctl status eth0

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

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

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

Список разработчиков 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

Он по-прежнему доступен по умолчанию в версии 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, которые вы используете.

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

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

Другие вопросы по тегам