WSLにおけるresolv.confの上書きとその解決方法


問題の原因は、WSLがWindowsのネットワーキングスタックを使用するため、Windows側の設定がresolv.confファイルに反映されることです。具体的には、Windowsのネットワーク設定がDNSサーバーを指定している場合、WSLのresolv.confファイルがそれに上書きされてしまいます。

  1. 自動生成されるresolv.confの変更: WSLは起動時に自動的にresolv.confを生成します。このファイルを変更することで、上書きを防ぐことができます。次のコマンドを実行して、resolv.confを編集します。

    sudo nano /etc/resolv.conf

    このコマンドを実行すると、エディタが開きます。DNSサーバーの設定を手動で変更し、保存します。

  2. resolv.confの書き込み保護: resolv.confファイルを書き込み保護することで、上書きを防ぐことができます。次のコマンドを使用して、ファイルの書き込み保護を有効にします。

    sudo chattr +i /etc/resolv.conf

    このコマンドを実行すると、resolv.confファイルが書き込み保護され、上書きができなくなります。書き込み保護を解除するには、次のコマンドを使用します。

    sudo chattr -i /etc/resolv.conf
  3. NetworkManagerの設定変更: NetworkManagerを使用している場合、resolv.confの上書きを防ぐために設定を変更することができます。次のコマンドを使用して、NetworkManagerの設定ファイルを編集します。

    sudo nano /etc/NetworkManager/NetworkManager.conf

    [main] セクションに以下の行を追加して保存します。

    dns=none

    これにより、NetworkManagerがDNS設定を管理しなくなり、resolv.confの上書きが防止されます。