Share via


使用 PowerShell 從不同的部署模型連接虛擬網路

本文可協助您將傳統 VNet 連線到 Resource Manager VNet,以允許位於不同部署模型中的資源彼此通訊。 本文中的步驟會使用 PowerShell。

本文適用於已經有使用傳統 (舊版) 部署模型建立 VNet,而現在想要將傳統 VNet 連線到使用最新部署模型建立的 VNet 的客戶。 如果您還沒有舊版 VNet,請改為參照建立 VNet 對 VNet 連線一文。

架構

將傳統 VNet 連線至 Resource Manager VNet,類似於將 VNet 連線至內部部署網站位置。 兩種連結類型都使用 VPN 閘道提供使用 IPsec/IKE 的安全通道。 您可以在不同訂用帳戶和不同區域中的 VNet 之間建立連線。 只要閘道是動態或路由式,您也可以連接已連線到內部部署網路的 Vnet。 如需 VNet 對 VNet 連線的詳細資訊,請參閱 VNet 對 VNet 常見問題集

針對此組態,您透過虛擬網路之間的 IPsec/IKE VPN 通道,建立 VPN 閘道連線。 確定沒有任何 VNet 範圍彼此重疊,或是與其連線的區域網路重疊。

下表顯示範例,示範如何定義範例 VNet 和本機網站︰

虛擬網路 位址空間 區域 連接至區域網路站台
ClassicVNet (10.1.0.0/16) 美國西部 RMVNetSite (192.168.0.0/16)
RMVNet (192.168.0.0/16) 美國東部 ClassicVNetSite (10.1.0.0/16)

必要條件

下列步驟引導您完成為每個 VNet 設定動態或路由式閘道,以及建立閘道之間的 VPN 連線所需的設定。 此組態不支援靜態或路由式閘道。

這些步驟假設您已建立舊版傳統 VNet 和 Resource Manager VNet。

範例設定

您可以使用這些值來更好地理解範例。

傳統 VNet

VNet 名稱 = ClassicVNet
資源群組 = ClassicRG 位置 = 美國西部
虛擬網路位址空間 = 10.1.0.0/16
Subnet1 = 10.1.0.0/24
閘道子網路 = 10.1.255.0/27
區域網路名稱 = RMVNetSite
GatewayType = DynamicRouting

Resource Manager VNet

VNet 名稱 = RMVNet
資源群組 = RMRG
虛擬網路的 IP 位址空間 = 192.168.0.0/16
Subnet1 = 192.168.1.0/24
閘道子網路 = 192.168.255.0/27
位置 = 美國東部
閘道公用 IP 名稱 = rmgwpip
區域網路閘道 = ClassicVNetSite
虛擬網路閘道名稱 = RMGateway
閘道 IP 位址組態 = gwipconfig

設定傳統 VNet

在本節中,您會設定您現有的傳統 VNet。 如果您的 VNet 已經有閘道,請確認閘道是以路由為基礎,然後繼續進行下一節。 如果閘道不是路由式閘道,請先刪除閘道,再繼續進行後續步驟。 您稍後將有機會建立新的閘道。

1.下載您的網路組態檔

  1. 在 PowerShell 主控台中以提高的權限登入您的 Azure 帳戶。 下列 Cmdlet 會提示您輸入 Azure 帳戶的登入認證。 登入之後,其會下載您的帳戶設定以供 Azure PowerShell 使用。 本節中會使用傳統服務管理 (SM) Azure PowerShell Cmdlet。

    Add-AzureAccount
    

    取得您的 Azure 訂用帳戶。

    Get-AzureSubscription
    

    如果您有多個訂用帳戶,請選取您要使用的訂用帳戶。

    Select-AzureSubscription -SubscriptionName "Name of subscription"
    
  2. 在電腦上建立目錄。 在此範例中,我們建立了 AzureNet

  3. 執行下列命令以匯出 Azure 網路組態檔。 您可以視需要變更此檔案的位置,以匯出至不同的位置。

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  4. 開啟您下載的 .xml 檔案加以編輯。 如需網路組態檔的範例,請參閱 網路組態結構描述

  5. 記下 VirtualNetworkSite name= 值。 如果您使用入口網站建立傳統 VNet,則名稱會遵循類似「群組 ClassicRG ClassicVNet」的格式,而不是入口網站中的「ClassicVNet」。

2.驗證閘道子網路

VirtualNetworkSites 元素中,將閘道子網路 (若已建立) 加入至您的 VNet。 閘道子網路必須命名為 "GatewaySubnet",否則 Azure 無法辨識並將它當作閘道子網路。

重要

不支援閘道子網上的網路安全組 (NSG)。 將網路安全性群組與此子網路產生關聯,可能會導致您的虛擬網路閘道 (VPN 與 ExpressRoute 閘道) 無法如預期運作。 如需有關網路安全性群組的詳細資訊,請參閱什麼是網路安全性群組?

範例:

<VirtualNetworkSites>
  <VirtualNetworkSite name="ClassicVNet" Location="West US">
    <AddressSpace>
      <AddressPrefix>10.1.0.0/16</AddressPrefix>
    </AddressSpace>
    <Subnets>
      <Subnet name="Subnet1">
        <AddressPrefix>10.1.0.0/24</AddressPrefix>
      </Subnet>
      <Subnet name="GatewaySubnet">
        <AddressPrefix>10.1.255.0/27</AddressPrefix>
      </Subnet>
    </Subnets>
  </VirtualNetworkSite>
</VirtualNetworkSites>

3.新增區域網路站台

您新增的區域網路站台代表您要連接的 RM VNet。 將 LocalNetworkSites 元素 (如果尚未存在) 加入至檔案。 此時在組態中,VPNGatewayAddress 可以是任何有效的公用 IP 位址,因為我們尚未建立 Resource Manager VNet 的閘道。 建立 RM 閘道後,您會以指派給 RM 閘道的正確公用 IP 位址取代此預留位置 IP 位址。

<LocalNetworkSites>
  <LocalNetworkSite name="RMVNetSite">
    <AddressSpace>
      <AddressPrefix>192.168.0.0/16</AddressPrefix>
    </AddressSpace>
    <VPNGatewayAddress>5.4.3.2</VPNGatewayAddress>
  </LocalNetworkSite>
</LocalNetworkSites>

4.建立 VNet 與區域網路站台的關聯

在此區段中,我們會指定您要 VNet 連接的區域網路站台。 在此例中,這是您稍早參考的 Resource Manager VNet。 確定名稱相符。 此步驟不會建立閘道。 它會指定閘道將要連接的區域網路。

<Gateway>
  <ConnectionsToLocalNetwork>
    <LocalNetworkSiteRef name="RMVNetSite">
      <Connection type="IPsec" />
    </LocalNetworkSiteRef>
  </ConnectionsToLocalNetwork>
</Gateway>

5.儲存檔案並上傳

儲存檔案,然後執行下列命令,將它匯入至 Azure。 確定您會視需要變更環境的檔案路徑。

Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml

您將會看到顯示已成功匯入的相似結果。

OperationDescription        OperationId                      OperationStatus                                                
--------------------        -----------                      ---------------                                                
Set-AzureVNetConfig        e0ee6e66-9167-cfa7-a746-7casb9    Succeeded 

6.建立閘道

執行此範例之前,請參閱您針對 Azure 預期看到的確切名稱所下載的網路組態檔。 網路組態檔包含傳統虛擬網路的值。 使用入口網站建立傳統 VNet 時,虛擬網路名稱在網路組態檔中會有所不同。 例如,如果您使用 Azure 入口網站在名稱為 'ClassicRG' 的資源群組中,建立一個名稱為 'Classic VNet' 的傳統 VNet,網路組態檔中所包含的名稱會轉換為 'Group ClassicRG Classic VNet'。 當您使用 PowerShell 時,請一律使用網路組態檔中包含的名稱。當您指定包含空格的 VNet 名稱時,請使用值周圍的引號。

使用以下範例來建立動態路由閘道︰

New-AzureVNetGateway -VNetName ClassicVNet -GatewayType DynamicRouting

您可以使用 Get-AzureVNetGateway Cmdlet 檢查閘道的狀態。

設定 RM VNet 閘道

先決條件會假設您已經建立 RM VNet。 在此步驟中,您會為 RM VNet 建立 VPN 閘道。 請在您已擷取傳統 VNet 閘道的公用 IP 位址之後,才開始下列步驟。

  1. 在 PowerShell 主控台中登入您的 Azure 帳戶。 下列 Cmdlet 會提示您輸入 Azure 帳戶的登入認證。 登入之後,就會下載您的帳戶設定,以供 Azure PowerShell 使用。 您可以視需要使用 [試用] 功能,以在瀏覽器中啟動 Azure Cloud Shell。

    如果您使用 Azure Cloud Shell,請略過下列 Cmdlet:

    Connect-AzAccount
    

    若要確認您是否使用正確的訂用帳戶,請執行下列 Cmdlet:

    Get-AzSubscription
    

    如果您有多個訂用帳戶,請指定您要使用的訂用帳戶。

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. 建立區域網路閘道。 在虛擬網路中,區域網路閘道通常是指您的內部部署位置。 在此例中,區域網路閘道會參考您的傳統 VNet。 賦予它一個可供 Azure 參考的名稱,並且指定位址空間前置詞。 Azure 會使用您指定的 IP 位址前置詞來識別要傳送至內部部署位置的流量。 如果您稍後需要先在此調整資訊,再建立您的閘道,您可以修改下列值並再次執行範例。

    -Name 是您要指派給區域網路閘道的參考名稱。
    -AddressPrefix是傳統 VNet 的位址空間。
    -GatewayIpAddress 是傳統 VNet 閘道的公用 IP 位址。 請務必變更下列範例文字 "n.n.n.n",以反映正確的 IP 位址。

    New-AzLocalNetworkGateway -Name ClassicVNetSite `
    -Location "West US" -AddressPrefix "10.1.0.0/16" `
    -GatewayIpAddress "n.n.n.n" -ResourceGroupName RMRG
    
  3. 要求將公用 IP 位址配置到 Resource Manager VNet 的虛擬網路閘道。 您無法指定想要使用的 IP 位址。 IP 位址是動態地配置到虛擬網路閘道。 但是,這不代表 IP 位址會變更。 只有在刪除及重新建立閘道時,虛擬網路閘道 IP 位址才會變更。 它不會因為重新調整、重設或閘道的其他內部維護/升級而變更。

    在此步驟中,我們也會設定用於後續步驟中的變數。

    $ipaddress = New-AzPublicIpAddress -Name rmgwpip `
    -ResourceGroupName RMRG -Location 'EastUS' `
    -AllocationMethod Dynamic
    
  4. 確認您的虛擬網路有閘道子網路。 如果閘道器子網路不存在,請新增一個。 確定閘道子網路命名為 GatewaySubnet

    $vnet = Get-AzVirtualNetwork -ResourceGroupName RMRG -Name RMVNet
    Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 192.168.255.0/27 -VirtualNetwork $vnet
    Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  5. 擷取用於閘道的子網路。 在此步驟中,我們也會設定要用於下一個步驟中的變數。

    -Name 是 Resource Manager VNet 的名稱。
    -ResourceGroupName 是與 VNet 相關聯的資源群組。 此閘道子網路必須已為此 VNet 存在且命名為 GatewaySubnet ,才能正常運作。

    $subnet = Get-AzVirtualNetworkSubnetConfig -Name GatewaySubnet `
    -VirtualNetwork (Get-AzVirtualNetwork -Name RMVNet -ResourceGroupName RMRG)
    
  6. 建立閘道器 IP 位址組態。 閘道器組態定義要使用的子網路和公用 IP 位址。 使用下列範例來建立閘道組態。

    在本步驟中,-SubnetId-PublicIpAddressId 參數必須各自從子網路和 IP 位址物件傳遞識別碼屬性。 您無法使用簡單的字串。 這些變數設定於要求公用 IP 的步驟以及擷取子網路的步驟中。

    $gwipconfig = New-AzVirtualNetworkGatewayIpConfig `
    -Name gwipconfig -SubnetId $subnet.id `
    -PublicIpAddressId $ipaddress.id
    
  7. 透過執行下列命令建立 Resource Manager 虛擬網路閘道。 -VpnType 必須為 RouteBased。 閘道建立作業可能需要花費 45 分鐘以上的時間。

    New-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG `
    -Location "EastUS" -GatewaySKU Standard -GatewayType Vpn `
    -IpConfigurations $gwipconfig `
    -EnableBgp $false -VpnType RouteBased
    
  8. 一旦 VPN 閘道建立好後,複製公用 IP 位址 。 您會在進行傳統 VNet 的區域網路設定時用到它。 您可以使用下列 Cmdlet 來擷取公用 IP 位址。 公用 IP 位址會在傳回資料中列為 IpAddress

    Get-AzPublicIpAddress -Name rmgwpip -ResourceGroupName RMRG
    

修改傳統 VNet 本機網站設定

在本節中,您會處理傳統 VNet。 您會取代您在指定本機站台設定 (將用於連線至 Resource Manager VNet 閘道) 時所使用的預留位置 IP 位址。 由於您目前使用的是傳統 VNet,因此請使用安裝在您電腦本機的 PowerShell,而不是 Azure Cloud Shell TryIt。

  1. 匯出網路組態檔。

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  2. 使用文字編輯器修改 VPNGatewayAddress 的值。 使用 Resource Manager 閘道的公用 IP 位址取代預留位置 IP 位址,然後儲存變更。

    <VPNGatewayAddress>13.68.210.16</VPNGatewayAddress>
    
  3. 將修改過的網路組態檔匯入至 Azure。

    Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml
    

在閘道之間建立連線

在閘道之間建立連線需要 PowerShell。 您可能需要新增 Azure 帳戶,才能使用傳統版本的 PowerShell Cmdlet。 若要這麼做,請使用 Add-azureaccount

  1. 在 PowerShell 主控台中,設定您的共用金鑰。 執行 Cmdlet 之前,請參閱您針對 Azure 預期看到的確切名稱所下載的網路組態檔。 當指定包含空格的 VNet 名稱時,請使用單引號括住值。

    在下列範例中,-VNetName 是傳統 VNet 的名稱,-LocalNetworkSiteName 是您為區域網路網站指定的名稱。 在您稍早下載的網路組態檔中確認兩者的名稱。

    -SharedKey 是您產生和指定的值。 在範例中,我們使用的是 'abc123',但是您可以產生並使用更為複雜的值。 重要的是,您在此指定的值必須與您在下一個步驟中建立連線時指定的值相同。 傳回應顯示 [狀態: 成功]

    Set-AzureVNetGatewayKey -VNetName ClassicVNet `
    -LocalNetworkSiteName RMVNetSite -SharedKey abc123
    
  2. 執行下列命令來建立 VPN 連線:

    設定變數。

    $vnet01gateway = Get-AzLocalNetworkGateway -Name ClassicVNetSite -ResourceGroupName RMRG
    $vnet02gateway = Get-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG
    

    建立連線。 請注意,-ConnectionType 是 IPsec,而不是 Vnet2Vnet。

    New-AzVirtualNetworkGatewayConnection -Name RM-Classic -ResourceGroupName RMRG `
    -Location "East US" -VirtualNetworkGateway1 `
    $vnet02gateway -LocalNetworkGateway2 `
    $vnet01gateway -ConnectionType IPsec -RoutingWeight 10 -SharedKey 'abc123'
    

確認您的連線

傳統 VNet 至 RM VNet

您可以使用 'Get-AzureVNetConnection' Cmdlet,驗證連線是否成功。 此 Cmdlet 必須在本機電腦上執行。

  1. 請使用下列 Cmdlet 範例,並將值設定為與您狀況相符的值。 如果虛擬網路的名稱包含空格,則必須以引號括住。 使用虛擬網路的名稱,如網路組態檔中所示。

    Get-AzureVNetConnection "ClassicVNet"
    
  2. 完成 Cmdlet 之後,請檢視值。 在下列範例中,連線 ivity 狀態會顯示為「連線」,而且您可以看到輸入和輸出位元組。

    ConnectivityState         : Connected
    EgressBytesTransferred    : 0
    IngressBytesTransferred   : 0
    LastConnectionEstablished : 4/25/2022 4:24:34 PM
    LastEventID               : 24401
    LastEventMessage          : The connectivity state for the local network site 'RMVNetSite' changed from Not Connected to Connected.
    LastEventTimeStamp        : 4/25/2022 4:24:34 PM
    LocalNetworkSiteName      : RMVNetSite
    OperationDescription      :
    OperationId               :
    OperationStatus           :
    

RM VNet 至傳統 VNet

您可以使用 'Get-AzVirtualNetworkGatewayConnection' Cmdlet,並在搭配或不搭配 '-Debug' 的情況下驗證連線是否成功。

  1. 請使用下列 Cmdlet 範例,並將值設定為與您狀況相符的值。 出現提示時,請選取 [A] 以執行 [全部]。 在範例中,'-Name' 是指您想要測試之連線的名稱。

    Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
    
  2. 完成 Cmdlet 之後,請檢視值。 在下列範例中,連線狀態會顯示為「連線」,而您可以看到輸入和輸出位元組。

    "connectionStatus": "Connected",
    "ingressBytesTransferred": 33509044,
    "egressBytesTransferred": 4142431
    

下一步

如需 VNet 對 VNet 連線的詳細資訊,請參閱 VPN 閘道常見問題集