Как узнать, какой 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
объяснять
Если у вас есть время, я могу объяснить вышеперечисленное:
nmcli dev show
Работает немного как старый
nm-tool
команда. Это уточняет текущую сетевую информацию.Вы также можете узнать настройки определенного интерфейса, добавив имя интерфейса. Например, чтобы узнать информацию о
eth0
, вы можете использоватьnmcli dev show eth0
,grep DNS
Очевидно, grep только строки с текстом "DNS" в нем.
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
, Если вы относитесь к числу ключевых случаев, для которых было внесено изменение, это должно быстро стать очевидным, и вы можете вернуться к поведению по умолчанию, снова раскомментировав строку.