問題の原因は、WSLがWindowsのネットワーキングスタックを使用するため、Windows側の設定がresolv.confファイルに反映されることです。具体的には、Windowsのネットワーク設定がDNSサーバーを指定している場合、WSLのresolv.confファイルがそれに上書きされてしまいます。
-
自動生成されるresolv.confの変更: WSLは起動時に自動的にresolv.confを生成します。このファイルを変更することで、上書きを防ぐことができます。次のコマンドを実行して、resolv.confを編集します。
sudo nano /etc/resolv.conf
このコマンドを実行すると、エディタが開きます。DNSサーバーの設定を手動で変更し、保存します。
-
resolv.confの書き込み保護: resolv.confファイルを書き込み保護することで、上書きを防ぐことができます。次のコマンドを使用して、ファイルの書き込み保護を有効にします。
sudo chattr +i /etc/resolv.conf
このコマンドを実行すると、resolv.confファイルが書き込み保護され、上書きができなくなります。書き込み保護を解除するには、次のコマンドを使用します。
sudo chattr -i /etc/resolv.conf
-
NetworkManagerの設定変更: NetworkManagerを使用している場合、resolv.confの上書きを防ぐために設定を変更することができます。次のコマンドを使用して、NetworkManagerの設定ファイルを編集します。
sudo nano /etc/NetworkManager/NetworkManager.conf
[main]
セクションに以下の行を追加して保存します。dns=none
これにより、NetworkManagerがDNS設定を管理しなくなり、resolv.confの上書きが防止されます。