5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WSL2がWindowsからlocalhostで接続できるようになる

Posted at

WSL2がWindowsからlocalhostで接続できるようになる

1.今までのWSL

 Windows 10 Insider Preview Build 18945 によって、WSL2がWindows側からlocalhost接続を受け入れるようになりました。それ以前のバージョンではコロコロ変わるIPアドレスによって、httpやssh接続の際に面倒な確認作業が生じていました。

 私は対処法としてWSL2のコロコロ変わるIPをMyDNSで何とかするで書いた記事の通り、プライベートIPをMyDNSに通知して、ドメイン名で接続するように対処をしていました。しかしもうそんな必要はありません。localhostで接続できるようになったのです。

2.NICの状態

 まず、基本的なネットワークの仕組みは以前のバージョンから変化していません。

Windows側で生成される仮想NIC

.sh
イーサネット アダプター vEthernet (WSL):
   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::b562:8151:888c:3033%37
   IPv4 アドレス . . . . . . . . . . . .: 172.27.176.1
   サブネット マスク . . . . . . . . . .: 255.255.240.0
   デフォルト ゲートウェイ . . . . . . .:

Linux側のNICの状態

.sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether de:50:74:6e:56:5c brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 76:c0:1f:cc:27:f3 brd ff:ff:ff:ff:ff:ff
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:9d:b5:ff brd ff:ff:ff:ff:ff:ff
    inet 172.27.191.103/16 brd 172.27.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe9d:b5ff/64 scope link
       valid_lft forever preferred_lft forever
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0

 以前と同じようのプライベートIPが割り当てられており、Linuxから外へ出る場合はeth0を経由する形になります。

localhostの検証

  • WindowsのWSL2仮想NICを無効化してみた結果
    WindowsからLinuxへのlocalhost接続は生きたままです。
    しかしLinuxから外部ネットワークへの接続は不可能になります。

  • LinuxからWindowsへのlocalhost接続
    出来ません。現時点ではWindowsがlocalhostに対して、LinuxへのNATのような動作をしていると思われます。
    そのため逆は出来ません。
    今後のバージョンで対応される可能性があります。

WSL2を使うときに便利なbat

 全然話は変わりますがWSLの再起動ごとに、sshやWebサーバの起動が面倒だという人のためのおすすめbatファイルがこれです。

wsl_start.bat
start /b wsl -u root ^
for file in `\find /etc/rc3.d/* -maxdepth 1`; do $file start; done 

 RunLevel3の起動スクリプトを実行するBATです。これをWindowsから使えばsystemctlで有効化したサービスを起動することが出来ます。

まとめ

 今回のネットワーク問題の改善により、WSL2がかなり使いやすくなりました。起動が速く軽量なので、実験環境としては有用になりました。今後のバージョンアップでどういう進化を遂げていくのかが楽しみです。ところで7月末の「Docker Desktop for WSL 2」はどうなったんでしょう?

5
5
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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?