Azure 虚拟网络基础 #

什么是 Azure 虚拟网络? #

Azure 虚拟网络(VNet)是 Azure 中网络通信的基础构建块,提供隔离和安全的网络环境。

text
┌─────────────────────────────────────────────────────────────┐
│                    虚拟网络概览                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  核心功能                                                    │
│  ├── 网络隔离:独立的网络空间                               │
│  ├── 子网划分:灵活的网络分段                               │
│  ├── IP 地址管理:自定义 IP 范围                            │
│  ├── 安全控制:NSG 和 ASG                                   │
│  └── 连接性:VPN、ExpressRoute、对等互连                    │
│                                                             │
│  关键概念                                                    │
│  ├── 地址空间:CIDR 格式的 IP 范围                          │
│  ├── 子网:地址空间的细分                                   │
│  ├── 网络安全组:流量过滤规则                               │
│  └── 路由表:流量路由规则                                   │
│                                                             │
│  适用场景                                                    │
│  ├── 虚拟机网络                                             │
│  ├── PaaS 服务集成                                          │
│  ├── 混合云连接                                             │
│  └── 微服务架构                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

创建虚拟网络 #

使用 Azure CLI #

bash
# 创建资源组
az group create --name myResourceGroup --location eastus

# 创建虚拟网络
az network vnet create \
  --resource-group myResourceGroup \
  --name myVNet \
  --address-prefixes 10.0.0.0/16 \
  --subnet-name default \
  --subnet-prefixes 10.0.0.0/24

# 查看虚拟网络
az network vnet show \
  --resource-group myResourceGroup \
  --name myVNet

使用 Azure 门户 #

text
┌─────────────────────────────────────────────────────────────┐
│                    创建虚拟网络步骤                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  步骤 1: 基本信息                                            │
│  ├── 订阅选择                                               │
│  ├── 资源组选择/创建                                        │
│  ├── 名称                                                   │
│  └── 区域选择                                               │
│                                                             │
│  步骤 2: IP 地址                                             │
│  ├── IPv4 地址空间                                          │
│  ├── IPv6 地址空间(可选)                                  │
│  └── 子网配置                                               │
│                                                             │
│  步骤 3: 安全                                                │
│  ├── Bastion(可选)                                        │
│  ├── DDoS 防护                                              │
│  └── 防火墙                                                 │
│                                                             │
│  步骤 4: 标签和审阅                                          │
│  └── 验证并创建                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

子网划分 #

子网规划 #

text
┌─────────────────────────────────────────────────────────────┐
│                    子网规划示例                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  VNet: 10.0.0.0/16                                          │
│                                                             │
│  ├── 子网: WebSubnet (10.0.1.0/24)                          │
│  │   └── Web 服务器、应用网关                               │
│  │                                                         │
│  ├── 子网: AppSubnet (10.0.2.0/24)                          │
│  │   └── 应用服务器                                        │
│  │                                                         │
│  ├── 子网: DataSubnet (10.0.3.0/24)                         │
│  │   └── 数据库服务器                                      │
│  │                                                         │
│  ├── 子网: GatewaySubnet (10.0.0.0/27)                      │
│  │   └── VPN/ExpressRoute 网关                             │
│  │                                                         │
│  └── 子网: AzureBastionSubnet (10.0.0.64/26)                │
│      └── Azure Bastion                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

创建子网 #

bash
# 添加子网
az network vnet subnet create \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --name WebSubnet \
  --address-prefixes 10.0.1.0/24

# 添加多个子网
az network vnet subnet create \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --name AppSubnet \
  --address-prefixes 10.0.2.0/24

# 列出子网
az network vnet subnet list \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --output table

特殊子网 #

text
┌─────────────────────────────────────────────────────────────┐
│                    特殊子网                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  GatewaySubnet                                               │
│  ├── VPN 网关                                               │
│  ├── ExpressRoute 网关                                      │
│  ├── 最小 /27                                               │
│  └── 建议 /27 或更大                                        │
│                                                             │
│  AzureBastionSubnet                                          │
│  ├── Azure Bastion                                          │
│  ├── 最小 /26                                               │
│  └── 安全远程访问                                           │
│                                                             │
│  AzureFirewallSubnet                                         │
│  ├── Azure 防火墙                                           │
│  ├── 最小 /26                                               │
│  └── 网络安全                                               │
│                                                             │
│  delegated subnet                                            │
│  ├── 服务委托                                               │
│  ├── 如: SQL 托管实例                                       │
│  └── 特定服务使用                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

IP 地址管理 #

公网 IP #

bash
# 创建公网 IP
az network public-ip create \
  --resource-group myResourceGroup \
  --name myPublicIP \
  --sku Standard \
  --allocation-method Static \
  --location eastus

# 查看公网 IP
az network public-ip show \
  --resource-group myResourceGroup \
  --name myPublicIP \
  --query ipAddress

私有 IP #

bash
# 创建带静态私有 IP 的网卡
az network nic create \
  --resource-group myResourceGroup \
  --name myNic \
  --vnet-name myVNet \
  --subnet WebSubnet \
  --private-ip-address 10.0.1.10

# 更新私有 IP
az network nic update \
  --resource-group myResourceGroup \
  --name myNic \
  --private-ip-address 10.0.1.20

虚拟网络对等互连 #

对等互连概念 #

text
┌─────────────────────────────────────────────────────────────┐
│                    VNet 对等互连                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐         对等互连         ┌─────────────┐  │
│  │   VNet A    │ ◄──────────────────────► │   VNet B    │  │
│  │ 10.0.0.0/16 │                         │ 10.1.0.0/16 │  │
│  └─────────────┘                         └─────────────┘  │
│                                                             │
│  特点:                                                      │
│  ├── 低延迟、高带宽连接                                     │
│  ├── 跨 VNet 通信                                           │
│  ├── 可跨区域                                               │
│  └── 可跨订阅                                               │
│                                                             │
│  配置选项:                                                  │
│  ├── 允许虚拟网络访问                                       │
│  ├── 允许转发流量                                           │
│  └── 允许网关传输                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

创建对等互连 #

bash
# 创建第二个 VNet
az network vnet create \
  --resource-group myResourceGroup \
  --name myVNet2 \
  --address-prefixes 10.1.0.0/16 \
  --subnet-name default \
  --subnet-prefixes 10.1.0.0/24

# 创建 VNet 对等互连
az network vnet peering create \
  --resource-group myResourceGroup \
  --name myVNet-to-myVNet2 \
  --vnet-name myVNet \
  --remote-vnet myVNet2 \
  --allow-vnet-access

# 创建反向对等互连
az network vnet peering create \
  --resource-group myResourceGroup \
  --name myVNet2-to-myVNet \
  --vnet-name myVNet2 \
  --remote-vnet myVNet \
  --allow-vnet-access

# 查看对等互连状态
az network vnet peering list \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --output table

服务终结点 #

启用服务终结点 #

bash
# 为子网启用服务终结点
az network vnet subnet update \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --name WebSubnet \
  --service-endpoints Microsoft.Storage Microsoft.Sql

# 查看服务终结点
az network vnet subnet show \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --name WebSubnet \
  --query serviceEndpoints

支持的服务 #

服务 终结点
Azure Storage Microsoft.Storage
Azure SQL Microsoft.Sql
Azure Cosmos DB Microsoft.AzureCosmosDB
Azure Key Vault Microsoft.KeyVault
Azure Service Bus Microsoft.ServiceBus

私有链接 #

私有端点 #

text
┌─────────────────────────────────────────────────────────────┐
│                    私有链接                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  私有端点                                                    │
│  ├── 将 PaaS 服务注入 VNet                                  │
│  ├── 私有 IP 访问                                           │
│  └── 无需公网暴露                                           │
│                                                             │
│  支持的服务                                                  │
│  ├── Azure SQL Database                                     │
│  ├── Azure Storage                                          │
│  ├── Azure Cosmos DB                                        │
│  ├── Azure Key Vault                                        │
│  └── 更多...                                                │
│                                                             │
│  架构:                                                      │
│  ┌─────────────┐     私有端点     ┌─────────────┐          │
│  │    VNet     │ ───────────────► │ PaaS 服务   │          │
│  │ 10.0.0.0/16 │   私有 IP        │ (SQL/存储)  │          │
│  └─────────────┘                  └─────────────┘          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

创建私有端点 #

bash
# 创建私有端点
az network private-endpoint create \
  --resource-group myResourceGroup \
  --name myPrivateEndpoint \
  --vnet-name myVNet \
  --subnet WebSubnet \
  --private-connection-resource-id /subscriptions/.../storageAccounts/mystorageaccount \
  --group-id blob \
  --connection-name myConnection

用户定义路由 (UDR) #

路由表 #

bash
# 创建路由表
az network route-table create \
  --resource-group myResourceGroup \
  --name myRouteTable

# 添加路由
az network route-table route create \
  --resource-group myResourceGroup \
  --route-table-name myRouteTable \
  --name toInternet \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address 10.0.1.4

# 关联路由表到子网
az network vnet subnet update \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --name WebSubnet \
  --route-table myRouteTable

最佳实践 #

网络设计 #

text
┌─────────────────────────────────────────────────────────────┐
│                    网络设计最佳实践                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 合理规划 IP 地址空间                                     │
│     ├── 预留足够空间                                        │
│     ├── 避免重叠                                            │
│     └── 考虑未来扩展                                        │
│                                                             │
│  2. 子网划分原则                                             │
│     ├── 按功能/层级划分                                     │
│     ├── 预留特殊子网                                        │
│     └── 考虑服务需求                                        │
│                                                             │
│  3. 安全隔离                                                 │
│     ├── 使用 NSG                                            │
│     ├── 最小权限原则                                        │
│     └── 分层防护                                            │
│                                                             │
│  4. 高可用设计                                               │
│     ├── 跨可用区                                            │
│     ├── 冗余连接                                            │
│     └── 故障转移                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

安全建议 #

text
┌─────────────────────────────────────────────────────────────┐
│                    安全最佳实践                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 使用网络安全组                                           │
│     └── 限制入站/出站流量                                   │
│                                                             │
│  2. 启用服务终结点                                           │
│     └── 安全访问 PaaS 服务                                  │
│                                                             │
│  3. 使用私有端点                                             │
│     └── 避免公网暴露                                        │
│                                                             │
│  4. 启用 DDoS 防护                                           │
│     └── 保护关键资源                                        │
│                                                             │
│  5. 使用 Azure Firewall                                      │
│     └── 集中管理出口流量                                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

下一步 #

现在你已经了解了虚拟网络的基础,接下来学习 网络安全组 掌握流量控制!

最后更新:2026-03-29