Introduction

いい加減、Docker Desltop の起動の遅さやあまりにも多い更新に嫌気がさして、久しぶりに WSL で Docker を起動…しようと思ったら起動しなくて焦ったのでメモ。

What happend?

1. ERROR_FILE_NOT_FOUND

こんなエラーが出た。

1
2
3
$ wsl
ネットワークを構成できませんでした (networkingMode Nat)。ネットワークを無効にするには、C:\Users\TAKUYA\.wslconfigで 'wsl2.networkingMode=None' を設定します
Error code: Wsl/Service/CreateInstance/CreateVm/ConfigureNetworking/HNS/ERROR_FILE_NOT_FOUND

結構長い時間をかけた挙句のエラー。
エラーを調べると下記の Issue が見つかる。

WSL2 can’t start after VMware 17.6.0 incident, virtual networking missing #12055

Issue の報告をした人がかなり丁寧な人物で問題点と気づいた点を詳細にしていたようで、原因はアンインストールした際に余計なネットワーク設定が残っているからでは、と推測していた模様。
その上で自分で解決した模様。
自分が遭遇した事象と全く同じで、自分も VMWare Workstaion をつい先日アンインストールしていた。

デバイスマネージャーを見ると、 Hyper-V 仮想スイッチ拡張アダプター にエクスクラメーションマークがついている。

Device Manager

プロパティを見てみるとエラーが発生していることがわかる。

Device Manager

Device Manager

解決方法は、不要なレジストリを削除し、ネットワーク設定をリセットするというもの。
確かにアンインストールしたはずの VMware のネットワーク設定がレジストリに残っている。

Regedit

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3d09c1ca-2bcc-40b7-b9bb-3f3ec143a87b} を削除し、ネットワーク設定をリセットする。

Device Manager

Device Manager

Device Manager

再起動後、ネットワーク設定が本当に初期化されるので、KVM なり直接ログインするなりして、適宜設定。
自分は MAC アドレスに従って固定 IP をアサインするよう設定した DHCP だったので特に苦も無かった。

Device Manager

再起動後、Hyper-V 仮想スイッチ拡張アダプター が消えているがにエクスクラメーションマークが消えたのでまずは良しとする。

2. 仮想ネットワークを作成できませんでした

再び wsl を起動すると、Issue で報告されていなかったエラーが。

1
2
3
$ wsl
wsl: アドレス範囲 '172.20.160.0/20' を使用して仮想ネットワークを作成できませんでした。範囲 '172.18.96.0/20'、オブジェクトは既に存在します。 を使用して新しいネットワークを作成しました
wsl: アドレス '172.28.157.140' を使用してネットワーク エンドポイントを作成できませんでした。割り当てられた新しいアドレス: '172.18.107.83'

こちらも別 Issue が報告されている。

WSL Networking Broken in 2.0.7 #10709

英語だと

1
2
wsl: Failed to create virtual network with address range: '172.24.224.0/20', created new network with range: '172.18.16.0/20', The object already exists.
wsl: Failed to create network endpoint with address: '172.24.224.3', assigned new address: '172.18.31.109'

このような表記になる。
解決策 によると、下記を %USERPROFILE%\.wslconfig に下記を追加し、wsl を再起動 (wsl --shutdown) することで解決する、と。

1
2
3
4
5
6
[experimental]
autoMemoryReclaim=gradual # gradual | dropcache | disabled
networkingMode=NAT # mirrored | NAT | None
dnsTunneling=true
firewall=false
autoProxy=true

3. DNS トンネリングはサポートされていません

まだ解決できない。
先の設定の中にある dnsTunneling=true が影響してエラーになっている。
この dnsTunneling は、Windows 11 22H から導入された機能であり、それ以前の環境で使えないので dnsTunneling=false に変更し、wsl を再起動。

DNS トンネリングについては、DNS トンネリング を参照

以上で無事に成功したことを確認。