Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


wsl2:interop

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン 両方とも次のリビジョン
wsl2:interop [2020/12/27 11:56]
y2sunlight [WLS2の仮想ネットワーク]
wsl2:interop [2020/12/27 19:28]
y2sunlight [WSL2のリスニングポート]
行 79: 行 79:
 {{ :wsl2:interop:wsl2-network01.svg |}} {{ :wsl2:interop:wsl2-network01.svg |}}
  
-  * TODO1 +WSL2は、[[https://ja.wikipedia.org/wiki/Hyper-V|Hyper-V]]が管理する仮想マシン環境で動作します。このとき物理ハードウェアの上で動いているOSをホストOS、仮想マシン内で動作しているOSをゲストOSと呼ぶ事にします。そして、ホストマシンには物理NICが、仮想マシンには仮想NICが提供されています。
-  * TODO2 +
-  * TODO3 +
-  * TODO4+
  
-WSL2は、[[https://ja.wikipedia.org/wiki/Hyper-V|Hyper-V]]が管理する仮想マシン環境で動作します。このとき物理ハードウェアの上で動いているOSをホストOS、仮想マシン内で動作しているOSをゲストOSと呼ぶ事にします。そして、ホストOSとゲストOSの間にはHyper-Vの仮想ネットワークが構築され、仮想マシンにて仮想NICが提供されます。+ホストマシンとゲストマシンの間にはHyper-Vの仮想ネットワークが構築されます。この仮想的ネットワークはホストマシンと仮想マシンが共接続た状態を作ります。
  
-この仮想ネットワークには、仮想マシンとホストOS共に接続した状態をる。Windows NAT(WinNAT)機能設定すことで、仮想マシン側からホストWindowsインターネット接続を利用することも可能だ+WSL2を起動すると、「vEthernet(WSL)」という仮想ネットワークに接続するホスト側のネットワークアダプター(NIC)が作られすが仮想ネットワーク構成している仮想スイッチは、ホストOSのネットワーク機能で見ることはできません
  
-WSL 2を起動すると、[コントールパネル]-[ネットワークと共有センター]-[設定の変更]に、「vEthernet(WSL)」という「Hyper-V Virtual Ethernet Adapter」表示さるようになる。これがWSL 2用の内部ネットワークに接続するホストWindows側ネットワークアダプターなる+仮想ネットワークのIPドレスはライベトアドレス割り当てらホストOS再起動よって変更されます
  
-WSL 2を起動するとWin32側(ホストWindows側)に「vEthernet(WSL)」という仮想ネットワクアダプターが表示されるようになる。 +> 複数のWSL2ディストリビュションは同じネットワーク名前空間を使用し、ネットワークの分離はありま''参考'' https://github.com/microsoft/WSL/issues/4304
- Hyper-Vの仮想ネットワークや仮想スイッチ自体はホストWindowsのネットワーク関連機能で見ることができない。そもそもWindows 10には、Windows VistaやWindows 7にったネットワーク(ネットワークフルマップ)を表示さる機能がなく、ネットワークに接続しているNIC(ネットワークアダプター)のみが見える状態だ+
  
-また、内部ネットワークに関しては、Windows NAT(WinNAT)を設定することで、仮想マシンからのインターネットアクセスが可能になる。+\\
  
-なお、Hyper-Vの仮想ネットワークでは、デフォルトで「プライベートアドレス」が割り当てられる。プライベートアドレスとは、インターネット側には参加できないものの、社内LANのような組織内部のネットワークで自由に使用できる、特別なIPアドレスである。複数の仮想マシンが個別の仮想スイッチを使う可能性があるため、Windows 10のHyper-Vでは、IPv4アドレスとして「172.16.0.0~172.31.255.255」までのプライベートアドレスを使い、これを複数に分割して利用している。 
  
 +=== WSL2のリスニングポート ===
 +
 +WSL2では、仮想マシン側でリスニングされているポート番号と同じポート番号を、ホスト側で動作しているwslhost.exeがリスニングします。
 +
 +例えば、仮想マシン側でポート80をリスニングしていると、ホスト側でも wslhost.exe がポート80をリスニングします。そして、 wslhost.exe は、受け取ったパケットを仮想ホスト側の同じポート番号に転送します。つまり、ホスト側がlocalhostの(仮想ホスト側がリスニングしていると同じ)ポート番号にアクセスすると、仮想ホスト側のネットワークサービスからは、eth0からのアクセスのように見えます。
  
-> 複数のWSL2ディストリビューションは同じネットワーク名前空間を使用し、ネットワークの分離はありません。''参考'' https://github.com/microsoft/WSL/issues/4304 
  
-\\ 
  
 ==== WLS2側からWindows側のネットワークにアクセスする ==== ==== WLS2側からWindows側のネットワークにアクセスする ====
行 117: 行 115:
  
 > TODO: > TODO:
 +
 + IPv4では、単独のアドレスではなく、127.0.0.0という特殊なネットワーク全てがlocalhostで、慣例的に「127.0.0.1」を自分自身のIPアドレスの数値表現として使う(ただし「127.0.0.0」に属するIPアドレスは全て自分自身を表す)。基本的にどんなシステムでも、localhostという名前は、DNSサーバなどの外部の名前解決プロトコルを使わずに「127.0.0.1」に解決できる。IPv6では、「::1」(下位1ビットのみが「1」で後は「0」のアドレス)が単独でlocalhostとして指定されており、IPv4のようにlocalhostはネットワークになっていない。
 +
 + 通常のIPアドレスやドメイン名を指定できるところであれば、localhostは指定可能だ。例えば、Webサーバが動作しているマシンで、Webブラウザから「http://localhost/」とすれば、同じマシンで動作しているWebサーバにアクセスできる。
 +
 + WSL 2が稼働しているとき、特定のポート番号で待ち受け(リッスン)している、HTTPサーバなどのTCP/IPアプリケーションに対しては、Win32側(ホストWindows側)からは、localhostを接続先として指定できる。「http://localhost:<ポート番号>/」でWSL 2側のHTTPサーバにアクセスが可能になる。
  
 \\ \\
wsl2/interop.txt · 最終更新: 2020/12/27 20:17 by y2sunlight