使用 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 的位址範圍不會彼此重疊,或與閘道可能連線的任何其他連線範圍重疊。
在本文中,我們使用 PowerShell。 為 Resource Manager 和服務管理兩者安裝 PowerShell Cmdlet。
雖然可以使用 Azure Cloud Shell 環境執行部分 PowerShell 命令,但您必須安裝這兩個版本的 Cmdlet,才能正確建立連線。
服務管理 (傳統) PowerShell Cmdlet。 當您安裝服務管理 Cmdlet 時,您可能需要修改執行原則,才能安裝傳統版本的 Azure 模組。
如需詳細資訊,請參閱 如何安裝及設定 Azure PowerShell。
範例設定
您可以使用這些值來更好地理解範例。
傳統 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.下載您的網路組態檔
在 PowerShell 主控台中以提高的權限登入您的 Azure 帳戶。 下列 Cmdlet 會提示您輸入 Azure 帳戶的登入認證。 登入之後,其會下載您的帳戶設定以供 Azure PowerShell 使用。 本節中會使用傳統服務管理 (SM) Azure PowerShell Cmdlet。
Add-AzureAccount
取得您的 Azure 訂用帳戶。
Get-AzureSubscription
如果您有多個訂用帳戶,請選取您要使用的訂用帳戶。
Select-AzureSubscription -SubscriptionName "Name of subscription"
在電腦上建立目錄。 在此範例中,我們建立了 AzureNet。
執行下列命令以匯出 Azure 網路組態檔。 您可以視需要變更此檔案的位置,以匯出至不同的位置。
Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
開啟您下載的 .xml 檔案加以編輯。 如需網路組態檔的範例,請參閱 網路組態結構描述。
記下
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 位址之後,才開始下列步驟。
在 PowerShell 主控台中登入您的 Azure 帳戶。 下列 Cmdlet 會提示您輸入 Azure 帳戶的登入認證。 登入之後,就會下載您的帳戶設定,以供 Azure PowerShell 使用。 您可以視需要使用 [試用] 功能,以在瀏覽器中啟動 Azure Cloud Shell。
如果您使用 Azure Cloud Shell,請略過下列 Cmdlet:
Connect-AzAccount
若要確認您是否使用正確的訂用帳戶,請執行下列 Cmdlet:
Get-AzSubscription
如果您有多個訂用帳戶,請指定您要使用的訂用帳戶。
Select-AzSubscription -SubscriptionName "Name of subscription"
建立區域網路閘道。 在虛擬網路中,區域網路閘道通常是指您的內部部署位置。 在此例中,區域網路閘道會參考您的傳統 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
要求將公用 IP 位址配置到 Resource Manager VNet 的虛擬網路閘道。 您無法指定想要使用的 IP 位址。 IP 位址是動態地配置到虛擬網路閘道。 但是,這不代表 IP 位址會變更。 只有在刪除及重新建立閘道時,虛擬網路閘道 IP 位址才會變更。 它不會因為重新調整、重設或閘道的其他內部維護/升級而變更。
在此步驟中,我們也會設定用於後續步驟中的變數。
$ipaddress = New-AzPublicIpAddress -Name rmgwpip ` -ResourceGroupName RMRG -Location 'EastUS' ` -AllocationMethod Dynamic
確認您的虛擬網路有閘道子網路。 如果閘道器子網路不存在,請新增一個。 確定閘道子網路命名為 GatewaySubnet 。
$vnet = Get-AzVirtualNetwork -ResourceGroupName RMRG -Name RMVNet Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 192.168.255.0/27 -VirtualNetwork $vnet Set-AzVirtualNetwork -VirtualNetwork $vnet
擷取用於閘道的子網路。 在此步驟中,我們也會設定要用於下一個步驟中的變數。
-Name 是 Resource Manager VNet 的名稱。
-ResourceGroupName 是與 VNet 相關聯的資源群組。 此閘道子網路必須已為此 VNet 存在且命名為 GatewaySubnet ,才能正常運作。$subnet = Get-AzVirtualNetworkSubnetConfig -Name GatewaySubnet ` -VirtualNetwork (Get-AzVirtualNetwork -Name RMVNet -ResourceGroupName RMRG)
建立閘道器 IP 位址組態。 閘道器組態定義要使用的子網路和公用 IP 位址。 使用下列範例來建立閘道組態。
在本步驟中,-SubnetId 和 -PublicIpAddressId 參數必須各自從子網路和 IP 位址物件傳遞識別碼屬性。 您無法使用簡單的字串。 這些變數設定於要求公用 IP 的步驟以及擷取子網路的步驟中。
$gwipconfig = New-AzVirtualNetworkGatewayIpConfig ` -Name gwipconfig -SubnetId $subnet.id ` -PublicIpAddressId $ipaddress.id
透過執行下列命令建立 Resource Manager 虛擬網路閘道。
-VpnType
必須為 RouteBased。 閘道建立作業可能需要花費 45 分鐘以上的時間。New-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG ` -Location "EastUS" -GatewaySKU Standard -GatewayType Vpn ` -IpConfigurations $gwipconfig ` -EnableBgp $false -VpnType RouteBased
一旦 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。
匯出網路組態檔。
Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
使用文字編輯器修改 VPNGatewayAddress 的值。 使用 Resource Manager 閘道的公用 IP 位址取代預留位置 IP 位址,然後儲存變更。
<VPNGatewayAddress>13.68.210.16</VPNGatewayAddress>
將修改過的網路組態檔匯入至 Azure。
Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml
在閘道之間建立連線
在閘道之間建立連線需要 PowerShell。 您可能需要新增 Azure 帳戶,才能使用傳統版 PowerShell Cmdlet。 若要這麼做,請使用 Add-azureaccount。
在 PowerShell 主控台中,設定您的共用金鑰。 執行 Cmdlet 之前,請參閱您針對 Azure 預期看到的確切名稱所下載的網路組態檔。 當指定包含空格的 VNet 名稱時,請使用單引號括住值。
在下列範例中,-VNetName 是傳統 VNet 的名稱,-LocalNetworkSiteName 是您為區域網路網站指定的名稱。 在您稍早下載的網路組態檔中確認兩者的名稱。
-SharedKey 是您產生和指定的值。 在範例中,我們使用的是 'abc123',但是您可以產生並使用更為複雜的值。 重要的是,您在此指定的值必須與您在下一個步驟中建立連線時指定的值相同。 傳回應顯示 [狀態: 成功]。
Set-AzureVNetGatewayKey -VNetName ClassicVNet ` -LocalNetworkSiteName RMVNetSite -SharedKey abc123
執行下列命令來建立 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 必須在本機電腦上執行。
請使用下列 Cmdlet 範例,並將值設定為與您狀況相符的值。 如果虛擬網路的名稱包含空格,則必須以引號括住。 使用虛擬網路的名稱,如網路組態檔中所示。
Get-AzureVNetConnection "ClassicVNet"
完成 Cmdlet 之後,請檢視值。 在下列範例中,[連線狀態] 會顯示為 [已連線],而且您可以看見輸入和輸出位元組。
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' 的情況下驗證連線是否成功。
請使用下列 Cmdlet 範例,並將值設定為與您狀況相符的值。 出現提示時,請選取 [A] 以執行 [全部]。 在範例中,'-Name' 是指您想要測試之連線的名稱。
Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
完成 Cmdlet 之後,請檢視值。 在下列範例中,連線狀態會顯示為 [已連線],而且您可以看見輸入和輸出位元組。
"connectionStatus": "Connected", "ingressBytesTransferred": 33509044, "egressBytesTransferred": 4142431
下一步
如需 VNet 對 VNet 連線的詳細資訊,請參閱 VPN 閘道常見問題集。