共用方式為


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 主機作業系統與 IoT Edge for Linux on Windows (EFLOW) 虛擬機器之間設定網路。 EFLOW 會使用 CBL-Mariner Linux 虛擬機器來執行 IoT Edge 模組。 如需有關 EFLOW 結構的詳細資訊,請參閱什麼是 Azure IoT Edge for Linux on Windows

網路

若要在 Windows 主機作業系統與 EFLOW 虛擬機器之間建立通訊通道,我們會使用 Hyper-V 網路堆疊。 如需 Hyper-V 網路連接的詳細資訊,請參閱 Hyper-V 網路連接基本概念。 EFLOW 中的基本網路很簡單,其中使用兩個部分:虛擬交換器和虛擬網路。

在 Windows 用戶端 SKU 上建立基本網路最簡單的方式,就是使用已由 Hyper-V 功能建立的預設交換器。 在EFLOW部署期間,如果未使用 -vSwitchName-vSwitchType 旗標指定任何特定的虛擬交換器,則會使用 預設參數建立虛擬機。

Windows Server SKU 裝置上的網路會比較複雜,因為沒有可用的預設交換器。 不過,我們有建立 Azure IoT Edge for Linux on Windows 虛擬交換器的完整指南。

若要處理不同類型的網路,您可以使用不同類型的虛擬交換器,並新增多個虛擬網路介面卡。

虛擬交換器選項

EFLOW 支援兩種類型的 Hyper-V 虛擬交換器:內部外部。 這會在部署 EFLOW 之前建立,而您會在建立時選擇想要的其中一個。 您可以針對 Windows PowerShell 使用 Hyper-V 管理員或 Hyper-V 模組,來建立和管理虛擬交換器。 如需如何建立虛擬交換器的詳細資訊,請參閱建立 Hyper-V 虛擬機器的虛擬交換器

您可以在建立虛擬交換器之後,對其進行一些變更。 例如,您可以將現有的交換器變更為不同的類型,但這樣做可能會影響連線到該交換器的 EFLOW 虛擬機器網路功能。 因此,除非發生錯誤或需要進行某些測試,否則不建議變更虛擬交換器設定。

根據 EFLOW VM 部署在 Windows 用戶端 SKU 或 Windows Server SKU 裝置,我們可支援不同類型的交換器,如下表所示。

虛擬交換器類型 Windows 用戶端 SKU Windows Server SKU
外部 用戶端上的外部 伺服器外部
內部 - 伺服器內部
預設交換器 用戶端上的預設值 -
  • 外部虛擬交換器 - 繫結至實體網路介面卡,以連線至有線實體網路。 其可讓虛擬機器存取實體網路,進而與外部網路上的裝置通訊。 此外,還能讓相同 Hyper-V 伺服器上的虛擬機器彼此通訊。

  • 內部虛擬交換器 - 連線至只有主機 (其具有虛擬交換器) 上執行的虛擬機器才能使用的網路,以及主機與虛擬機器之間的網路。

    注意

    預設交換器是當 Hyper-V 在 Windows 用戶端 SKU 中啟用之後,依預設建立的特定內部虛擬交換器。 虛擬交換器已經有用於 IP 指派的 DHCP 伺服器、已啟用的網際網路連線共用 (ICS),以及 NAT 資料表。 基於 EFLOW 用途,預設交換器是虛擬內部交換器,不需要進一步設定即可使用。

IP 位址配置

若要啟用 EFLOW VM 網路 IP 通訊,虛擬機器必須有指派的 IP 位址。 此 IP 位址可由兩種不同的方法設定:靜態 IPDHCP

視所使用的虛擬交換器類型而定,EFLOW VM 支援不同的 IP 配置,如下表所示。

虛擬交換器類型 靜態 IP DHCP
外部 具有靜態IP的外部 使用 DHCP 的外部
內部 使用靜態IP的內部 使用 DHCP 的內部
預設交換器 - 使用 DHCP 的預設值
  • 靜態 IP - 此 IP 位址會在安裝期間永久指派給 EFLOW VM,而且不會在 EFLOW VM 或 Windows 主機重新開機之間變更。 靜態 IP 位址通常有兩個版本:IPv4 和 IPv6;不過,EFLOW 僅支援 IPv4 位址的靜態 IP。 在使用靜態 IP 的網路上,網路上的每個裝置都有其位址,而且沒有重疊。 在 EFLOW 安裝期間,您必須輸入 EFLOW VM IP4 位址 (-ip4Address)、IP4 前置長度 (-ip4PrefixLength),以及預設閘道 IP4 位址 (-ip4GatewayAddress)。 這三個參數都必須輸入正確的設定。

    例如,如果您想要部署的 EFLOW VM 使用名為 ExternalEflow外部虛擬交換器,且靜態 IP 位址為 192.168.0.100、預設閘道為 192.168.0.1 和前置長度為 24,則需要下列部署命令

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

    警告

    使用靜態 IP 時,必須使用三個參數 (ip4Addressip4GatewayAddresip4PrefixLength)。 此外,如果 IP 位址無效、由網路上的另一個裝置使用或閘道位址不正確,則 EFLOW 安裝可能會失敗,因為 EFLOW VM 無法取得 IP 位址。

  • DHCP - 與靜態 IP 相反,使用 DHCP 時,EFLOW 虛擬機器會以動態 IP 位址指派,而這是可能變更的位址。 網路必須設定 DHCP 伺服器並運作,才能指派動態 IP 位址。 DHCP 伺服器會將空的 IP 位址指派給 EFLOW VM,以及連線到網路的其他項目。 因此,使用 DHCP 部署 EFLOW 時,不需要 IP 位址、閘道位址或前置長度,因為 DHCP 伺服器會提供所有資訊。

    警告

    使用 DHCP 部署 EFLOW 時,DHCP 伺服器必須存在於連線到 EFLOW VM 虛擬交換器的網路中。 如果沒有 DHCP 伺服器,EFLOW 安裝將會失敗,因為 VM 無法取得 IP 位址。

DNS

網域名稱系統 (DNS) 會將人類可閱讀的網域名稱 (例如 www.microsoft.com) 轉譯為為機器可讀取的 IP 位址 (例如 192.0.2.44)。 EFLOW 虛擬機器會使用 systemd (系統和服務管理員),因此 DNS 或名稱解析服務會透過系統解析的服務提供給本機應用程式和服務。

根據預設,EFLOW VM DNS 設定檔包含本機存根 127.0.0.53 以作為唯一的 DNS 伺服器。 這會重新導向至 /etc/resolv.conf 檔案,以用來新增系統所使用的名稱伺服器。 本機存根是在本機執行的 DNS 伺服器,可解析 DNS 查詢。 在某些情況下,這些查詢會轉送到網路中的其他 DNS 伺服器,然後在本機快取。

您可以設定 EFLOW 虛擬機器以使用特定的 DNS 伺服器或伺服器清單。 若要這麼做,您可使用 Set-EflowVmDnsServers PowerShell Cmdlet。 如需有關 DNS 設定的詳細資訊,請參閱適用於 IoT Edge for Linux on Windows 的 PowerShell 函式

若要檢查指派給 EFLOW VM 的 DNS 伺服器,請從 EFLOW VM 內部使用命令:resolvectl status。 命令的輸出會顯示針對每個介面所設定的 DNS 伺服器清單。 特別是,請務必檢查 eth0 介面狀態,這是 EFLOW VM 通訊的預設介面。 此外,請務必檢查清單中 [目前 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 之間的流量,或將資料面流量從管理面通訊中分隔開來。

例如,有許多產業 IoT 案例需要將 EFLOW 虛擬機器連線到非管制區域 (DMZ),以及連線到所有 OPC UA 合規裝置的離線網路。 這只是將多個 NIC 連結至 EFLOW VM 所支援的多個案例之一。

如需有關多個 NIC 的詳細資訊,請參閱多個 NIC 支援

警告

使用 EFLOW 的多個 NIC 功能時,您可以設定不同的路由優先順序。 根據預設,EFLOW 會為每個指派給 VM 的 ehtX 介面建立一個預設路由,並指派隨機優先順序。 如果所有介面都連線到網際網路,隨機優先順序可能不是問題。 不過,如果其中一個 NIC 連線到離線網路,您可以將線上 NIC 的優先順序設定成高於離線 NIC,讓 EFLOW VM 可連線到網際網路。 如需有關自訂路由的詳細資訊,請參閱 EFLOW 路由

下一步

深入了解 Azure IoT Edge for Linux on Windows 安全性

了解如何管理 EFLOW 網路:Azure IoT Edge for Linux on Windows 的網路設定