Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Expose WSL2 to local network permanently.

2025年09月27日に「Dev.to」が公開したITニュース「Expose WSL2 to local network permanently.」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

WSL2をローカルネットワークに永続的に公開する方法を解説。Windows 11 22H2以降で、`mirrored networking mode`を有効にし、`.wslconfig`を編集する。WSL2を再起動後、Hyper-Vファイアウォールの設定を変更することで、WSL2上のサービスに他のデバイスからアクセスできるようになる。

出典: Expose WSL2 to local network permanently. | Dev.to公開日:

ITニュース解説

Windows Subsystem for Linux 2、通称WSL2は、Windows上でLinux環境を手軽に利用できる非常に便利なツールである。システムエンジニアを目指す多くの初心者が、開発環境としてWSL2内のLinuxを利用し、Webサーバーやデータベースなどを動かしていることだろう。しかし、WSL2の標準的なネットワーク設定では、Windowsの外部にある他のデバイス、例えば同じローカルネットワークに接続された別のPCやスマートフォンから、WSL2内で稼働しているサービスに直接アクセスすることが難しいという課題があった。これはWSL2がネットワークアドレス変換(NAT)に似た仕組みを利用しているためで、WSL2内のサービスはWindowsホストPCからしか見えない状態になることが一般的である。

この記事は、この課題を解決し、WSL2をローカルネットワーク上の他のデバイスから恒久的にアクセス可能にするための具体的な手順を解説している。その鍵となるのが「ミラーリングネットワークモード」の導入である。この設定により、WSL2はWindowsホストPCとほぼ同じネットワーク設定を共有するようになり、WindowsホストPCのIPアドレスを使ってWSL2内のサービスに直接アクセスできるようになる。これは、開発中のWebアプリケーションを他のデバイスでテストしたり、チームメンバーと共有したりする際に非常に有用な機能である。

この設定を行うにはいくつかの前提条件がある。まず、使用しているWindowsがバージョン11の22H2以降である必要がある。これは、ミラーリングネットワークモードが比較的新しい機能であり、それ以前のバージョンでは利用できないためである。次に、作業を行うPCの管理者権限が必須となる。システムの設定ファイルやファイアウォールを変更するためには、OSに対する高い権限が必要となるからだ。最後に、当然ながらWSL2が既に適切に設定され、動作している状態であることが求められる。

作業に取りかかる前に、システム復元ポイントを作成しておくことが推奨される。これは必須ではないが、これから行う設定、特にファイアウォールの変更はシステムのネットワーク挙動に大きな影響を与える可能性があるため、万が一問題が発生した場合に、元の状態に簡単に戻せるようにしておくことは非常に賢明な策である。

具体的な手順はまず、WSL2の全体的な設定を管理する.wslconfigファイルに設定を追加することから始まる。このファイルは通常、Windowsのユーザープロファイルフォルダ内に存在する。PowerShellを管理者として起動し、notepad $env:USERPROFILE\.wslconfigというコマンドを実行することで、このファイルを簡単に開くか、存在しない場合は新規作成できる。開いた.wslconfigファイルに、[wsl2]というセクションの下にnetworkingMode=mirroredという一行を追加して保存する。この設定が、WSL2のネットワークモードをミラーリング方式に変更する指示となる。

設定ファイルを変更しただけでは、その変更はすぐに適用されない。WSL2のインスタンスをすべてシャットダウンし、再起動する必要がある。PowerShellでwsl --shutdownというコマンドを実行すると、現在実行中のすべてのWSL2インスタンスが停止される。その後、再度WSL2を起動すると、新しいネットワーク設定が適用された状態で動作を開始する。

最後の、そして非常に重要なステップは、Windowsのファイアウォールの設定である。WSL2はHyper-Vという仮想化技術を基盤としており、Hyper-Vにも専用のファイアウォールが存在する。このファイアウォールが、外部からWSL2への接続をブロックしてしまう可能性があるため、明示的にアクセスを許可する必要がある。ここには二つの方法がある。

一つ目の方法は、プライベートネットワークに対してのみインバウンド(外部からWSL2への)接続を許可するルールを追加する方法である。これは、比較的安全な方法であり、ほとんどの場合に推奨される。PowerShellを管理者として起動し、New-NetFirewallHyperVRule -DisplayName 'WSL Private Inbound Rule' -Profiles Private -Direction Inbound -Action Allow -VMCreatorId ((Get-NetFirewallHyperVVMCreator).VMCreatorId)というコマンドを実行する。このコマンドは、「WSL Private Inbound Rule」という名前の新しいファイアウォールルールを作成し、プライベートネットワークからのWSL2への受信接続を許可する設定である。これにより、ホームネットワークなど、信頼できる環境からのアクセスのみを許可し、他の種類のネットワークからのアクセスは引き続き制限できるため、セキュリティレベルを高く保つことが可能となる。

二つ目の方法は、Hyper-Vのファイアウォール全体を無効にする方法である。これは最も簡単な方法ではあるが、セキュリティ的には推奨されない。ファイアウォールを完全に無効にすると、WSL2だけでなく、Windowsホスト全体も外部からの不要な接続に対して脆弱になる可能性があるためである。しかし、開発環境など、特定の状況下で一時的に最大限の利便性を求める場合には選択肢となりうる。この設定を行うには、Set-NetFirewallHyperVVMSetting -Name ((Get-NetFirewallHyperVVMCreator).VMCreatorId) -Enabled Falseというコマンドを実行する。このコマンドは、Hyper-Vの仮想マシン設定を変更し、ファイアウォール機能を無効にする。

これらの手順がすべて完了すると、WSL2内で稼働しているWebサーバーやAPIサービスなどが、WindowsホストPCのIPアドレスを利用して、ローカルネットワーク上の他のデバイスから直接アクセス可能となる。例えば、WSL2内のUbuntuでNginxがポート80で動いていれば、ローカルネットワーク上のスマートフォンからWindowsホストPCのIPアドレスをブラウザに入力するだけで、そのNginxサーバーに接続できる。これは開発の効率を大きく向上させ、実際の環境に近い形でのテストを容易にするため、システムエンジニアとしてのスキルアップにも繋がるだろう。設定の際はセキュリティと利便性のバランスを考慮し、自身の環境に最適な方法を選択することが重要である。

関連コンテンツ

関連IT用語