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