Работает с Ubuntu 18.04 Server LTS. Я пытаюсь найти способ проверить DNS IP(s), который фактически используется при установке через DHCP. Сейчас resolv.conf указывает только на 127.0.0.53. Папка /etc/systemd/network пуста. Вывод NSLOOKUP также всегда ссылается на внутренний IP 127.0.0.53. Похоже, все старые трюки не работают.
Документация Ubuntu еще не обновлена, поскольку она все еще выглядит как помощь для 16.04, ссылающаяся на eth0, ifup и ifdown, которые все устарели на 18: https://help.ubuntu.com/lts/serverguide/network-configuration.html.
Я'пробовал установить статическую настройку адаптера с Netplan через пользовательский .yaml. Настройки работают нормально, но я не могу найти DNS IP, который я установил где-либо. Я ожидаю, что он будет согласован между DHCP и статическими настройками, но я не уверен, где искать.
На данный момент меня устроит либо вызов библиотеки C, либо метод bash CLI. Есть ли у кого-нибудь способ проверить это на сервере 18.04?
Я обнаружил, что в конце вывода показаны DNS-серверы по адаптерам:
systemd-resolve --status
Он содержит список под 'DNS-серверы', организованный по ссылке. Я думаю, что это изменилось по сравнению с предыдущими версиями Ubuntu. Это займет немного работы по разбору текста, но это дает мне то, что я ищу.
Другой способ:
cat /run/systemd/resolve/resolv.conf
Этот файл динамически генерируется systemd-resolved, но содержит реальные DNS-серверы вместо 127.0.0.53.
На самом деле, если вы хотите сделать этот файл по умолчанию для /etc/resolv.conf
, вы просто создадите для него симлинк. (/etc/resolv.conf
является симлинком, который по умолчанию указывает на /run/systemd/resolve/stub-resolv.conf
):
sudo mv /etc/resolv.conf /etc/resolv.conf.orig
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Образец /run/systemd/resolve/resolv.conf
:
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 10.1.2.3
search host.domain.com
Для получения дополнительной информации:
http://manpages.ubuntu.com/manpages/bionic/man8/systemd-resolved.service.8.html
Я тоже удивлен этим. Я использую Ubuntu 16.04 LTS и вижу нечто подобное.
Если вы выпустите
dig www.google.ca +trace | grep 'Received'
Первый хост в ответе - это тот, который выполняет поиск для вашего сервера.
$ dig www.google.ca +trace | grep 'Received'
;; Received 525 bytes from 127.0.1.1#53(127.0.1.1) in 19 ms
;; Received 42 bytes from 199.7.91.13#53(d.root-servers.net) in 32 ms
Это означает, что этот ящик выполняет собственный поиск dns непосредственно на корневых серверах и рекурсивно следует по пути, чтобы получить мой поиск dns.
Проблема заключается в том, что включен dnsmasq. Чтобы отключить его, сделайте следующее.
отредактируйте файл NetworkManager.conf
sudo gedit /etc/NetworkManager/NetworkManager.conf
закомментируйте строку dnsmasq
#dns=dnsmasq
перезапустите службу network-manager
sudo /etc/init.d/network-manager restart
затем проверьте, что он использует dns-сервер, назначенный через dhcp
$ dig www.google.ca +trace | grep 'Received'
;; Received 525 bytes from 192.168.30.1#53(192.168.30.1) in 18 ms
;; Received 42 bytes from 198.41.0.4#53(a.root-servers.net) in 32 ms