WSL2 Networking Mirroring & IPv6:IPの壁を打破し、仮想マシンを真のサーバーへ

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

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つのポイント:

  1. ポートの衝突を避ける: IPアドレスを共有するため、Windows側でNginxをポート80で動かしている場合、WSL2でポート80は使えません。本物のサーバーを扱うようにポート管理を行ってください。
  2. Windows Firewall: LAN内の他のデバイスからのインバウンド接続がファイアウォールでブロックされることがあります。WSL2内にWebサーバーを立てて他のマシンからアクセスできない場合は、インバウンドルールを確認してください。
  3. Docker Desktop: Docker Desktopを最新バージョンにアップデートしてください。古いバージョンではMirroringモードに切り替えた際にネットワークエラーが発生することがあります。

標準的なネットワーク環境をシミュレートできることで、ローカル段階で接続エラーを発見できるようになりました。これにより、CloudやProxmoxのプロダクション環境にコードをデプロイする際のデバッグ時間を大幅に節約できます。

おわりに

WSL2をプロフェッショナルな開発ツールとして使いたいなら、Networking Mirroringの設定は今すぐ行うべきです。この設定は、VPN使用時のネットワーク切断問題を解決するだけでなく、よりスムーズなネットワーク体験をもたらします。今日から設定を試して、WSL2のIP管理という悪夢から解放されましょう。

Share: