nimowagukari
@nimowagukari

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

wsl.conf で generateResolvConf = false を設定後に resolv.conf を修正しても、wsl2 を再起動すると resolv.conf が消えてしまう

解決したいこと

タイトルのとおり。

発生している問題・エラー

下記事象の通り、名前解決ができない。
https://zenn.dev/ekuinox/articles/520500939e5242a6393c

/etc/wsl.conf を作成して下記を記載

root@dell-note:~# cat /etc/wsl.conf
[network]
generateResolvConf = false
root@dell-note:~#

その後 /etc/resolv.conf を手動生成し nameserver 8.8.8.8 を記述すると名前解決ができるようになる。
しかし wsl2 を再起動すると /etc/resolv.conf が消えてしまう。

実行環境

# systeminfo 抜粋
OS 名:                  Microsoft Windows 11 Home
OS バージョン:          10.0.22598 N/A ビルド 22598
OS 製造元:              Microsoft Corporation
OS 構成:                スタンドアロン ワークステーション
OS ビルドの種類:        Multiprocessor Free

# wsl2
> wsl -l --all -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2
>

# wsl2 情報
# more /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
#

よろしくお願いします。。。

1

4Answer

wsl --version

でバージョンは確認できますか?
Insider previewをお使いのようなのでWSLはおそらくストア版Previewがインストールされていると思うのですが、generateResolvConf=falseにするとresolv.confが削除されるのは以前あった仕様?バグ?のような気がします。

最近のバージョンでは以下のようなメッセージがdmesgで確認できると思います。
[ 534.159250] init: (1) WARNING: /etc/resolv.conf updating disabled in /etc/wsl.conf

0Like

@shigeokamoto
確認・回答いただきありがとうございます!

wsl --version でバージョンは確認できますか?

wsl --version コマンドを実行するとヘルプが出ちゃいましたね
代わりになるかわかりませんが、wsl --status の結果は下記でした

> wsl --status
既定の配布: Ubuntu
既定のバージョン: 2

Linux 用 Windows サブシステムの最終更新日: 2022/01/16
Linux 用 Windows サブシステム カーネルは、'wsl --update' を使用して手動で更新できますが、システム設定が原因で自動更新が発生することはありません。
カーネルの自動更新を受け取るには、 Windows Update の設定を有効にしてください:' Windowsの更新に、その他のMicrosoftの製品の更新情報を受け取る'。
詳細については、 https://aka.ms/wsl2kernel.
 を参照してください
カーネル バージョン: 5.10.16
>

最近のバージョンでは以下のようなメッセージがdmesgで確認できると思います。

こちらの環境はバージョン古いせいか不明ですが、上記メッセージは見つかりませんでしたね…

# dmesg | grep -i wsl
[    0.000000] Linux version 5.10.16.3-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Fri Apr 2 22:23:49 UTC 2021
[  272.489540] init: (1) ERROR: ConfigApplyWindowsLibPath:2431: open /etc/ld.so.conf.d/ld.wsl.conf
[ 2237.623215] init: (1) ERROR: ConfigApplyWindowsLibPath:2431: open /etc/ld.so.conf.d/ld.wsl.conf
[ 2237.954348] init: (1) ERROR: ConfigApplyWindowsLibPath:2431: open /etc/ld.so.conf.d/ld.wsl.conf
[ 2238.259855] init: (1) ERROR: ConfigApplyWindowsLibPath:2431: open /etc/ld.so.conf.d/ld.wsl.conf
# dmesg | grep -i resolv
[    0.745510] NFS: Registering the id_resolver key type
[    0.748964] Key type id_resolver registered
[    1.017252] Key type dns_resolver registered
#
0Like

カーネルも古いようなのでいったん wsl --update で更新してみてはいかがでしょう?
先日Dev版Windowsに wsl --installした際にはストア版WSLがインストールされたので、おそらくはストア版0.58.3に更新されると思います。
Dev版WindowsのWSLがどのバージョンに相当するのか不明なのでストア版の方が良いような気はします。

最新のストア版0.58.3での注意点は全てのターミナルが切断されると15秒でWSLインスタンスが終了してしまうという点です。これが許容できるならストア版にした方が安定していると思います。

0Like

Your answer might help someone💌