Як дізнатися, який 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

    Очевидно, змащуйте лише рядки з текстом "DNS" в ньому.

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

    Це лише для того, щоб очистити вихід. Вибір cutможе виводити за стовпцем, але він займає лише 1 символ як роздільник (хоча nmcliвикористовує МНОГО СПАСИ). sedПеретворює простору, в оригінальної продукції, в TAB.


7
+1. Не знав про цю утиліту, однак я запускаю Ubuntu 14.04, і моя команда nmcli d list. Крім цього, чудові речі тут!
Терранс

1
sed має прапор -E для розширеного регулярного r+rr*
виразу

1
На якій версії ґрунтується ця відповідь? На моїй версії nmcli мого Trusty 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посилає пакети днса мого університету, 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-інструмент зі старого пакету вручну. Виконайте наступні команди.

Спочатку створіть тимчасовий каталог для роботи:

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-інструмент з терміналу.


Крім того, це все ще не може точно забезпечити всі фактичні 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 список розробників | греп 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?
holmb

Я кілька копав, схоже, вони змінили CLI між Ubuntu 14.04 та 16.04. Мабуть, nmcli dev listпрацює в 14.04, але не в 16.04.
holmb

1

Якщо хтось має таке ж питання, як і я до Ubuntu 18.04LTS:

Перерахуйте всі мережеві пристрої, якими керує мережевий менеджер:

networkctl list

Показати конфігурацію конкретного пристрою:

networkctl status eth0

Замість eth0 вам потрібно ввести ім'я вашого мережевого пристрою, показане у списку раніше. Якщо немає запису DNS, на вашій картці немає налаштованого сервера імен

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.