WSL2のmirroredネットワークモード
2024/05/08
WSL2でサーバを立て、そこにスマホでアクセスしたいことがあった。
WSL1のときは特に何もせずにできたのだが、WSL2は何かしないとダメだそうだ。
WSL を使用したネットワーク アプリケーションへのアクセス - Microsoft Learn
下の方に「ミラーモードのネットワーク - Microsoft Learn」という項目がある。
いくつか制約はあるものの、dockerなどを使わずに動かしたサーバであればホスト側、つまりWindowsのIPアドレスおよびポートでアクセスできるようになる。
設定方法は、.wslconfig
ファイルに設定を書くこと。
[wsl2]
networkingMode=mirrored
この.wslconfig
ファイルだが、これはWindows側のc:\Users\<hoge>\.wslconfig
のようなファイルになる。デフォルトではファイルはないので作る。
最初に見たサイトで~/.wslconfig
となっていたからWSL2にログインして作っていたのだが、そうではないのだ。そこに書いても意味はない。
mirroredの設定が反映されたかどうかはip a
などでIPアドレスを出力させるとわかる。
うちではWindowsは192.168.0.x
のようなアドレスで、WSL2は172.17.x.y
のようなアドレスになっていた。mirroredが有効になるとWSL2もWindows側と同じアドレスとして見えるようになった。確認するコマンドもある。
$ wslinfo --networking-mode
mirrored
これでWSL2側でnode.jsを使ってHTTPサーバを作ってホスト(Windows)から http://localhost:xxxx でアクセスすると、読み込めた。
しかし localhost ではなくホストのIPアドレスを指定すると読み込めない。
ファイアウォールや .wslconfig の変更を見直してみたのだが、どうにもダメだった。
あれこれやっていると、Windowsがブルースクリーンになってしまった。久々に見たよ。
できている人もいるし、Microsoftのミラーモードの説明にも「ローカル エリア ネットワーク (LAN) から WSL に直接接続する」とあるからできると思うのだよね。しかし、まったく思いつかない。
これができないと VirtualBox にまた戻さないといけないかもしれない、くらいに面倒なのだよ。
困ったものだ。