アプリケーションが私の/etc/resolv.conf DNSを変更するのを防ぐことはできますか?

アプリケーションが私の/etc/resolv.conf DNSを変更するのを防ぐことはできますか?

私は最近、技術的に長い間私を悩ませていた問題に直面しました。私のFedora 32 DNS設定は未知の/etc/resolv.confアプリケーションによって引き続き修正されます。変更された構成は次のとおりです。

[dolphin@MiWiFi-R4CM-srv]~/Documents/GitHub/reddwarf-music% sudo cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.31.1
nameserver 8.8.8.8
nameserver 114.114.114.114

私が欲しいdnsconfは次のようになります。

nameserver 8.8.8.8

私はちょうど8.8.8.8DNSが欲しい。変更すると/etc/resolv.conf誤った設定になります。 DNS設定を制御するにはどうすればよいですか?

答え1

これを書く/etc/NetworkManager/NetworkManager.conf

[main]
dns=none

/etc/resolv.confNetworkManagerがそれ自体で管理されていないものと認識しているプログラム(、およびunbounddnsmasqsystemd-resolvedマークされているため、変更されていません。のman NetworkManager.conf次のセクションMainとキーdns

none: NetworkManager will not modify resolv.conf. This implies rc-manager unmanaged

または、必要なDNSサーバーに設定してsystemd-resolved編集することもできます。/etc/systemd/resolved.conf

[Resolve]
DNS=192.162.0.1, 9.9.9.9 # Whatever DNS server IP addresses you want, comma separated.
FallbackDNS=8.8.8.8, 1.1.1.1 # Same as above. 

systemd-resolved.service後でアクティブにすることを忘れないでください。

答え2

本当の答えは chattr

はい、NetworkManagerがこのファイルを変更できないようにすることができます。しかし、他のアプリケーションやプロセスはどうですか?ファイルの変更を防ぎます。

chattr +i file

ファイルを再度変更できるようにする:

chattr -i file

答え3

dhcpcd.confマニュアルページによると、

nohook script
    Don't run this hook script.  Matches full name, or prefixed with 2 numbers optionally ending with .sh.

    So to stop dhcpcd from touching your DNS settings or starting wpa_supplicant you would do:-
    nohook resolv.conf, wpa_supplicant

だからあなたのものに追加しますdhcpcd.conf(私のものがあります/etc/dhcpcd.conf):

nohook resolv.conf

dhcpcdあるいは、willを使用して実行すると-C同じことが行われますが、一時的にのみ実行されます。

dhcpcd -C resolv.conf eth0

関連情報