0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSLからホストIP(Windows側)に接続したいときの方法まとめ

Posted at

WSL初心者あるある

概要

サーバ側はWindowsのEclipseとかでtomcatなりapacheなりが動いていて、WSLでアプリやらスクリプトやらからWindowsのサーバにlocalhostでリクエストを送ったけど、なんかタイムアウトするなぁというとき。

この場合のlocalhostはWSL自身のローカルを指すのでいくら待ってもWindowsにはリクエストが飛びません。
対処方法はいくつかありますが、たいてい個別にしか紹介されていないのでまとめました。
ほかにもあればぜひコメントを。

  • ipconfigをみてIPアドレスを特定する
  • ポートフォワーディングを設定する
  • ホスト側のサーバにバインドしているアドレスを変更する

WindowsのIPアドレスを特定する

一番有名な方法。cmdでipconfigを見る場合。

ipconfig

イーサネット アダプター vEthernet (WSL)IPv4 アドレスをWSLからの通信先として使用しましょう。

イーサネット アダプター vEthernet (WSL):

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: xxxx::xxxx:xxxx:xxxx:xxxx%xx
   IPv4 アドレス . . . . . . . . . . . .: 172.xx.xxx.x ★ここ
   サブネット マスク . . . . . . . . . .: xxx.xxx.xxx.x
   デフォルト ゲートウェイ . . . . . . .:

次のコマンドでWSL上で確認することもできます。
シェルスクリプトとかからリクエスト投げるときはこちらがおすすめです。
結果にはIPアドレスがそのまま表示されます。

ip route show | grep -i default | awk '{ print $3}'

ポートフォワーディングを使用する

netshコマンドでこのアドレスからの通信をこのアドレスに転送しますよーという設定をしておく。
この方法の場合、127.0.0.1がWSLのローカルIPアドレスなのでWSLでの通信先指定はlocalhostでもいけるはず。

netsh interface portproxy add v4tov4 listenport=<port> listenaddress=0.0.0.0 connectport=<port> connectaddress=127.0.0.1

ホスト側のサーバにバインドしているアドレスを変更する

Windows側でサーバを起動していると思いますのでそちらの設定がいじれる場合(いじり方はサーバによりけりなのでここでは割愛)はこの方法も使えます。
だいたいはlocalhostになっていて特定のIPで受け付ける形になっていますが、0.0.0.0にしてなんでも受け入れるよ状態にすることでもできるようです。
お察しかもしれませんが、なんでも受け入れる状態はセキュリティ上良くないのであまり推奨はしません。
が、とりあえず動くかを確認するまでなら一瞬こちらを試してみてもいいかもしれません。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?