DNS systemd lovated в 127.0.0.53, кажется, работает кроме тех случаев, когда я запрашиваю для локальных машин по имени. Но если я запрашиваю для них и конкретно указываю локальный сервер DNS (мой маршрутизатор) затем, я получаю надлежащий ответ. Но в файле конфигурации говорится, что он также использует маршрутизатор в качестве поискового адреса. Какие-либо мысли?
Я запускаю Ubuntu 18.04 на своем ноутбуке Dell.
Неправильные результаты:
$ nslookup web1
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find web1: SERVFAIL
Также сбои
$ nslookup -i wlp3s0 web1
nslookup: couldn't get address for 'web1': not found
Корректные результаты:
$ nslookup web1 192.168.1.1
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: web1
Address: 192.168.1.107
Systemd-твердость Информации о конфигурации
$ systemd-resolve --status
Global
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 3 (wlp3s0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.1
DNS Domain: wp.comcast.net
Link 2 (enp2s0)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Информация о конфигурации NetworkManager
$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
Таким образом, как я заставляю nslookup давать корректный ответ? Ссылка 3, кажется, корректная информация (мое соединение Wi-Fi), и мой DNS на маршрутизаторе дает корректный ответ, но локальный кэш никогда не пытается искать адрес (или таким образом, это кажется).
Ваш resolv.conf файл не указывал на неправильное место — ../run/systemd/resolve/stub-resolv.conf
то, где это, как предполагается, указывает на по умолчанию.
Проблема - это systemd-resolved
не передает неотмеченные точкой имена на DNS. По-видимому, это работает, "как разработано". Посмотрите эту проблему GitHub, которая указывает, что "разрешенный никогда не будет позволять поискам единственной маркировки пропускать на одноадресную передачу DNS".
Соглашаетесь ли Вы с обоснованием во что проблема GitHub, существует способ зафиксировать это. Это даже не требует внесения никаких изменений в установку по умолчанию на Вашей машине Ubuntu:
Во-первых, DNS Вашей LAN должен иметь доменное имя.
При использовании dnsmasq добавьте следующее к /etc/dnsmasq.conf
на Вашем сервере DNS:
expand-hosts
domain=your-domain # replace "your-domain" with domain of your choice
Необходимо теперь смочь разрешить имена хостов LAN если Ваш добавлять домен:
nslookup web1.your-domain
Во-вторых, удостоверьтесь, что имя домена Вашей LAN также определяется в Вашем сервере DHCP, если это отличается от Вашего сервера DNS. На моем сервере DHCP (мой маршрутизатор), эту установку просто называют "Доменным именем".
Если Вы затем возобновляете свой арендный договор DHCP о Вашем поле Ubuntu, необходимо видеть, что поисковая директива появляется в /run/systemd/resolve/stub-resolv.conf
:
nameserver 127.0.0.53
search your-domain
Теперь поиск web1
развернет его до web1.your-domain
, который затем разрешит использование DNS.
$ nslookup web1
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: web1.your-domain
Address: 192.168.1.107
Обратите внимание на это, если Вы используете dig
вместо nslookup
, dig
не использует путь поиска по умолчанию — используют +search
опция включить это.
Я нашел фиксацию, которая работала на меня.
мой resolv.conf файл указывал на неправильное место. Это походит на ошибку в Ubuntu, как это произошло на моем ноутбуке (машина, я сначала заметил эту проблему о), и о новой установке Сервера Ubuntu 18.04.
Значение по умолчанию
$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Apr 26 12:07 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
Я удалил это и указал на корректный файл. После перезагрузки это решило мою проблему. И я даже смог переключить сети на своем ноутбуке и DNS, переключенном правильно. Конечно, когда во внешних сетях я не могу разрешить ни одну из своих локальных машин, но это ожидается. Как только я переключаюсь назад на свою локальную сеть, все локальные машины решают правильно, потому что моим маршрутизатором является DNS.
The Fix
$ sudo rm -f /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 32 May 29 08:48 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf
$ sudo reboot
После этого все работало, как я ожидал, и 127.0.0.53 больше не используется вообще.
Корректные результаты
$ nslookup web1
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: web1
Address: 192.168.1.107
$ nslookup google.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: google.com
Address: 172.217.7.174
Name: google.com
Address: 2607:f8b0:4004:80e::200e