Azure Vnet配置与验证:同区域同订阅实例流量走Vnet的配置及校验问题
现有配置充分性判断
你当前的配置不足以保证实例之间的所有流量都仅通过虚拟网络传输,仍然存在流量走公网链路的可能。
核心问题在于两点:一是默认状态下应用服务的VNet集成只会路由内网地址段的流量,公网解析的SQL访问请求可能直接走应用的公网出口;二是仅配置SQL防火墙的VNet规则,没有强制关闭公网访问路径的话,流量仍然可能走公网链路抵达SQL服务器。
需要补充的额外配置
- 确认3个应用服务使用的是区域VNet集成模式,在应用服务的配置页添加应用设置
WEBSITE_VNET_ROUTE_ALL,值设为1,强制应用的所有出站流量都走VNet链路,避免公网解析的SQL流量直接走公网出口。 - Azure SQL侧优先配置私有终结点,关联到同一VNet下的专用子网,同时在SQL网络配置中禁用公网访问,仅允许私有终结点的流量接入;如果使用服务端点方案,需要先在集成应用的子网开启
Microsoft.Sql服务端点,再在SQL防火墙删除所有公网IP规则,仅保留对应子网的服务端点允许规则,同时关闭“允许Azure服务访问此服务器”选项。 - 检查VNet内子网关联的NSG、用户自定义路由表(UDR),确认没有规则阻止应用服务子网到SQL私有链路/服务端点的流量,也没有路由将对应流量转发到VNet外的其他节点。
流量走虚拟网络的验证方法
- 域名解析验证:进入应用服务的Kudu高级工具,在控制台执行
nslookup <你的SQL服务器域名>.database.windows.net(国际版Azure)或者nslookup <你的SQL服务器域名>.database.chinacloudapi.cn(国内版Azure),如果返回的IP是10.0.0.0/8、172.16.0.0/12、192.168.0.0/16段的内网IP,说明解析已经指向私有链路,不会走公网。 - SQL访问日志验证:在Azure SQL服务器的诊断设置中,开启SQL安全审计日志,投递到Log Analytics工作区后,执行以下查询查看所有成功连接的客户端IP,如果IP均为应用服务集成子网的内网IP段,说明流量走VNet接入:
AzureDiagnostics | where ResourceType == "SQLSERVERS" and Category == "SQLSecurityAuditEvents" | where action_name_s == "DATABASE AUTHENTICATION SUCCEEDED" | project 连接时间 = event_time_t, 客户端IP = client_ip_s, 数据库名 = database_name_s | order by 连接时间 desc
- 流日志验证:给应用服务集成的子网关联NSG,开启NSG流日志功能,通过流量分析工具筛选源为应用子网、目标为SQL地址的流量记录,确认所有流量都是VNet内互通的记录,没有公网出口的流量日志。
内容的提问来源于stack exchange,提问作者Calej
相关产品推荐
相关产品推荐

