IoT Edge for Linux on Windows ネットワーク

適用対象:IoT Edge 1.4 チェックマーク IoT Edge 1.4

重要

サポートされているリリースは、IoT Edge 1.5 LTS と IoT Edge 1.4 です。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日にサポートが終了します。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

この記事では、Windows ホスト OS と IoT Edge for Linux on Windows (EFLOW) 仮想マシン間のネットワークを構成する方法について説明します。 EFLOW は、IoT Edge モジュールを実行するために CBL-Mariner Linux 仮想マシンを使います。 EFLOW アーキテクチャの詳細については、「Azure IoT Edge for Linux on Windows とは」を参照してください。

ネットワーク

Windows ホスト OS と EFLOW 仮想マシン間の通信チャネルを確立するには、Hyper-V ネットワーク スタックを使います。 Hyper-V ネットワークの詳細については、「Hyper-V ネットワークの基本」を参照してください。 EFLOW の基本的なネットワークはシンプルです。仮想スイッチと仮想ネットワークという 2 つのパーツを使います。

Windows クライアント SKU で基本的なネットワークを確立する最も簡単な方法は、Hyper-V 機能によって既に作成されている既定のスイッチを使用することです。 EFLOW のデプロイ時に、-vSwitchName-vSwitchType のフラグを使って特定の仮想スイッチを指定しない場合、仮想マシンは既定のスイッチを使って作成されます。

Windows Server SKU デバイスでは、既定のスイッチがないため、ネットワークは少し複雑になります。 ただし、「Azure IoT Edge for Linux on Windows の仮想スイッチの作成」に関する包括的なガイドがあります。

さまざまなネットワークを処理するために、さまざまな仮想スイッチを使い、複数の仮想ネットワーク アダプターを追加することができます。

仮想スイッチの選択肢

EFLOW は、内部外部という 2 種類の Hyper-V 仮想スイッチをサポートしています。 EFLOW デプロイの前に作成するときに、そのいずれかを選びます。 Hyper-V マネージャーまたは Windows PowerShell 用の Hyper-V モジュールを使用して、仮想スイッチを作成および管理できます。 仮想スイッチの作成の詳細については、「Hyper-V 仮想マシンの仮想スイッチを作成する」を参照してください。

仮想スイッチは、作成後にいくつかの変更を加えることができます。 たとえば、既存のスイッチを別の種類に変更することはできますが、その場合は、そのスイッチに接続されている EFLOW 仮想マシンのネットワーク機能に影響があります。 そのため、間違えた場合や何かをテストする必要がある場合を除き、仮想スイッチの構成を変更することはお勧めしません。

次の表に示すように、EFLOW VM のデプロイ先が Windows クライアント SKU か Windows サーバー SKU デバイスかに応じて、サポートされるスイッチの種類は異なります。

仮想スイッチの種類 Windows クライアント SKU Windows サーバー SKU
外部品目番号 クライアントで外部 サーバーで外部
内部 - サーバーで内部
既定のスイッチ クライアントで既定 -
  • 外部仮想スイッチ - 物理ネットワーク アダプターにバインドすることによって、有線の物理ネットワークに接続します。 物理ネットワークにアクセスして、外部ネットワーク上のデバイスと通信するアクセス権を仮想マシンに付与します。 さらに、同じ Hyper-V サーバー上の仮想マシンの相互の通信を許可します。

  • 内部仮想スイッチ - 仮想スイッチを持つホストで実行されている仮想マシン、およびホストと仮想マシンの間でのみ使用できるネットワークに接続します。

    Note

    既定のスイッチは、Windows クライアント SKU で Hyper-V が有効になると、既定で作成される特定の内部仮想スイッチです。 この仮想スイッチには、IP 割り当て用の DHCP サーバー、有効なインターネット接続共有 (ICS)、NAT テーブルが既に含まれています。 EFLOW の目的では、既定のスイッチは仮想内部スイッチであり、追加の構成なしで使用できます。

IP アドレスの割り当て

EFLOW VM のネットワーク IP 通信を有効にするには、仮想マシンに IP アドレスを割り当てる必要があります。 この IP アドレスは、静的 IPDHCP の 2 種類の方法で構成できます。

次の表に示すように、使う仮想スイッチの種類に応じて、EFLOW VM は異なる IP 割り当てをサポートします。

仮想スイッチの種類 [静的 IP] [DHCP]
外部品目番号 静的 IP で外部 DHCP で外部
内部 静的 IP で内部 DHCP で内部
既定のスイッチ - DHCP で既定
  • 静的 IP - この IP アドレスは、インストール時に EFLOW VM に永続的に割り当てられ、EFLOW VM または Windows ホストの再起動時も変わりません。 通常、静的 IP アドレスには IPv4 と IPv6 という 2 つのバージョンがあります。一方、EFLOW は IPv4 アドレスの静的 IP のみをサポートしています。 静的 IP を使うネットワーク上では、ネットワーク上の各デバイスのアドレスは重複しません。 EFLOW のインストール時には、EFLOW VM IP4 アドレス (-ip4Address)、IP4 プレフィックス長 (-ip4PrefixLength)、既定のゲートウェイ IP4 アドレス (-ip4GatewayAddress) を入力する必要があります。 正しく構成するには、3 つのパラメーターをすべての入力する必要があります。

    たとえば、静的 IP アドレスが 192.168.0.100ExternalEflow という名前の外部仮想スイッチ、既定のゲートウェイ 192.168.0.1、プレフィックス長 24 を使って EFLOW VM をデプロイする場合は、次のデプロイ コマンドが必要です。

    Deploy-Eflow -vSwitchName "ExternalEflow" -vswitchType "External" -ip4Address 192.168.0.100 -ip4GatewayAddress 192.168.0.1 -ip4PrefixLength 24
    

    警告

    静的 IP を使う場合、3 つのパラメーター (ip4Addressip4GatewayAddresip4PrefixLength) を使う必要があります。 また、IP アドレスが無効な場合、ネットワーク上の他のデバイスに使われている場合、ゲートウェイ アドレスが正しくない場合、EFLOW VM が IP アドレスを取得できないため、EFLOW のインストールに失敗する可能性があります。

  • DHCP - 静的 IP とは対照的に、DHCP を使う場合、EFLOW 仮想マシンには動的 IP アドレスが割り当てられます。これは変わる可能性のあるアドレスです。 動的 IP アドレスを割り当てるには、構成済みで動作している DHCP サーバーがネットワークに必要です。 DHCP サーバーは、EFLOW VM とネットワークに接続されている他の項目に空き IP アドレスを割り当てます。 そのため、DHCP を使って EFLOW をデプロイする場合、DHCP サーバーがすべての情報を提供するため、IP アドレス、ゲートウェイ アドレス、プレフィックス長は必要ありません。

    警告

    DHCP を使って EFLOW をデプロイする場合、EFLOW VM 仮想スイッチに接続されたネットワーク内に DHCP サーバーが存在する必要があります。 DHCP サーバーが存在しない場合、VM は IP アドレスを取得できないため、EFLOW のインストールは失敗します。

DNS

ドメイン ネーム システム (DNS) は、人間が判読できるドメイン名 (たとえば www.microsoft.com) を機械が判読できる IP アドレス (たとえば 192.0.2.44) に変換するシステムです。 EFLOW 仮想マシンは systemd (システムおよびサービス マネージャー) を使っているため、DNS または名前解決サービスは systemd-resolved サービスを介してローカル アプリケーションとサービスに対して提供されます。

既定では、EFLOW VM の DNS 構成ファイルには、唯一の DNS サーバーとしてローカル スタブ 127.0.0.53 が含まれています。 これは /etc/resolv.conf ファイルにリダイレクトされ、システムが使うネーム サーバーを追加するために使われます。 ローカル スタブは、DNS クエリを解決するためにローカルで実行される DNS サーバーです。 場合によっては、これらのクエリはネットワーク上の別の DNS サーバーに転送され、次にローカルにキャッシュされます。

特定の DNS サーバー、またはサーバーの一覧を使うように EFLOW 仮想マシンを構成できます。 これを行うには、Set-EflowVmDnsServers PowerShell コマンドレットを使用できます。 DNS の詳細については、「IoT Edge for Linux on Windows 用の PowerShell 関数」を参照してください。

EFLOW VM に割り当てられている DNS サーバーを確認するには、EFLOW VM の内部から、resolvectl status コマンドを使います。 コマンドの出力には、各インターフェイスに構成されている DNS サーバーの一覧が表示されます。 特に、EFLOW VM の通信の既定インターフェイスである eth0 インターフェイスの状態を確認することが重要です。 また、必ず一覧の [現在の DNS サーバー] フィールドと [DNS サーバー] フィールドの IP アドレスを確認します。 IP アドレスがない場合、または IP アドレスが有効な DNS サーバー IP アドレスでない場合、DNS サービスは機能しません。

resolvectl コマンドのサンプル出力を示すコンソールのスクリーンショット。

静的 MAC アドレス

Hyper-V を使うと、仮想マシンを静的または動的な MAC アドレスで仮想マシンを作成できます。 EFLOW 仮想マシンの作成時に、MAC アドレスはランダムに生成され、ローカルに格納され、仮想マシンまたは Windows ホストを再起動しても同じ MAC アドレスが維持されます。 EFLOW 仮想マシンの MAC アドレスを照会するには、次のコマンドを使います。

Get-EflowVmAddr

複数のネットワーク インターフェイス カード (NIC)

複数の NIC を必要とするネットワーク仮想アプライアンスとシナリオは多数あります。 EFLOW 仮想マシンは、複数の NIC のアタッチをサポートしています。 複数の NIC を使うと、ネットワーク トラフィックをより適切に管理できます。 また、フロントエンド NIC とバックエンド NIC のトラフィックを分離することや、管理プレーンの通信からデータ プレーンのトラフィックを分離することもできます。

たとえば、EFLOW 仮想マシンを非武装地帯 (DMZ) や、すべての OPC UA 準拠デバイスが接続されているオフライン ネットワークに接続する必要がある産業用 IoT シナリオは多数あります。 これは、EFLOW VM に複数の NIC をアタッチすることでサポートできる複数のシナリオの 1 つにすぎません。

複数の NIC の詳細については、複数の NIC のサポートに関する記事を参照してください。

警告

EFLOW の複数の NIC 機能を使う場合、異なるルートの優先順位を設定したい場合があります。 既定では、EFLOW は VM に割り当てられた ehtX インターフェイスごとに 1 つの既定ルートを作成し、ランダムな優先度を割り当てます。 すべてのインターフェイスをインターネットに接続する場合、ランダムな優先順位は問題にならない可能性があります。 ただし、NIC のいずれかを "オフライン" のネットワークに接続する場合、EFLOW VM をインターネットに接続するために、"オフライン" の NIC よりも "オンラインの" NIC を優先することがあります。 カスタム ルーティングの詳細については、EFLOW のルーティングに関する記事を参照してください。

次のステップ

Windows セキュリティ上の Linux 用 Edge Azure IoTの詳細を参照してください。

EFLOW ネットワークの構成方法については、「Azure IoT Edge for Linux on Windows のネットワーク構成」を確認します