年末まで@1か月!来年気持ちよく迎えられるようにお掃除はじめちゃいましょう!
今年もやっとしつつ放置していた Windows内のネットワークがどうなっているのか? を整理しようと思います。
なぜWindows内部のネットワークを知る必要があるか?
昨今ではDockerやWSL2( WSL1 はもう古いので無視!)など、仮想的に存在するものがあり、通信が出来ない時に原因が見えにくい。Google先生やGPT先生に聞いても、通信できない要因は1つではないため、原因を究明出来る力をつけるべきなのである。
こうする事で あれ?Docker起動したから?WSLから外部へ通信できぬ! とかそんな謎めいた状況に陥っても自己解決が可能なのだ!
では、私のWindowsの設定環境を例にしながら今日はWSL(Ubuntu)から外部に通信する経路を追ってみようと思います。
私のWindowsはこうなってます
まず結論からいうと、こんな構成になっています。
こういうの見て拒否反応起こす人もいるかもしれませんが、大丈夫。コワくない!
私もサーバサイドエンジニア。インフラとかちょっとしか知らないしね!
それに、この図をみたら、Ubuntu~物理NIC[ WiFi ]までの経路が見えるんじゃないでしょうか。
では実際にIPアドレスや設定を確認する方法を紹介していきましょう。
まずは、Hyper-Vから確認しましょう
Hyper-VのWSLの仮想スイッチを確認しよう
Hyper-Vの上記のところから、仮想スイッチの設定が可能です。
WSLの仮想スイッチが上記の画像のようになっている事が確認できます。
ここでは内部ネットワーク
となっています。だから最初に説明したような繋がりになるんですね!
では 外部ネットワークならどうなるか? わかりますか?
答えは、**仮想スイッチから物理NIC [WiFi]**に線が引かれます。(バインドと呼びます)
※正しくは外部ネットワークの下にあるプルダウンで選んだNICに線が引かれる。
※ 「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」 のチェックを外すと、仮想スイッチと仮想NIC [vEthernet(WSL)]の線が切れます。
では線の繋がりがわかった所で、次はWindows OS側の設定を確認しましょう!
WindowsOS側のネットワークを確認
ipconfig
コマンドで確認が可能です。構成図にあったIPアドレスの情報が出てきましたね!
ちなみにサブネットマスクの範囲が172.18.96.1/20
となっているのがわかりますが、これは172.18.96.0/20
と同じですね。構成図と違って見えますがそういうもんです。
最後にWSL2のネットワークを見てみましょう!
WSL2(Ubuntu)のネットワークを確認
右下にアーニャちゃんがこんにちわ!背景画像が設定できるUbuntuは素敵ですね!
画像の通り、
- IPアドレスは
172.18.110.165
ですね! - eth0のサブネットマスクは172.18.110.165/20 なので172.18.96.0/20と同じですね!
また、通信経路を確認した結果
google.comへの通信経路は172.18.96.1(WindowsOS側の仮想NIC)
を経由して172.19.16.1(物理NIC[WiFi])
と流れている事がわかりました。
最後に
駆け足でしたが、WSLの通信がどう流れているか少しは理解できたでしょうか?
続編も近々書く予定でいますので、こうご期待!
次回は、
「え?WSL2ってUbuntuとかCentOSとかに同じIPアドレス振られるの?」
「ホストOSからWSL2への通信はどうなってるの?」そんな所を見ていければなと思います!