Чтобы узнать, я пишу свой собственный кэширующий DNS-сервер (a 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 перезаписать его. Так я должен это сделать или есть лучший способ?
решение1
chattr будет работать. Он говорит NM оставить resolv.conf в покое. В качестве альтернативы см. rc-manager
в man NetworkManager.conf
.
NM всегда будет записывать в свой внутренний resolv.conf в var/run, так что вы можете его скрафтить. Или вы используете nmcli -f all device show
, или используете скрипт диспетчера ( man NetworkManager
).
Наконец, вы можете написать свой собственный плагин DNS. Но это потребует пересборки NM из исходников, а API плагина также не является общедоступным/стабильным.