Мой DNS-сервер — 192.168.1.152
.
Этот DNS предоставляется клиентам DHCP. Клиенты Windows в моей локальной сети правильно разрешают имена, используя этот DNS, но моя Ubuntu VM — нет.
Виртуальная машина настроена с использованием сетевого моста и правильно подключается к DNS-серверу, но мои локальные имена хостов не разрешаются ни nslookup, ни браузерами.
Вот nslookup
один из моих локальных доменов:
# nslookup unraid.local
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find unraid.local: SERVFAIL
Вот что должно разрешить использование моего DNS-сервера:
# nslookup unraid.local 192.168.1.152
Server: 192.168.1.152
Address: 192.168.1.152#53
Name: unraid.local
Address: 192.168.1.152
/etc/resolv.conf
имеет неправильный сервер имен:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
Я выполнил эту команду. В разделе DNS Servers, как ни странно, указан правильный сервер (и мой шлюз по умолчанию).
root@ubuntu:~# 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 2 (ens33)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.152
192.168.1.1
Я не хочу «жестко задавать» IP-адрес DNS-сервера в файле конфигурации, поскольку в таком случае я не смогу преобразовать его при смене сети.
Как мне заставить resolvconf и NetworkManager работатьавтоматическиустановить IP DHCP-сервера в /etc/resolv.conf
?
решение1
Временное решениебез необходимости перенастройки при изменении IP-адресов DNS:
sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot
решение2
Попробуйте отредактировать /etc/systemd/resolved.conf
, добавив нужный вам DNS-сервер:
измените это:
[Resolve]
#DNS=
к этому (но используйте тот, который вам нужен - это пример):
[Resolve]
DNS=192.168.1.152
после этого перезапустите службу:
service systemd-resolved restart
И когда вы проверите статус, вы должны увидеть
$ systemd-resolve --status
Global
DNS Servers: 192.168.1.152
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
решение3
Я наконец-то нашел решение этой проблемы для ubuntu 17.10. По умолчанию эта версия Ubuntu использует systemd-resolved
, который, я надеюсь, будет стабильным для следующих версий.
Чтобы использовать пользовательский DNS вместо локального кэша, разрешенного systemd, выполните следующие действия:
добавить новые серверы имен. Отредактируйте файл
/etc/systemd/resolved.conf
как sudoer. Здесь я закомментировал запись DNS и поместил свой dns[Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4
отменить фактическую символическую ссылку на
/etc/resolv.conf
- создать новую символическую ссылку
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
- перезапустить службу
sudo service systemd-resolved restart
- перезапустите сетевой менеджер
sudo systemctl restart networking
И теперь, если вы покопаетесь в имени, предоставленном вашим DNS-сервером, вы должны увидеть, что запись разрешена.dig nexus.default.svc.cluster.mydomain
Последний шаг — обновить порядок разрешения в /etc/nsswitch.conf
, поместив dns перед mdns4_minimal
hosts files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname
решение4
В моей системе я нашел неверную символическую ссылку: /etc/resolv.conf
это была символическая ссылка, которая указывает на/run/systemd/resolve/stub-resolv.conf
Этот файл содержит только одну строку:
nameserver 127.0.0.53#53
В результате DNS-поиск локальной сети часто отсутствовал.
Поэтому вместо этого я изменил /etc/reolv.conf
указатель на/run/systemd/resolve/resolv.conf
и теперь работает правильно.