DNS systemd с любовью на 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-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 на маршрутизаторе возвращает правильный ответ, но локальный кэш никогда не пытается найти адрес (или так кажется).
источник
nslookup -i wlp3s0 web1
Ответы:
Ваш файл resolv.conf не указывает на неправильное место -
../run/systemd/resolve/stub-resolv.conf
это место, на которое он должен указывать по умолчанию.Проблема в том, что
systemd-resolved
не пропускает не пунктирные имена в DNS. Видимо, это работает "как задумано". Посмотрите эту проблему github, которая гласит, что «решено, никогда не позволят поиски с одной меткой просочиться в одноадресный DNS».Согласны ли вы или нет с доводами в этом вопросе GitHub, там есть способ это исправить. Это даже не требует внесения каких-либо изменений в настройки по умолчанию на вашем компьютере с Ubuntu:
Во-первых, DNS вашей локальной сети должен иметь доменное имя.
Если вы используете dnsmasq, добавьте следующее
/etc/dnsmasq.conf
на ваш DNS-сервер:Теперь вы сможете разрешить имена хостов в локальной сети, если вы добавите домен:
Во-вторых, убедитесь, что имя домена вашей локальной сети также задано на вашем DHCP-сервере, если оно отличается от вашего DNS-сервера. На моем DHCP-сервере (мой маршрутизатор) этот параметр называется просто «Доменное имя».
Если вы затем продлите аренду DHCP на вашем Ubuntu, вы должны увидеть директиву поиска в
/run/systemd/resolve/stub-resolv.conf
:Теперь поиск
web1
расширит его доweb1.your-domain
, который затем разрешится с использованием DNS.Обратите внимание, что если вы используете
dig
вместоnslookup
,dig
не использует путь поиска по умолчанию - используйте его+search
опцию, чтобы включить это.источник
/etc/resolv.conf
или на выходе либоnmcli -g all
илиsystemd-resolve --status
? Может быть, попробуйте посмотреть, что находится в вашей аренде DHCP ?Я нашел исправление, которое работало для меня.
мой файл resolv.conf указывал на неправильное место. Это похоже на ошибку в Ubuntu, поскольку это произошло на моем ноутбуке (на машине, на которой я впервые заметил эту проблему) и на новой установке Ubuntu 18.04 Server.
По умолчанию
Я удалил это и указал на правильный файл. После перезагрузки это решило мою проблему. И я даже мог переключать сети на своем ноутбуке, и DNS переключался правильно. Конечно, когда во внешних сетях я не могу разрешить ни одну из моих локальных машин, но это ожидается. Как только я переключаюсь обратно в свою локальную сеть, все локальные машины разрешаются правильно, потому что мой маршрутизатор - это DNS.
Исправление
После этого все заработало как я ожидал и 127.0.0.53 больше не используется вообще.
Правильные результаты
источник
ubuntu-bug resolvconf
.systemd-resolve
предоставляетсяsystemd
пакетом , поэтому, пожалуйста, попробуйтеubuntu-bug systemd
вместо этого.resolv.conf
настроен этот путь для DNS-сервера Docker Bridge, верно?