使用 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
GatewaySubnet = 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 元素,請將 LocalNetworkSites 元素新增至檔案。 此時在設定中,VPNGatewayAddress 可以是任何有效的公用IP位址,因為我們尚未建立Resource Manager VNet的閘道。 建立 RM 閘道之後,您會將此佔位元元 IP 位址取代為指派給 RM 閘道的正確公用 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 入口網站 來建立名為 『Classic VNet』 的傳統 VNet,並在名為 『ClassicRG』 的資源群組中建立它,則網路組態檔中包含的名稱會轉換成 「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 位址。 使用下列範例來建立閘道組態。

    在此步驟中, 必須分別從子網和IP位址對象傳遞 -SubnetId-PublicIpAddressId 參數的ID屬性。 您無法使用簡單的字串。 這些變數會在步驟中設定,以要求公用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 的值。 將佔位元 IP 位址取代為 Resource Manager 閘道的公用 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',但您可以產生和使用更複雜的專案。 重要的是,您在這裡指定的值必須與您在建立連線時在下一個步驟中指定的值相同。 傳回應該會顯示 Status:Success

    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 閘道常見問題集