CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回は、WSL2でのサービスいついて説明しました。今回はWSL2で変わったネットワークについて説明します。
WSL1では、扱うネットワークが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の情報はこうなります。自ホストの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では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