- Azure VNet的介绍
VNet是Azure云中逻辑隔离的虚拟网络。它包含两个含义:
- Azure的用户可以在VNet中创建自己的各种资源,感觉想自己的数据中心中一样;
- 在一个VNet中创建的资源和其它VNet创建的资源相互隔离,是Azure云中网络多租户的具体实现形式。
Azure的VNet可以提供如下图的三大类服务:
- VNet内部提供的网络服务,包括子网的划分、网络安全和路由等功能
- 前端接入,提供公网IP地址、DNS地址解析、Source/Destination NAT、负载均衡等等各种服务
- 后端连接,提供IPSec Site-Site/Point-Site VPN,以及专线接入等服务。
Azure的各种网络服务大多是围绕Azure的VNet的,所以VNet是Azure Networking的基础。下面将介绍如何创建Azure VNet。
- Azure VNet的部署
- 通过Portal页面部署Azure VNet
进入AzureChina的管理Portal: https://portal.azure.cn
在"More Services"中点击虚拟网络:
进入虚拟网络后,可以看到已经创建的VNet信息,包括VNet名称、资源组、Region和订阅信息:
此时点击添加,添加新的VNet,在添加时需要填写如下信息:
- VNet名称
- VNet的地址空间,就是VNet整体的地址网段
- 每个VNet可以最大配置4096个IP地址的地址空间,目前通过开Case可以最大支持到8192个,Network的Limitation可以参考以下链接:https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits#networking-limits。由于Azure的各种访问的能力在不停的变化,建议有可能到达各种Azure资源限制的时候,到这个链接上查询相关的数值;
- 地址段的选择建议符合RFC1918中定义的Private Address Space的三段地址,具体请参考http://www.faqs.org/rfcs/rfc1918.html。就是我们常说的10、172、192的三段地址;
- Azure VNet的地址空间允许用户采用非Private Address Space的地址段,但建议是用户自己拥有的地址段,是自己在ARIN、RIPE、APNIC、LACNIC和AFRINIC等组织申请并付费的地址段,否则会发生部分网络访问不了的情况;
- 即使用户使用自己申请的IP地址段,Azure并不负责这些地址段的BGP宣告,用户需要采用一些特殊的方式通过自己的BGP网络宣告给各个运营商。
- Azure VNet的地址空间可以是不连续的,即可以添加多个地址空间。建议以较小的地址段添加地址空间,这样可以避免地址浪费和地址冲突等各种问题;
- ★Azure VNet的地址空间的划分是非常重要的一项工作,建议企业的Network部门的同事参加。一旦地址划分出现重复等问题,有可能面临整个VNet内的资源要全部关停,甚至铲除重新部署的情况。所以说在云上业务建设之初,花一些精力把地址空间规划好,是非常重要的工作之一!
- 子网名称,类似物理网络中的Vlan的取名,可以取一些有提示功能的名称,比如Web、APP、DB或Frontend、Backend等等;
- 子网范围,要求在地址空间之内,建议根据需求,划分能够满足需求的较小的地址段,在今后的地址划分上比较灵活。比如预计这个网段中的VM或其他资源的数量不会超过100台,建议采用/25掩码的网段;
- 其他信息,包括资源组、订阅和Region信息
创建完成后,可以看到VNet的相关信息:
其他的几点需要注意的:
- 在地址空间中,还可以添加其他的地址空间:
- 在子网中,可以添加新的子网:
- 在子网中,还有一个网关子网,GatewaySubnet:
其名称是不能更改的,用于VPN Gateway和Express Route Gateway使用。建议采用/27掩码的网段,具体细节在IPSec VPN和Express Route的章节中介绍。
- 已连接设备
可以在"已连接的设备"中查看已经在VNet中部署的资源:
- DNS
在Azure的VNet中有自己的DNS服务。Azure上的DNS服务和一般DNS不同的是,Azure的DNS服务是通过SDN的形式实现的。其DNS服务器的地址在Azure的全球范围内都是168.63.129.16。当Azure的SDN发现有客户端在请求168.63.129.16的DNS服务时,SDN的Network Controller会发送DNS的response给请求者。
当然可以添加自己的DNS服务器,比如在VNet中部署一台DNS服务器,在VNet DNS配置中添加这个IP地址即可,但要重启VNet中的资源,新的DNS服务器的配置才会生效。
2. 通过Powershell部署Azure VNet
通过PowerShell部署Azure VNet和Portal创建的思路是相同的,具体步骤如下:
#创建新的Resource Group
New-AzureRmResourceGroup -Name hwvnetps -Location chinanorth
#创建新的Subnet的配置
$vlan1 = New-AzureRmVirtualNetworkSubnetConfig -Name vlan1 `
-AddressPrefix 172.18.0.0/25
$gwsubnet = New-AzureRmVirtualNetworkSubnetConfig `
-Name GatewaySubnet `
-AddressPrefix 172.18.1.224/27
#创建VNet
$hwvnetps = New-AzureRmVirtualNetwork -Name hwvnetps `
-ResourceGroupName hwvnetps -Location chinanorth `
-AddressPrefix 172.18.0.0/24,172.18.1.0/24 `
-Subnet $vlan1,$gwsubnet
#添加Subnet的配置
$vlan2 = Add-AzureRmVirtualNetworkSubnetConfig `
-VirtualNetwork $hwvnetps -Name vlan2 `
-AddressPrefix 172.18.0.128/25
#更新VNet
Set-AzureRmVirtualNetwork -VirtualNetwork $hwvnetps
3. 通过Azure CLI部署Azure VNet
通过命令行实现的方式也类似,具体命令如下:
#创建Resource Group
az group create --name hwvnetc \
--location chinanorth
#创建VNet
az network vnet create -g hwvnetc \
-n hwvnetc \
--address-prefixes 172.19.0.0/24 172.19.1.0/24 \
--subnet-name vlan1 \
--subnet-prefix 172.19.0.0/25
#添加Subnet
az network vnet subnet create -g hwvnetc \
--vnet-name hwvnetc \
--name GatewaySubnet \
--address-prefix 172.19.1.224/27