📜  Azure VNet连接(1)

📅  最后修改于: 2023-12-03 15:29:33.574000             🧑  作者: Mango

Azure VNet连接

Azure Virtual Network (VNet) 是基于 Azure 云平台建立的虚拟网络组件。 你可以将 Azure 资源部署到 VNet 中,并可利用 Azure VNet 的丰富功能实现安全、可靠的网络连接。

VNet连接类型
  • VNet 同区域连接:在同一 Azure 区域内的 VNet 之间建立连接,可通过本地访问 Azure 资源或跨不同区域的流量。
  • VNet 跨区域连接:在多个不同 Azure 区域之间的 VNet 之间建立连接,可通过跨区域访问 Azure 资源。
VNet连接方式
  • 点对站连接:适用于需要从本地网络连接到 Azure VNet 的场景。
  • 站对站连接:连接两个 VNet 以实现通过私有 IP 地址进行通信。
  • 站对点连接:连接多个 VNet 和本地网络以实现完全的商业转型所需的混合连接。
连接实现方法

Azure 支持的 VNet 连接方式包括以下几种。

通过 VPN 网关建立连接

VPN 网关是 Azure VNet 连接的重要组件之一。 通过 VPN 网关建立的连接支持点对站、站对站、站对点等连接方式。

通过 ExpressRoute 建立连接

ExpressRoute 提供了一种直接连接 Azure 云和数据中心、办公室等本地网络的种子。 它可在 VPN 连接的基础上提供更加高级的功能,如 QoS 和 SLA。

示例代码
# 声明变量
$virtualNetworkName = "testvnet"
$resourceGroupName = "testresourcegroup"
$location = "chinanorth"

# 创建 VNet
$virtualNetwork = New-AzVirtualNetwork `
    -Name $virtualNetworkName `
    -ResourceGroupName $resourceGroupName `
    -Location $location `
    -AddressPrefix "10.10.0.0/16"

# 创建子网
$subnet = New-AzVirtualNetworkSubnetConfig `
    -Name "subnet1" `
    -AddressPrefix "10.10.0.0/24"
$virtualNetwork.Subnets.Add($subnet)

# 创建 VNet 连接
$virtualNetworkGateway = New-AzVirtualNetworkGateway `
    -ResourceGroupName $resourceGroupName `
    -Location $location `
    -Name "vnetGateway" `
    -IpConfigurations @($gwIpconfig) `
    -GatewayType Vpn `
    -VpnType RouteBased `
    -EnableBgp $false `
    -GatewaySku VpnGw1 `
    -VpnGatewayGeneration Generation1

# 等待连接创建完成
while ($virtualNetworkGateway.ProvisioningState -ne "Succeeded") {
    $virtualNetworkGateway = Get-AzVirtualNetworkGateway `
        -ResourceGroupName $resourceGroupName `
        -Name "vnetGateway"
    Start-Sleep -s 10
}

# 创建本地网络设备 IP 配置信息
$localGatewayIpAddress = "131.107.72.22"
$localGateway = New-AzLocalNetworkGateway `
    -ResourceGroupName $resourceGroupName `
    -Location $location `
    -Name "localGateway" `
    -GatewayIpAddress $localGatewayIpAddress `
    -AddressPrefix @("192.168.0.0/16")

# 创建连接
$gatewayConnection = New-AzVirtualNetworkGatewayConnection `
    -Name "vnetGatewayConnection" `
    -ResourceGroupName $resourceGroupName `
    -Location $location `
    -VirtualNetworkGateway1 $virtualNetworkGateway `
    -LocalNetworkGateway2 $localGateway `
    -ConnectionType IPsec `
    -RoutingWeight 10 `
    -SharedKey "testSharedKey"

# 等待连接创建完成
while ($gatewayConnection.ProvisioningState -ne "Succeeded") {
    $gatewayConnection = Get-AzVirtualNetworkGatewayConnection `
        -Name "vnetGatewayConnection" `
        -ResourceGroupName $resourceGroupName
    Start-Sleep -s 10
}

# 输出连接状态
Write-Output ("VPN gateway connection status: " + $gatewayConnection.ConnectionStatus)