[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Что не так в DNS в Debian buster



Спасибо, Сергей, за реакцию. Но у меня на нескольких компах с buster одно и то же: /etc/resolv.conf - это не ссылка на какой-то там файл, а сгенерированный NN'ом фалик. Я так понимаю, что при переходе с девятки на десятку отключили у NM логику использования dnsmasq. systemd-resolved хоть и запускается сейчас и висит на 53-м порту на локальном IP-шнике, как понимаю, никем не используется, потому что /etc/resolv.conf про него вообще ничего не знает. /me как-то не понимает как можно было такой дефолт запилить (все компы ставились с нуля без upgrade).

Таким образом, получается, что неизбежать танцев с бубном по редактированию конфигов NM, что при апгрейде на 11-й выпуск, прилетит бумерангом скорее всего.

пн, 17 мая 2021 г. в 16:32, Sergey Spiridonov <sena@s73.work>:
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: