Уже достаточно давно в Ubuntu встроен локальный кеширующий DNS-сервер, который «ускоряет» работу, кешируя ответы на повторяющиеся DNS-запросы. Файлом resolv.conf управляют приложения и если внести туда изменения — жить они будут ровно до следующего ребута. Или что бывает еще чаще — resolv.conf это симлинк на /run/systemd/resolve/resolv.conf или /run/resolvconf/resolv.conf. Все эти надстройки над простой возможностью вбить echo «nameserver 8.8.8.8» >> /etc/resolv.conf не «напрягают», но когда вместе с обновлениями колличество DNS-серверов в системе увеличивается, хочется в этом навести порядок.
Все описанное в статье касается десктоп версии Ubuntu 20.04, для Ubuntu server алгоритм немного другой и тут я его касаться не буду. У меня стоит Mint уже достаточно давно и пережил серию апгрейдов с 18й до 20й Ubuntu. За это время на смену dnsmasq и resolvconf пакетам пришел systemd-resolved. При апгрейдах Ubuntu заботливо удалил resolvconf, но почему-то (потому что стоит libvirt KVM) оставил dnsmasq.
Если заглянуть в lsof -i :53 видно что у нас есть два сервера совместно слушающих 53 порт — dnsmasq и systemd-resolved. Но зачем нам столько? Меня в целом устраивает и команда из первого абзаца — решающая ровно ту же задачу. Правда остается вопрос с получением DNS через DHCP, поэтому я решил оставить управление файлом resolv.conf NetworkManager’у.
С вступлением закончили, перейдем к практической части.
Читать далее