IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

WSLで始めるUbuntu

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第24回 WSL2でのネットワークを知ろう (宮崎悟) 2020年11月

前回は、WSL2でのサービスいついて説明しました。今回はWSL2で変わったネットワークについて説明します。

WSL1 と WSL2 でのネットワーク

WSL1では、扱うネットワークがWindows側と同じネットワークを使用します。

Windowsのネットワーク

Windowsの ipconfig.exe を使用することで、Windowsが準備しているネットワークを表示します。筆者の環境ではHyper-Vが動作しているため、仮想ブリッジ(vEthernet)をいくつか使用しています。

$ ipconfig.exe
Windows IP 構成
中略
イーサネット アダプター vEthernet (WSL):
   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::ec6c:22c6:2eb4:221f%57
   IPv4 アドレス . . . . . . . . . . . .: 172.24.208.1
   サブネット マスク . . . . . . . . . .: 255.255.240.0
   デフォルト ゲートウェイ . . . . . . .:
イーサネット アダプター vEthernet (external):
   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 略
   一時 IPv6 アドレス. . . . . . . . . .: 略
   リンクローカル IPv6 アドレス. . . . .: fe80::7476:28b0:2df3:f926%21
   IPv4 アドレス . . . . . . . . . . . .: 192.168.10.10
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe80::ae44:f2ff:fe66:5090%21
                                          192.168.10.1
中略
イーサネット アダプター vEthernet (Default Switch):
   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::314e:2d6d:95a8:22e1%51
   IPv4 アドレス . . . . . . . . . . . .: 172.30.224.1
   サブネット マスク . . . . . . . . . .: 255.255.240.0
   デフォルト ゲートウェイ . . . . . . .:

ネットワークのルーティングテーブルは(IPアドレスをどのNICを経由させるか決定するテーブル)、ROUTE.EXEを使用します。

$ ROUTE.EXE print /4
===========================================================================
インターフェイス一覧
 24...XX XX XX XX XX XX ......Intel(R) Ethernet Converged Network Adapter X540-T2 #2
 57...XX XX XX XX XX XX ......Hyper-V Virtual Ethernet Adapter #2
 21...XX XX XX XX XX XX ......Hyper-V Virtual Ethernet Adapter #3
  1...........................Software Loopback Interface 1
 51...XX XX XX XX XX XX ......Hyper-V Virtual Ethernet Adapter
===========================================================================
IPv4 ルート テーブル
===========================================================================
アクティブ ルート:
ネットワーク宛先        ネットマスク          ゲートウェイ       インターフェイス  メトリック
          0.0.0.0          0.0.0.0     192.168.10.1    192.168.10.10    271
        127.0.0.0        255.0.0.0            リンク上         127.0.0.1    331
        127.0.0.1  255.255.255.255            リンク上         127.0.0.1    331
  127.255.255.255  255.255.255.255            リンク上         127.0.0.1    331
     172.24.208.0    255.255.240.0            リンク上      172.24.208.1    271
     172.24.208.1  255.255.255.255            リンク上      172.24.208.1    271
     192.168.10.0    255.255.255.0            リンク上     192.168.10.10    271
    192.168.10.10  255.255.255.255            リンク上     192.168.10.10    271
   192.168.10.255  255.255.255.255            リンク上     192.168.10.10    271
        224.0.0.0        240.0.0.0            リンク上         127.0.0.1    331
        224.0.0.0        240.0.0.0            リンク上     192.168.10.10    271
        224.0.0.0        240.0.0.0            リンク上      172.24.208.1    271
  255.255.255.255  255.255.255.255            リンク上         127.0.0.1    331
  255.255.255.255  255.255.255.255            リンク上     192.168.10.10    271
  255.255.255.255  255.255.255.255            リンク上      172.24.208.1    271
===========================================================================
固定ルート:
  ネットワーク アドレス          ネットマスク  ゲートウェイ アドレス  メトリック
          0.0.0.0          0.0.0.0     192.168.10.1     既定
===========================================================================
WSL1のネットワーク

WSL1の情報はこうなります。自ホストのIPアドレスを確認するには、ip コマンドを使用します。

$ ip addr show
略
57: eth4: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
    link/ether XX:XX:XX:XX:XX:XX
    inet 172.24.208.1/20 brd 172.24.223.255 scope global dynamic
       valid_lft forever preferred_lft forever
    inet6 fe80::略/64 scope link dynamic
       valid_lft forever preferred_lft forever
21: eth5: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
    link/ether XX:XX:XX:XX:XX:XX
    inet 192.168.10.10/24 brd 192.168.10.255 scope global dynamic
       valid_lft forever preferred_lft forever
    inet6 略/64 scope global dynamic
       valid_lft 13985sec preferred_lft 12185sec
    inet6 略/128 scope global dynamic
       valid_lft 13985sec preferred_lft 12185sec
    inet6 fe80::略/64 scope link dynamic
       valid_lft forever preferred_lft forever
1: lo: <LOOPBACK,UP> mtu 1500 group default qlen 1
    link/loopback 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope global dynamic
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host dynamic
       valid_lft forever preferred_lft forever

これらの情報は、Windows側での設定と同じIPアドレスを使用します。外部と接続されているのがeth5で、Windowsでの「vEthernet (external)」になります。

最近のLinixでは、ネットワークのルーティングを表示するのに、ip コマンドを使用します。WSL1では、Windowsのルーティングテーブルが表示されます。

$ ip route show
none 172.24.208.0/20 dev eth4  proto none  metric 256
none 172.24.208.1 dev eth4  proto none  metric 256
none 172.24.223.255 dev eth4  proto none  metric 256
none 224.0.0.0/4 dev eth4  proto none  metric 256
none 255.255.255.255 dev eth4  proto none  metric 256
none default via 192.168.10.1 dev eth5  proto none  metric 256
none 192.168.10.0/24 dev eth5  proto none  metric 256
none 192.168.10.10 dev eth5  proto none  metric 256
none 192.168.10.255 dev eth5  proto none  metric 256
none 224.0.0.0/4 dev eth5  proto none  metric 256
none 255.255.255.255 dev eth5  proto none  metric 256
none 127.0.0.0/8 dev lo  proto none  metric 256
none 127.0.0.1 dev lo  proto none  metric 256
none 127.255.255.255 dev lo  proto none  metric 256
none 224.0.0.0/4 dev lo  proto none  metric 256
none 255.255.255.255 dev lo  proto none  metric 256
WSL2のネットワーク

WSL2ではWindows側の仮想ブリッジを使用し、仮想ブリッジ以下のDHCPで割り振られたIPアドレスが使用されます。

$ ip addr show
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 XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX 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 XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 172.24.221.55/20 brd 172.24.223.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::略/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

ルーティングを見ると、以下のようになります。仮想ブリッジを使用しているため、Windowsのネットワークが表示されません。

default via 172.24.208.1 dev eth0
172.24.208.0/20 dev eth0 proto kernel scope link src 172.24.221.55
終わりに

今回は、WSL1とWSL2のネットワークの違いを説明しました。WSL1ではWindowsと同じネットワークを使用することで、Windowsと同様にネットワーク接続でき、用意にネットワークサービスを用意できました。WSL2ではネットワークが分離され、Windowsの外にサービスを提供するのにポートフォワードなどの工夫が必要になります。次回は、bashの紹介しきれていない機能の説明に戻ります。次回をお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes