как вернуть контроль над resolv.conf


Наверняка вы сталкивались с тем, что после открытия /etc/resolv.conf для редактирования вы обнаруживали там такую надпись

# Generated by NetworkManager

NetworkManager по-умолчанию управляет DNS резолвингом. Я лично предпочитаю иметь контроль над этой важной частью сетевого стека системы, так как провайдеры зачастую подменяют DNS, ставят тормозные резолверы и вообще делают всякие непотребства.

Долой анархию! Вернем контроль над /etc/resolv.conf!

Чтоб заставить NetworkManager перестать управлять резолвингом, создадим файл /etc/NetworkManager/conf.d/dns.conf со следующим содержанием:

[main]
dns=none

Подробнее о конфигурации NetworkManager можно прочитать здесь. Убедимся, что опция dns нигде больше не задана

grep -r dns= /etc/NetworkManager

Если задана, то закомментируйте ее.

Применим конфигурацию

systemctl reload NetworkManager.service

Теперь настроим локальный кеширующий dnsmasq, кстати, я уже писал о нем.

Пропишем конфиг в /etc/dnsmasq.d/local.conf

server=1.1.1.1
server=2606:4700:4700::1111
listen-address=127.0.0.1
cache-size=10000
no-negcache
no-resolv
bind-interfaces

Я тут использую Cloudflare public DNS, но вы можете настроить любой на свой вкус.

Пропишем в /etc/resolv.conf наш новый резолвер:

# generated manually
nameserver 127.0.0.1

Включаем в загрузку и стартуем dnsmasq:

systemctl enable dnsmasq.service
systemctl start dnsmasq.service

Всё, радуемся быстрому браузингу.

P.S. для большей безопасности можете поднять у себя dnscrypt-proxy в качестве резолвера в связке с dnsmasq или вместо него.

P.P.S. иногда нужно посмотреть информацию о соединении, например резолвер, полученный по dhcp, у NetworkManager существует командная строка:

nmcli c show --active
nmcli c show <connection-name>
comments powered by Disqus