1. 课程导入与Azure企业网络全景

欢迎进入《Azure企业网络与安全边界》课程。在动手创建第一台虚拟机之前,我们需要先建立一张"地图":企业网络在Azure中到底由哪些部件构成,安全边界又画在哪里。很多初学者一上来就急着配NSG、建防火墙,结果发现流量不通、路由绕行、DNS解析失败,根本原因往往不是某个命令写错了,而是对整体结构缺乏认知。本章的目标就是先把这张地图画清楚,再搭建一套贯穿全课程的实战环境。

学习目标

完成本章后,你应当能够:用自己的话解释企业网络与安全边界的核心概念;说出Azure网络组件的分层关系以及它们各自解决的问题;独立创建一套包含虚拟网络、子网、网络安全组和虚拟机的实验环境,并验证基本连通性。这三个目标分别对应"概念—结构—动手"三个层次,后续29章都会在这套环境上展开。

企业网络与安全边界的核心概念

企业网络(Enterprise Network)指的是一个组织内部用于承载业务系统、办公终端、数据中心与外部访问的互联体系。它通常具备几个特征:地址空间经过规划、流量路径可预测、访问受策略控制、关键区域之间有明确隔离。传统企业网络以物理设备(核心交换机、防火墙、专线)为中心,而Azure企业网络把这些能力虚拟化,用软件定义的方式重新实现。

安全边界(Security Boundary)是理解本课程的关键。它不是一个"墙"的概念,而是一组"信任级别的分界"。在传统数据中心里,边界往往就是防火墙所在的位置:外网到DMZ是一道边界,DMZ到内网是另一道边界。在Azure中,边界被拆解成多个层次:订阅与资源组构成管理边界,虚拟网络构成网络边界,子网与NSG构成流量边界,Azure Firewall或NVA构成策略边界,Private Endpoint构成数据访问边界。理解"边界在哪一层、由谁执行、控制什么"比记住某个服务的名字重要得多。

一个常见的认知误区:认为"放进虚拟网络就安全了"。实际上虚拟网络默认允许同一VNet内所有子网互通,真正的隔离来自子网级NSG、路由控制和防火墙策略。边界是设计出来的,不是默认存在的。

Azure网络组件总览

Azure网络组件可以按"承载—连接—控制—安全—发布"五个维度来理解,而不是零散地记忆服务名。

  • 承载层:Virtual Network(VNet)与Subnet提供地址空间和网段划分;Network Interface(NIC)把虚拟机接入子网;Private IP与Public IP决定寻址方式。
  • 连接层:VNet Peering实现VNet之间私网互通;VPN Gateway与ExpressRoute连接本地数据中心;Azure Bastion提供安全的运维入口。
  • 控制层:User Defined Route(UDR)与Route Server控制流量路径;Azure DNS与Private DNS Zone负责名称解析;Service Endpoint与Private Endpoint控制对PaaS服务的访问方式。
  • 安全层:Network Security Group(NSG)做子网/NIC级五元组过滤;Azure Firewall做集中式L3-L7策略;Web Application Firewall(WAF)防护HTTP应用层攻击;DDoS Protection提供流量清洗。
  • 发布层:Load Balancer(L4)与Application Gateway(L7)把内部服务暴露给用户;Front Door提供全球入口。

这些组件不是并列关系,而是有明确的层次和依赖。下图用一张结构关系图把它们组织起来,帮助你在脑中建立"从地址到策略、从内部到外部"的整体视图。

Azure企业网络组件分层结构 承载层 · 地址与接入 Virtual Network Subnet NIC / IP Private DNS Zone Public IP 连接层 · 打通路径 VNet Peering VPN Gateway ExpressRoute Bastion UDR 安全层 · 边界与策略 NSG Azure Firewall WAF Private Endpoint DDoS 发布层 · 对外服务 Load Balancer (L4) Application Gateway (L7) Front Door API Management 流量方向:外部用户 → 发布层 → 安全层策略检查 → 连接层路由 → 承载层子网内资源 设计顺序:先规划地址空间与子网,再定义边界策略,最后接入连接与发布组件

图中有一个容易被忽略的细节:流量方向与设计顺序是相反的。实际工程中,我们总是先规划地址空间和子网划分,再决定安全边界放在哪一层,最后才考虑如何对外发布。如果顺序颠倒,很容易出现"服务已经上线,却发现子网地址不够用"或"防火墙策略无法插入"的返工。

实战环境搭建

接下来搭建一套贯穿全课程的实验环境。设计目标:一个中心VNet承载共享服务,一个业务VNet承载应用,两者通过Peering互通,业务VNet内用NSG隔离Web子网与数据子网。以下参数为教学示例,你可以按自己的订阅调整,但建议保持网段规划思路一致。

对象名称地址空间 / 关键参数
资源组rg-netlab-eastus区域 East US
中心VNetvnet-hub10.10.0.0/16
中心子网snet-shared10.10.1.0/24
业务VNetvnet-spoke10.20.0.0/16
Web子网snet-web10.20.1.0/24
数据子网snet-data10.20.2.0/24
NSGnsg-web允许 80/443 入站,拒绝其余
NSGnsg-data仅允许来自 10.20.1.0/24 的 1433

创建VNet与子网的核心命令如下,注意地址前缀必须落在VNet地址空间内,否则会报错:

az network vnet create \
  --resource-group rg-netlab-eastus \
  --name vnet-hub \
  --address-prefixes 10.10.0.0/16 \
  --subnet-name snet-shared \
  --subnet-prefixes 10.10.1.0/24

az network vnet create \
  --resource-group rg-netlab-eastus \
  --name vnet-spoke \
  --address-prefixes 10.20.0.0/16 \
  --subnet-name snet-web \
  --subnet-prefixes 10.20.1.0/24

az network vnet subnet create \
  --resource-group rg-netlab-eastus \
  --vnet-name vnet-spoke \
  --name snet-data \
  --address-prefixes 10.20.2.0/24

建立Peering时要注意它是双向的:从vnet-hub到vnet-spoke创建一次,再从vnet-spoke到vnet-hub创建一次,只做单向会导致反向流量不通。创建完成后,用以下命令确认状态为Connected:

az network vnet peering create \
  --resource-group rg-netlab-eastus \
  --name hub-to-spoke \
  --vnet-name vnet-hub \
  --remote-vnet vnet-spoke \
  --allow-vnet-access

az network vnet peering list \
  --resource-group rg-netlab-eastus \
  --vnet-name vnet-hub \
  --query "[].{name:name,state:peeringState}" -o table

验证环节建议分三步:第一,在两台测试虚拟机上用 ping 或 Test-NetConnection 检查跨VNet连通性;第二,在nsg-data上临时添加一条拒绝规则,确认Web到数据的1433连接被阻断,再删除规则恢复;第三,用 az network watcher show-topology 查看拓扑,确认Peering关系被正确识别。只有"能通"和"能断"都验证过,才算真正理解了边界的作用。

实验完成后请及时删除资源组,避免持续产生费用。命令:az group delete --name rg-netlab-eastus --yes --no-wait。后续章节会重新创建所需资源,不必担心环境丢失。

本章建立的分层视图和实验环境,是后面所有内容的基础。当你遇到"流量为什么不通"这类问题时,回到这张结构图,按承载、连接、安全、发布四层逐层排查,通常能快速定位问题所在。