Re: Что не так в DNS в Debian buster
Спасибо, Сергей, за реакцию. Но у меня на нескольких компах с buster одно и то же: /etc/resolv.conf - это не ссылка на какой-то там файл, а сгенерированный NN'ом фалик. Я так понимаю, что при переходе с девятки на десятку отключили у NM логику использования dnsmasq. systemd-resolved хоть и запускается сейчас и висит на 53-м порту на локальном IP-шнике, как понимаю, никем не используется, потому что /etc/resolv.conf про него вообще ничего не знает. /me как-то не понимает как можно было такой дефолт запилить (все компы ставились с нуля без upgrade).
Таким образом, получается, что неизбежать танцев с бубном по редактированию конфигов NM, что при апгрейде на 11-й выпуск, прилетит бумерангом скорее всего.
On Fri, 14 May 2021 16:16:40 +0300
Maksim Dmitrichenko <dmitrmax@gmail.com> wrote:
> Я знаю, что я слоупок, но не так давно обновился до buster и немного
> не понимаю, что у меня теперь происходит с DNS.
>
> Ранее (на девятке) у меня NetworkManager запускал dnsmasq и прописывал
> локальный DNS сервер в /etc/resolv.conf - при этом можно было удобно
> настроить, что при подключении к рабочему VPN, в рабочий DNS сервер
> улетали только запросы от dnsmasq, касающиеся резолва ресурсов в
> рабочей сетке. NetworkManager управлял dnsmasq на лету по мере
> подключения/отключения новых соединений.
>
> Теперь же я вижу, что локально (на 127.0.0.53 почему-то) запущен
> systemd-resolved. dnsmasq - не запущен вообще, в /etc/resolv.conf
> каждый раз при отключении/подключении VPN пишет NetworkManager, а все
> программы, пытаясь резолвить ресурсы, доступные по VPN, отправляют в
> половине случаев свои запросы к серверу провайдера и, получая отлуп,
> говорят, что no such address.
>
> Я, конечно, могу влезть в /etc/NetworkManager/NetworkManager.conf,
> задизаблить systemd-resolved и так далее, но почему такой неработающий
> идиотизм сделан по дефолту? Может надо какие-то хитрые пакеты
> установить или снести, чтобы всё вернулось в прямой вид?
>
Привет, боролся с этой проблемой с переменным успехом на Дебине, Убунте
и Федоре.
Если ты согласен жить с системд-резолвед (не всегда это возможно), то
решение простое:
необходимо добавить в конфигурацию сервера
push "dhcp-option DOMAIN rabochaya.setka.com"
системд-резолвед и НМ достаточно умны, чтобы перенаправлять ДНС запросы
после этого в ДНС от рабочей сетки (который тоже должен пушиться).
При этом на клиенте в НМ должна быть включена опция "Use this
connection only for resources on its network"
Если настройки сервера ты поменять не можешь, то должно помочь на
клиенте
sudo nmcli connection modify rabochiy-vpn ipv4.dns-search rabochaya.setka.com
Если же непременно необходимо использовать днсмаск, то инструкция
такая (не стал переводить с английского)
Install dnsmasq
sudo apt install dnsmasq
Disable systemd-resolved listener on port 53 (do not
touch /etc/systemd/resolved.conf, because it may be overwritten on
upgrade):
$ cat /etc/systemd/resolved.conf.d/noresolved.conf
[Resolve]
DNSStubListener=no
and restart it
$ sudo systemctl restart systemd-resolved
(alternatively disable it completely by $ sudo systemctl disable
systemd-resolved.service)
Delete /etc/resolv.conf and create again. This is important, because
resolv.conf is a symbolic link to /run/systemd/resolve/stub-resolv.conf
by default. If you will not delete symbolic link, the file will be
overwritten by systemd on reboot (even though we disabled
systemd-resolved!). Also NetworkManager (NM) checks if it is a symbolic
link to detect systemd-resolved configuration.
$ sudo rm /etc/resolv.conf
$ sudo touch /etc/resolv.conf
Disable overwriting of /etc/resolv.conf by NM (there is also an option
rc-manager, but it does not work, despite it is described in a manual):
$ cat /etc/NetworkManager/conf.d/disableresolv.conf
[main]
dns=none
and restart it:
$ sudo systemctl restart NetworkManager
Tell dnsmasq to use resolv.conf from NM:
$ cat /etc/dnsmasq.d/nmresolv.conf
resolv-file=/var/run/NetworkManager/resolv.conf
Резолвинг рабочей сетки, например так
cat /etc/dnsmasq.d/rabsetka
server=/rabochaya.setka.com/<айпи днс сервера в рабочей сетке>
and restart it:
$ sudo systemctl restart dnsmasq
Use dnsmasq for resolving:
$ cat /etc/resolv.conf
# Use local dnsmasq for resolving
nameserver 127.0.0.1
Публиковал для Убунты здесь
https://askubuntu.com/questions/898605/how-to-disable-systemd-resolved-and-resolve-dns-with-dnsmasq
--
С уважением, Сергей Спиридонов
--
With best regards
Maksim Dmitrichenko
Reply to: