resolv.conf が DNS アドレスを記憶しないのはなぜですか?

resolv.conf が DNS アドレスを記憶しないのはなぜですか?

Apache 構成でワイルドカードを使用できるように、ファイルをインストールしdnsmasqて追加しました。ただし、コンピューターを再起動したり、Wi-Fi 接続を変更したりするたびに、動作させるために再度追加する必要があります。nameserver 127.0.0.1resolv.conf

なぜこのようなことが起こるのでしょうか? また、どうすればこれを解決できるのでしょうか?

答え1

12.04 より前の Ubuntu システムを実行していて、まだ 12.04 以降にアップグレードしていない場合、または resolvconf パッケージを削除した場合は、resolvconf パッケージをインストールしてください。

sudo apt-get install resolvconf

resolvconf がすでにインストールされている場合は、/etc/resolv.conf が ../run/resolvconf/resolv.conf へのシンボリック リンクであることを確認します。

sudo dpkg-reconfigure resolvconf

dnsmasq パッケージ (dnsmasq-base パッケージと混同しないでください) をインストールしたら、/etc/resolv.conf を編集する必要はありません。dnsmasq の initscript により、/etc/default/dnsmasq で の値が に設定されてIGNORE_RESOLVCONFいない場合、dnsmasq の起動時に (resolvconf 経由で) '127.0.0.1' が resolv.conf に追加されますyes

疑問に思う方は、/etc/init.d/dnsmasq を読んでください。

PS Ubuntu 12.04 には複雑な要素があります。NetworkManager はデフォルトで 127.0.0.1 のみをリッスンする dnsmasq プロセスを開始します。これは「スタンドアロン」dnsmasq プロセスと競合し、2 つのうち 1 つしか開始できません。これは既知のバグ #959037 で、Ubuntu 12.10 で修正されました (NM-dnsmasq のリッスン アドレスを 127.0.1.1 に移動)。Ubuntu 12.04 をまだ実行していて、スタンドアロン dnsmasq を実行したい場合は、NetworkManager 制御の dnsmasq を無効にするか (/etc/NetworkManager/NetworkManager.conf で「dns=dnsmasq」をコメント アウトする)、スタンドアロン dnsmasq が 127.0.0.1 をリッスンしないように設定する必要があります。

答え2

Network Managerで優先DNSサーバーを指定する必要があります。指定しないと、設定ファイルが上書きされ続けます。DNS IP を変更する適切な方法は何ですか?

答え3

構築中エギルの回答。ネットワークマネージャがファイルを破壊している場合は、Ubuntuフォーラムresolvconf パッケージを削除することで解決しました。スレッドが少し古いため、まだ機能するかどうかはわかりません。

関連情報