
Windows 上で Linux 環境を快適に動かすツールとして、WSL2(Windows Subsystem for Linux 2)は多くのエンジニアやクリエイターに愛用されています。しかし、従来通りの初期設定で使っていると、「社内VPNに接続するとWSL2側のネットワークが途切れる」「WindowsとWSL2間でlocalhostのアクセスがうまくいかない」「ファイルの読み書きが遅くて開発効率が落ちる」といった悩みに直面することがあります。
これらの問題を劇的に解決するのが、WSL 2.0以降で追加された「ミラーリングモード(networkingMode=mirrored)」と、正しいファイルアクセス・パフォーマンス設定です。
この記事では、WSL2のミラーリングモードの仕組みやメリット、具体的な.wslconfigの編集方法、そしてファイルアクセス速度を最大限に引き出す設定手順までを分かりやすく解説します。
この記事で行うこと
前提条件
ミラーリングモード機能を利用するには、以下の動作環境が必要です。
利用中のWSLバージョンが古い場合は、PowerShellから最新版にアップデートを行ってから設定を行ってください。
WSL2のネットワークモード:NATとミラーリングの違い
従来のWSL2と新しいミラーリングモードでは、ネットワークの仕組みが大きく異なります。
従来のNATモードの課題
初期状態のWSL2は「NATモード」で動作しています。NATモードでは、Hyper-Vの仮想スイッチを介してLinux側に専用のIPアドレス(例: 172.x.x.x)が割り当てられます。
この方式には以下のような使いづらさがありました。
ミラーリングモード(networkingMode=mirrored)のメリット
ミラーリングモードを有効にすると、Windowsのネットワークインターフェース(Wi-Fiやイーサネット)がLinux側に直接投影(ミラーリング)されます。
これによって以下のメリットが得られます。
手順1:WSLのバージョン確認とアップデート
まずは、現在のWSLバージョンが2.0.0以上であるか確認します。
PowerShellを起動し、以下のコマンドを実行します。
wsl --version
出力結果の「WSL バージョン」が 2.0.0 以上であることを確認してください。
もしコマンドが存在しないか、バージョンが古い場合は以下のコマンドを実行して最新化します。
wsl --update
アップデート完了後、念のため再度 wsl –version を実行してバージョンを確認します。
手順2:.wslconfig ファイルの作成・編集
WSL2の全体設定は、Windowsのユーザーホームディレクトリ直下にある .wslconfig ファイルで管理します。
設定ファイルの保存場所
- パス: C:\Users[ユーザー名].wslconfig
- 環境変数での表記: %USERPROFILE%.wslconfig
エクスプローラーのアドレスバーに %USERPROFILE% と入力してEnterキーを押すか、メモ帳等のテキストエディタで直接作成・更新します。
推奨される .wslconfig の設定内容
以下の内容を .wslconfig に記述します。
[wsl2]
# ネットワークモードをミラーリングに設定
networkingMode=mirrored
# DNSトンネリングを有効化(VPN環境下でのDNS解決失敗を防止)
dnsTunneling=true
# Windowsのプロキシ設定をWSL2へ自動適用
autoProxy=true
# Hyper-Vファイアウォール規則の適用
firewall=true
# (オプション)メモリやCPU割り当ての最適化
memory=8GB
processors=4
[experimental]
# 空きメモリを自動的にWindowsへ返還する設定
autoMemoryReclaim=gradual
# VHDXディスクサイズを自動的に縮小する設定
sparseVhd=true
各設定の役割は以下の通りです。
手順3:WSLの再起動と動作確認
設定ファイルを保存したら、WSL2を再起動して設定を適用します。
WSL2の停止と起動
PowerShellを開き、一度WSLを完全停止します。
wsl --shutdown
その後、ターミナルやPowerShellから再度Linuxディストリビューション(例: Ubuntu)を立ち上げます。
wsl
動作確認の手順
- localhost接続の確認 WSL2上で簡単なWebサーバー(例: python3 -m http.server 8000)を起動し、Windows側のブラウザから
http://localhost:8000にアクセスしてページが表示されるか確認します。 逆に、Windows側で起動している開発サーバーに対して、WSL2のターミナルからcurl http://localhost:[ポート番号]で通信できるかテストします。 - VPN環境での通信確認 WindowsでVPNに接続した状態で、WSL2のターミナルから外部サイトへのpingやcurlが正常に通るかチェックします。
curl -I https://www.google.com
エラーにならずレスポンスヘッダーが返ってくれば、VPN互換性の設定は成功です。
ファイルアクセス速度を劇的に改善する設定とベストプラクティス
ネットワーク設定と並び、WSL2のパフォーマンスで重要なのが「ファイルアクセス速度」です。
なぜファイル操作が重くなるのか?
WSL2からWindows側の領域(/mnt/c/Users/...)にあるファイルを操作する場合、9Pプロトコルと呼ばれるネットワーク経由のファイル参照が行われます。 このため、/mnt/c/ 配下で npm install や git status などの大量の小規模ファイルアクセスが発生する処理を行うと、非常に低速になります。
高速化のための鉄則:ソースコードはLinux領域に置く
ファイル読み書きの低速化を防ぐ最大のポイントは、プロジェクトファイルをすべてLinuxネイティブのファイルシステム内に配置することです。
推奨配置場所:
/home/[ユーザー名]/projects/~/src/
Linux領域(ext4仮想ディスク内)にファイルを配置することで、native Linuxと同等の爆速なI/Oパフォーマンスが得られます。
Windowsエディタからのアクセス方法
Linux領域にコードを置いた場合でも、Windows側のエディタやエクスプローラーから快適に操作できます。
- VS Codeを使う場合 VS Codeの拡張機能「WSL」を導入し、WSLのターミナル上で以下を実行します。
code .
これにより、VS CodeがWSL内にリモート接続し、Windows側のUIでLinux上のファイルを極めて高速に編集できます。
- Windowsエクスプローラーからアクセスする場合 エクスプローラーのアドレスバーに以下を入力すると、Linux領域のファイルシステムをWindowsから直接開くことができます。
\\wsl.localhost\Ubuntu
または
\\wsl$\Ubuntu
うまくいかない場合の確認ポイント(トラブルシューティング)
設定後にネットワークが繋がらなくなったり、エラーが出る場合は以下を確認してください。
1. 「ミラーリングモードがサポートされていません」と表示される場合
Windows 11のバージョンまたはWSLのバージョンが要件を満たしていません。 Windows Updateを実行してビルド番号を22621.2428以上にするか、wsl --update でストア版WSLに更新してください。
2. ポートの競合が発生する場合
ミラーリングモードではWindowsとWSL2で同じネットワーク空間(IP/ポート)を共有するため、Windows側とWSL2側で同じポート番号(例: 8080)を同時にListenすると競合が発生します。 利用するポート番号を分けるか、不要なプロセスを停止してください。
3. Docker Desktopを利用している場合
Docker Desktopを利用している場合、ネットワークドライバーの動作と干渉することがあります。 Docker Desktopの設定(Settings > General)で「Use the WSL 2 based engine」が有効になっているか、最新のDocker Desktopに更新されているかを確認してください。
4. 設定を元に戻したい場合
万が一トラブルが解決しない場合は、.wslconfig から networkingMode=mirrored の行を削除するかコメントアウトし、PowerShellで wsl --shutdown を実行すれば元のNATモードに戻せます。
まとめ
WSL2のミラーリングモード(networkingMode=mirrored)とファイル配置の最適化を行うことで、これまでのWSL2の2大ストレスであった「VPN切断・localhost接続問題」と「ファイルアクセスの遅さ」を同時に解消できます。
今回紹介した設定のポイントまとめ:
これらを導入して、Windows上のLinux開発環境をより快適に構築してみてください。

