WSL2はOSのアップデートサイクルとは別に、Windows StoreにてWindows Subsystem for Linux Previewが配布されています。ただし、今のところ小幅な改善がいくつか行われている程度で、逆にWindowsコマンドとの連携機能に少し障害※があるなど、それほどインストールの必要性を感じないパッケージという立ち位置な感じがします。ところが、そんなWSL Previewに新機能が隠されていることを発見した人がgithubにて情報を提供していました。
※(2022.02.06追記)WSL Preview 0.51 で発生しているWindowsコマンドが実行できなくなる障害は、カレントディレクトリを/mnt/c以下のWindows管理下に移動してから実行すれば回避できるようです。
(2022.04.29追記)WSL Preview で発生していたWindowsコマンドが実行できなくなる障害は、WSL Preview 0.58.0で解消されたようです。
それによると、現在配布中のWSL Preview 0.51にて.wslconfigに以下のパラメータが追加されているそうです。
[wsl2]
networkingMode=bridged
vmSwitch=my-switch
ブリッジモードを選択できるようになっている??
早速設定したところ、Windowsホストと同じネットワークのDHCPサーバからIPアドレスを取得できました。
ただし、IPv6が無効にされているようです。
IPv6を有効にするには.wslconfigにipv6=true
を追記すれば良いようです。
ipv6=true
(2022.02.04追記)
現状では5c:bb:f6
で始まるMACアドレスが設定されるようです。ベンダー検索したところ該当がなかったので、リザーブされているアドレスを計算して設定していると思っていましたが、テスト用に割り当てられたものかもしれません。2台にこの設定を行ったところ、同じMACアドレスが割り当てられてしまいました。
軽く確認する程度ならデフォルトのMACアドレスで構わないと思いますが、Hyper-Vが利用する00:15:5d
の領域から適当なものを割り当てる等の対応を行った方がよいかもしれません。手動で設定する場合にはLAN内で重複が発生しないように調整が必要です。
macAddress="00:15:5d:xx:xx:xx"
信頼できないネットワークに接続する際には、ファイヤーウォール無しで外部にむき出しになるのでセキュリティに注意は必要ですが、ごく自然なネットワーク接続を手に入れることができます。
ただし条件が
ただし、この用法はまだドキュメント化されていない機能なので、正式に提供されるかどうかはわかりません。更に、いくつかの条件を満たす必要があるのですぐに使える人は多くないかもしれません。
- Windows11であること
- ストア版WSL Previewをインストールすること
- WindowsがPro以上のSKUであること
vmSwitchに指定するスイッチは、Hyper-VマネージャーやPowerShellのHyper-Vモジュールが必要です。この機能はWindows Homeには提供されていないので、何らか(.wslconfigで?)外部スイッチを作成する方法が提供されるまではHomeでは利用できません。
以下はHyper-Vマネージャーでの設定例ですが、仮想スイッチマネージャーで外部仮想スイッチを作成し、その名前を.wslconfigに設定します。
そしてなによりも、現在のWSL Previewにはいくつか障害があるので、それに困ったらアンインストールもしくは次のリリースを待つこと。WSL Previewをアンインストールすると、コンポーネント版に戻るのでそこは安心(?)できるところです。
追記:
IPv6の有効無効も.wslconfigにて行うようです。
他にも以下のような設定項目が存在するようです。IPv4のDHCPもこれで制御できるようですね。
idleThreshold
virtio9p
kernelDebug
systemDistro
telemetry
vmIdleTimeout
debugConsoleLogFile
kernelBootTimeout
virtio
hostFileSystemAccess
mountDeviceTimeout
networkingMode
vmSwitch
macAddress
dhcp
dhcpTimeout
ipv6