В очередной раз столкнулся с тем, что в Linux какой-то сервис автоматически меняет файл /etc/resolv.conf. Здесь записываются действия с попыткой разобраться, что (какой сервис, какая программа) изменяет файл /etc/resolv.conf.
* * *
Итак, вначале советуют попробовать понять, какие сетевые сервисы могут использоваться для настройки резолвинга DNS имен. Для этого рекомендуют выполнить команду:
systemctl list-units --type service | grep -i -e net -e resolv
В случае подопытной системы данная команда выдает:
networking.service
systemd-timesyncd.service
То есть, в системе нет сетевых менеджеров типа NetworkManager или WiCd, которые могли бы автоматически менять проблемный файл.
* * *
Говорят, что если в каком-то виде настроено PPP, то причина может быть в работе pppd. Чтобы исправить, надо найти переписываемый адрес DNS-сервера в файлах каталога /etc/ppp. Однако, сервиса ppp/pppd в системе не установлено, поэтому на него грешить тоже не имеет смысла.
* * *
Еще говорят, что файл /etc/resolv.conf могут изменять программы из пакета с названием resolvconf. Однако пакетная система показывает, что таковой пакет есть в репозитарии, но он не установлен.
* * *
Еще говорят, что если в /etc/network/interfaces какой-нибудь интерфейс имеет не фиксированный IP-адрес, а настроено получение сетевых настроек по DHCP, то в /etc/resolv.conf будет записываться тот адрес DNS-сервера (серверов), который отдает DHCP-сервер. Да, на подопытном компьютере стоит получение IP-адреса через DHCP. Выглядит это в файле /etc/network/interfaces так:
allow-hotplug ens3
iface ens3 inet dhcp
Проблема в том, что при соединении, в /etc/resolv.conf прописывается строка:
nameserver 192.168.88.1
Это IP-адрес домашнего роутера Mikrotik. Но на этом Микротике в секции DNS прописаныдругие IP-шники настоящих DNS-серверов:
8.8.8.8
77.88.8.8
И по-идее именно эти DNS-сервера должны отдаваться при DHCP соединении.
Однако, по другой информации, в DHCP-сообщения запихиваются не эти адреса, а адреса, прописанные в:
DHCP Server ->
Вкладка Network ->
Клик на строке с диапазоном адресов,
выделенного под обслуживание DHCP-сети ->
Строка DNS Servers.
А сам роутер выступает как промежуточный DNS-сервер.
Видимо, именно поэтому в /etc/resolv.conf попадает IP-адрес роутера 192.168.88.1.
* * *
На просторах интернета есть рекомендация, что если нужно жестко прописать на компьютере DNS-сервера, то правильнее всего это сделать путем изменения файла /etc/systemd/resolved.conf. Для этого, в нем надо разместить следующие строки:
[Resolve]
DNS=8.8.8.8, 77.88.8.8
И тогда обещают, что именно эти сервера будут всегда автоматически прописываться в файл /etc/resolv.conf, если, конечно, система управляется через systemd. Примерно так.