Re: Что не так в DNS в Debian buster
Sergey Spiridonov <[email protected]>
| Newsgroups | gmane.linux.debian.user.russian |
|---|---|
| Organization | private |
| Message-ID | <[email protected]> |
On Fri, 14 May 2021 16:16:40 +0300 Maksim Dmitrichenko <[email protected]> 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 -- С уважением, Сергей Спиридонов