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

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

Чтобы узнать, я пишу свой собственный кэширующий 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 плагина также не является общедоступным/стабильным.

Связанный контент