Где найти серверы имен, полученные от DHCP (через NetworkManager)?

Чтобы узнать, я пишу свой собственный кеширующий DNS-сервер (à la dnsmasq, но вместо этого в Python). С DHCP NetworkManager получает восходящие серверы имен и помещает их в /etc/resolv.conf . Моя система также просматривает /etc/resolv.conf чтобы найти серверы имен для запроса.

Мне нужно разместить собственный DNS-сервер ( 127.0.0.1 ) в /etc/resolv.conf чтобы моя система запросила его, но NetworkManager перезапишет файл. Если я не разрешаю / настраиваю NetworkManager, чтобы не перезаписывать /etc/resolv.conf , мой DNS-сервер не сможет найти кеширование серверов имен, потому что NetworkManager не пишет их там.

Кажется, что /etc/resolv.conf /var/run/NetworkManager/resolv.conf , поэтому, я думаю, у меня мог бы быть DNS-сервер с сервером? Я бы просто chattr -i /etc/resolv.conf чтобы предотвратить перезагрузку NetworkManager. Это то, как я должен это делать, или есть лучший способ?

chattr будет работать. Он говорит NM, чтобы оставить resolv.conf в покое. Кроме того, см. rc-manager в man NetworkManager.conf .

NM всегда будет писать в свой внутренний resolv.conf в var / run, так что вы можете это очистить. Или вы используете nmcli -f all device show , или используете сценарий диспетчера ( man NetworkManager ).

Наконец, вы можете написать свой собственный плагин DNS. Но это требует от вас перестроить NM из исходного кода, а API-интерфейс плагина также не является общедоступным / стабильным.