共用方式為


適用於 Azure 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

本文將協助您決定哪一個網路選項最適合您的情況,並提供 IoT Edge for Linux on Windows (EFLOW) 設定要求的深入解析。

若要透過網路將 IoT Edge for Linux on Windows (EFLOW) 連線到主機、連線到 Windows 主機上的其他虛擬機器,以及外部網路上的其他裝置/位置,則必須據以設定虛擬機器網路功能。

在 Windows 用戶端 SKU 上建立基本網路最簡單的方式,就是使用啟用 Windows Hyper-V 功能時建立的預設交換器。 但是,Windows Server SKU 裝置上的網路會比較複雜,因為沒有可用的預設交換器。 如需為 Windows Server 建立虛擬交換器的詳細資訊,請參閱在 Windows 上建立 Linux 的虛擬交換器

如需 EFLOW 網路概念的詳細資訊,請參閱 IoT Edge for Linux on Windows 網路

設定 VM 虛擬交換器

部署 EFLOW 虛擬機器之前的第一步是判斷您使用的虛擬交換器類型。 若要深入了解 EFLOW 支援的虛擬交換器,請參閱 EFLOW 虛擬交換器選擇。 一旦決定要使用的虛擬交換器類型後,請務必正確建立虛擬交換器。 如需如何建立虛擬交換器的詳細資訊,請參閱建立 Hyper-V 虛擬機器的虛擬交換器

注意

如果您使用 Windows 用戶端,而且想要使用預設交換器,則不需要建立任何交換器,也不需要 -vSwitchType-vSwitchName 參數。

注意

如果您在 VMware 基礎結構和外部交換器內使用 Windows 虛擬機器,請參閱 EFLOW 巢狀虛擬化

建立虛擬交換器後和開始部署之前,請確定您的虛擬交換器名稱和類型已正確設定,並且列在 Windows 主機 OS 底下。 若要列出 Windows 主機 OS 中的所有虛擬交換器,請在提升權限的 PowerShell 工作階段中,使用下列 PowerShell Cmdlet:

Get-VmSwitch

視 Windows 主機的虛擬交換器而定,輸出應該類似下列內容:

Name           SwitchType NetAdapterInterfaceDescription
----           ---------- ------------------------------
Default Switch Internal
IntOff         Internal
EFLOW-Ext      External

若要使用特定虛擬交換器 (內部外部),請確定您指定的參數正確:-vSwitchNamevSwitchType。 例如,如果您想要使用名為 EFLOW-Ext外部交換器部署 EFLOW VM,請在提升權限的 PowerShell 工作階段中使用下列命令:

Deploy-Eflow -vSwitchType "External" -vSwitchName "EFLOW-Ext"

設定 VM IP 位址配置

決定您所使用的虛擬交換器類型之後,第二個步驟是決定虛擬交換器的 IP 位址配置類型。 如需有關 IP 配置選項的詳細資訊,請參閱 EFLOW 支援的 IP 配置。 根據您使用的虛擬交換器類型而定,務必使用支援的 IP 位址配置機制。

根據預設,如果未設定「靜態 IP」位址,EFLOW VM 會嘗試使用 DHCP 將 IP 位址配置給虛擬交換器。 確定虛擬交換器網路上有 DHCP 伺服器;如果沒有,EFLOW VM 安裝就無法配置 IP 位址,安裝會失敗。 如果您使用預設交換器,則不需要檢查 DHCP 伺服器,因為虛擬交換器預設已有 DHCP。 不過,如果使用內部外部虛擬交換器,您可以使用下列步驟進行檢查:

  1. 開啟命令提示字元。
  2. 顯示所有 IP 設定和資訊
    ipconfig /all
    
  3. 如果您使用外部虛擬交換器,請檢查用來建立虛擬交換器的網路介面。 如果您使用內部虛擬交換器,請尋找用於交換器的名稱。 找到交換器之後,請檢查 DHCP Enabled 是否顯示 [是] 或 [否],然後檢查 DHCP server 位址。

如果您使用「靜態 IP」,則必須在 EFLOW 部署期間指定三個參數:-ip4Addressip4GatewayAddressip4PrefixLength。 如果一個參數遺失或不正確,EFLOW VM 安裝就無法配置 IP 位址,安裝會失敗。 如需有關 EFLOW VM 部署的詳細資訊,請參閱適用於 IoT Edge for Linux on Windows 的 PowerShell 函式。 例如,如果您想要使用名為 EFLOW-Ext外部交換器來部署 EFLOW VM,以及使用靜態 IP 設定 (IP 位址等於 192.168.0.2)、閘道 IP 位址等於 192.168.0.1 且 IP 前置長度等於 24,請在提升權限的 PowerShell 工作階段中使用下列命令:

Deploy-Eflow -vSwitchType "External" -vSwitchName "EFLOW-Ext" -ip4Address "192.168.0.2" -ip4GatewayAddress "192.168.0.1" -ip4PrefixLength "24"

提示

重新開機時,EFLOW VM 會針對部署期間使用的主要虛擬交換器保留相同的 MAC 位址。 如果您使用 DHCP MAC 位址保留,您可以使用此 PowerShell Cmdlet 取得主要虛擬交換器 MAC 位址:Get-EflowVmAddr

檢查 IP 配置

有多種方式可以檢查配置給 EFLOW VM 的 IP 位址。 首先,使用提升權限的 PowerShell 工作階段,使用 EFLOW Cmdlet:

Get-EflowVmAddr

輸出應該會與下列內容類似:

C:\> Get-EflowVmAddr

[03/31/2022 12:54:31] Querying IP and MAC addresses from virtual machine (DESKTOP-EFLOW)

 - Virtual machine MAC: 00:15:5d:4e:15:2c
 - Virtual machine IP : 172.27.120.111 retrieved directly from virtual machine
00:15:5d:4e:15:2c
172.27.120.111

另一種方式是使用 Connect-Eflow Cmdlet 從遠端連線到 VM,然後您可以使用 ifconfig eth0 bash 命令,並檢查 eth0 介面。 輸出應如下所示:

eth0      Link encap:Ethernet  HWaddr 00:15:5d:4e:15:2c
          inet addr:172.27.120.111  Bcast:172.27.127.255  Mask:255.255.240.0
          inet6 addr: fe80::215:5dff:fe4e:152c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5636 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2214 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:766832 (766.8 KB)  TX bytes:427274 (427.2 KB)

設定 VM DNS 伺服器

根據預設,EFLOW Linux 虛擬機器沒有 DNS 設定。 使用 DHCP 的部署會嘗試取得 DHCP 伺服器傳播的 DNS 設定。 如果您使用靜態 IP,則必須手動設定 DNS 伺服器。 如需有關 EFLOW VM DNS 的詳細資訊,請參閱 EFLOW DNS 設定

若要檢查預設介面所使用的 DNS 伺服器 (eth0),您可以使用下列命令:

resolvectl | grep eth0 -A 8

輸出應該會與下列內容類似。 此檢查清單中 [目前 DNS 伺服器] 和 [DNS 伺服器] 欄位的 IP 位址。 如果沒有 IP 位址,或 IP 位址不是有效的 DNS 伺服器 IP 位址,則 DNS 服務將無法運作。

Link 2 (eth0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 172.27.112.1
         DNS Servers: 172.27.112.1

如果您需要手動設定 DNS 伺服器位址,您可以使用 EFLOW PowerShell Cmdlet Set-EflowVmDNSServers。 如需有關 EFLOW VM DNS 設定的詳細資訊,請參閱適用於 IoT Edge for Linux on Windows 的 PowerShell 函式

檢查 DNS 解析

有多種方式可以檢查 DNS 解析。

首先,從 EFLOW VM 內部,使用 resolvectl query 命令來查詢特定 URL。 例如,若要檢查位址 microsoft.com 的名稱解析是否正常運作,請使用:

resolvectl query microsoft.com

輸出應如下所示:

PS C:\> resolvectl query
microsoft.com: 40.112.72.205
               40.113.200.201
               13.77.161.179
               104.215.148.63
               40.76.4.15

-- Information acquired via protocol DNS in 1.9ms.
-- Data is authenticated: no

您也可以使用 dig 命令來查詢特定 URL。 例如,若要檢查位址 microsoft.com 的名稱解析是否正常運作,請使用:

dig microsoft.com

輸出應如下所示:

PS C:\> dig microsoft.com
; <<>> DiG 9.16.22 <<>> microsoft.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36427
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;microsoft.com.                 IN      A

;; ANSWER SECTION:
microsoft.com.          0       IN      A       40.112.72.205
microsoft.com.          0       IN      A       40.113.200.201
microsoft.com.          0       IN      A       13.77.161.179
microsoft.com.          0       IN      A       104.215.148.63
microsoft.com.          0       IN      A       40.76.4.15

;; Query time: 11 msec
;; SERVER: 127.0

下一步

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

隨時掌握最新的 IoT Edge for Linux on Windows 更新