WSL2のデフォルトネットワークにおける課題
WSL2を長年使っている人なら、起動するたびにIPアドレスがコロコロ変わることに「発狂」した経験があるはずです。デフォルトのNAT(ネットワークアドレス変換)機能により、WSL2は孤立した島のようになっています。hostsファイルを書き換えたり、ローカルマシンからデータベースに接続したり、固定IPが必要なサービスを動かしたりする場合、毎日設定を修正する覚悟が必要でした。
私は現在、Proxmox上で12台の仮想マシン(VM)を動かすホームラボを運用しています。WSL2に移行した際も、本物のVMと同じような一貫したネットワーク体験を期待していました。幸いなことに、MicrosoftはNetworking Mirroring機能をリリースしました。これにより、WindowsとLinuxの間の煩わしいNATレイヤーを完全に取り除くことができます。
Networking Mirroring:WindowsとLinuxがひとつになる時
仮想ルーターの背後に隠れるのではなく、MirroringモードはWindows의 ネットワークカードをWSL2に直接反映させる鏡のような役割を果たします。
- Dùng chung địa chỉ IP: Windowsが192.168.1.15ならWSL2も同じです。手動のポートフォワーディング設定で苦労する必要はありません。
- IPv6の完全サポート: ローカルマシン上でデュアルスタック(dual-stack)アプリケーションのテストが可能になります。
- Localhost接続: Windows上で動作するサービスに、WSL2からlocalhost経由で遅延ほぼゼロでアクセスできます。
- 優れた速度: NATレイヤーによるパケットのカプセル化処理が不要になるため、オーバーヘッドが大幅に削減されます。
アップグレードの条件
この機能は古いWindowsバージョンでは利用できません。以下の準備が必要です:
- Windows 11 バージョン 22H2 以降 (ビルド 22621以上)。
- WSL バージョン 2.0.0 以降。
wsl --versionコマンドで確認できます。
2分で完了する設定手順
ステップ1:.wslconfig 設定ファイルを開く
WSL2のすべてのシステム設定は、ユーザーディレクトリにある1つのテキストファイルに集約されています。Win + R を押し、%USERPROFILE% と入力してEnterを押します。そこに .wslconfig という名前のファイルがなければ新規作成してください。
ステップ2:MirroringとIPv6を有効化する
NotepadやVS Codeを使用して、以下のコードを .wslconfig ファイルに貼り付けます:
[wsl2]
# ネットワークカードのミラーリングモードに切り替え
networkingMode=mirrored
# IPv6を有効化
ipv6=true
# VPN(Cisco AnyConnectやGlobalProtectなど)使用時のDNSエラーを修正
dnsTunneling=true
# WSL2用にWindowsファイアウォールを自動開放
firewall=true
# Windowsのプロキシ設定をLinuxに同期
autoProxy=true
networkingMode=mirrored という行が、まさにゲームチェンジャーとなる鍵です。また、リモートワークが多い場合、dnsTunneling は非常に重要です。これにより、ホストマシンでVPNをオン/オフするたびにWSL2のインターネット接続が切れるのを防ぐことができます。
ステップ3:システム全体を再起動する
ファイルを保存したら、設定を適用するためにWSL2を完全に終了させる必要があります。PowerShellを開き、以下を入力します:
wsl --shutdown
あとはUbuntuを再度開くだけで準備完了です。
成果の確認
新しいIPアドレスの確認
WSL2のターミナルで以下のコマンドを実行します:
ip addr
Windows上と同じネットワークインターフェースのリストが表示されます。Wi-FiもEthernetも両方表示されるはずです。ルーターがIPv6に対応していれば、WSL2も対応するグローバルアドレスを取得します。
実際のIPv6テスト
外部への接続をpingコマンドで確認します:
ping -6 google.com
応答が返ってくれば、開発環境の完全なデュアルスタック対応は完了です。
実体験からの注意点
Mirroringモードを6ヶ月間使用して気づいた、覚えておくべき3つのポイント:
- ポートの衝突を避ける: IPアドレスを共有するため、Windows側でNginxをポート80で動かしている場合、WSL2でポート80は使えません。本物のサーバーを扱うようにポート管理を行ってください。
- Windows Firewall: LAN内の他のデバイスからのインバウンド接続がファイアウォールでブロックされることがあります。WSL2内にWebサーバーを立てて他のマシンからアクセスできない場合は、インバウンドルールを確認してください。
- Docker Desktop: Docker Desktopを最新バージョンにアップデートしてください。古いバージョンではMirroringモードに切り替えた際にネットワークエラーが発生することがあります。
標準的なネットワーク環境をシミュレートできることで、ローカル段階で接続エラーを発見できるようになりました。これにより、CloudやProxmoxのプロダクション環境にコードをデプロイする際のデバッグ時間を大幅に節約できます。
おわりに
WSL2をプロフェッショナルな開発ツールとして使いたいなら、Networking Mirroringの設定は今すぐ行うべきです。この設定は、VPN使用時のネットワーク切断問題を解決するだけでなく、よりスムーズなネットワーク体験をもたらします。今日から設定を試して、WSL2のIP管理という悪夢から解放されましょう。

