• Windows Subsystem for Linuxガイド 第31回 WSL 2023年9月アップデート - その1

現在配布されているWSは「2023年9月アップデート」と呼ばれ、大きな機能追加があった。今回は、この変更点を中心に、.wslconfigファイルによる設定を解説する。2023年9月アップデートに対応するのは、安定版がVer.2.0.14.0、プレビュー版がVer.2.0.15となる(いずれも原稿執筆時点)。また、評価は、WSLの安定版を使い、Windows 11 Ver.23H2 ビルド22631.2861上で行った。

.wslconfigの変更点

2023年9月アップデートで導入された機能のほとんどは、WSL全体の設定を行う.wslconfigファイルで設定を行う。.wslconfigファイルの設定に関しては、過去記事「Windows Subsystem for Linuxガイド 第3回 WSL2動作設定編」を参照されたい。また、従来の設定値に関してはマイクロソフトのページ「WSL での詳細設定の構成」に記載がある。

(表01)は、2023年9月アップデートで追加された新機能の設定である。

  • ■表01

ファイアウォール

2023年9月アップデートの一番大きな変化は、WSLのネットワークにファイアウォールが適用されるようになった点だ。このため、後述するネットワーク関連機能もこのファイアウォールの影響を受けることに注意されたい。

ファイアウォールは、従来のWindows Defenderファイアウォールと別に新たに「Hyper-Vファイアウォール」が新設され、WSLを含む仮想マシンコンテナーに対して適用される(Windows Subsystem for Androidには適用されていない。また、通常のHyper-V仮想マシンには影響しないことに注意されたい。

Hyper-Vファイアウォールを制御するのが.wslconfigの[wsl2]セクションに記述する「firewall」設定である。この設定はデフォルトでtrueとなっており、WSLに対してファイアウォールが有効になっている。つまり、何も記述していない状態で有効になる。

現状では、Win32側のWindows Defenderファイアウォールの初期状態とほぼ同じものが設定されている。なお、Hyper-Vファイアウォールの設定にはGUIはなく、PowerShellからのコマンドで行う(次回以降に解説予定)。

DNSトンネリング

これまでのWSLでは、自動でレゾルバ(DNSによる名前解決を行うLinuxの機能)の設定が行われ、通常の仮想スイッチを経由するネットワーク通信でDNS問い合わせが行われていた。しかし、さまざまな要因でうまくいかていことがあったほか、新設のファイアウォール(前述のHyper-Vファイアウォールも含む)などで阻止されないように注意する必要も出てきた。

こうした背景もあり、DNS問い合わせを特別扱いして、通常のネットワークルート以外でWin32側に伝達するのがDNSトンネリングだ。

これは[wsl2]セクションの「dnsTunneling」設定で行う。trueを設定することで、DNSトンネリングが有効になる。なお、省略値は、falseであり、何も設定しなければ、従来通り仮想スイッチ経由での問い合わせになる。たたし、プレビュー版WSLのVer.2.1.0からは、省略値がtrueになった。

ネットワークモード

「ネットワークモード」は、新設された「ミラード・ネットワークモード」と従来のネットワークモードである「NATネットワークモード」を切り替えるもの。従来は、WSLとWin32は異なるネットワークになっており、仮想スイッチを使って接続が行われ、Win32側でNAT(Network Address Translation)が行われていた。

ミラード・ネットワークモードは、実装方法は不明だが、WSLでWin32側と同じIPアドレスの利用を可能にする。名称などから想像するに、Win32側のネットワークスタックの状態をWSL側のネットワークスタックに反映させる(ミラーリング)するものと考えられる。

ミラード・ネットワークモードには2つの設定がある。“ignoredPorts”は、Win32側とWSL側で同一ポートの利用を可能にするもの。ミラード・ネットワークモードでは、状態が共有されているためWin32側で開いたポートをWSL側では開くことができなくなる。“ignoredPorts”は、ポート番号のカンマ区切り値を設定し、ここに設定されたポートは、Win32側とWSL側での同時利用を許可する。ただし、このポートを使った通信は、それぞれの環境内での通信に限られる。

もう1つの設定“hostAddressLoopback”は、WSL側でWin32側IPアドレスでのローカル接続を可能にするもの。

自動プロキシー

Win32側には、LAN内に設置されたプロキシーサーバーを検出して、これを設定する仕組みがある。WSLの自動プロキシーは、これをWSLに適用する仕組みだ。従来は、Linux側で手動設定によりプロキシーサーバーの処理を行う必要があった。

設定は[wsl2]セクションでautoProxy設定を使う。設定値としてtrueを指定すると、自動プロキシーが有効になり、WSL側でもWin32側と同じプロキシー設定が有効になる。

2023年9月のアップデートは、かなり大きな改良となる。WSL自体のバージョン(wsl.exe --versionで表示可能)も2.xとなり、メジャーバージョンアップだといえ、WSL2導入以来の大きなアップデートといえる。

次回は、実験的な機能である自動メモリ回収とスパースVHDについて解説を行う。

Windows Subsystem for Linuxガイド 連載バックナンバー
https://news.mynavi.jp/tag/winsubsystem/