跨Azure订阅共享静态出站IP与Site-to-Site IPsec连接问题
我有3个Azure订阅:Staging、Dev1和Dev2。Staging订阅已部署并正常运行以下资源:
- 虚拟网络,包含
defaultSubnet(10.0.0.0/24)和GatewaySubnet(10.0.1.0/24) - 连接至
GatewaySubnet的Site-to-Site(IPsec)虚拟网络网关(BGP已禁用) - 连接至
defaultSubnet的带静态出站IP的NAT网关 - 集成到该虚拟网络
defaultSubnet的WebApp
当前Staging的WebApp可通过S2S IPsec访问第三方私有IP资源,访问公网时流量经静态出站IP(满足第三方IP白名单要求)。
需求:让Dev1、Dev2订阅中的WebApp1、WebApp2复用Staging的静态出站IP与S2S(IPsec)连接(涉及REST、SOAP、FTP(s)等传输层连接)。
已尝试操作及问题:
- 在Dev1创建虚拟网络(含/不含网关),将WebApp1接入该虚拟网络,与Staging的虚拟网络建立对等,配置Network Manager连接规则、添加路由,但仅实现跨订阅WebApp互ping,无法让WebApp1通过Staging的IPsec访问第三方资源,也无法强制其使用Staging的静态出站IP。
- 配置对等时,因Dev1虚拟网络已部署Route Server,无法启用「使用远程网关/路由服务器」;删除Route Server后,又无法勾选「允许本地网关/路由服务器转发流量至对等网络」,陷入配置矛盾。
核心思路
要让Dev订阅的WebApp复用Staging的S2S连接和NAT网关,关键是让Dev虚拟网络的流量完全路由至Staging的虚拟网络,由Staging的网关和NAT网关处理出站流量,同时解决虚拟网络对等的路由转发限制问题。
步骤1:清理Dev虚拟网络的冲突资源
先删除Dev1/Dev2虚拟网络中的Route Server,因为Route Server会占用虚拟网络的网关转发配置权限,导致无法启用对等连接的网关转发功能。
步骤2:配置跨订阅虚拟网络对等连接(双向)
分别为Dev1、Dev2的虚拟网络与Staging的虚拟网络建立对等连接,注意以下配置:
- Staging侧对等配置:
- 勾选「允许虚拟网络访问」
- 勾选「允许转发的流量」
- 勾选「允许网关转发」(这一步是让Dev虚拟网络的流量能通过Staging的S2S网关和NAT网关出站)
- Dev侧对等配置:
- 勾选「允许虚拟网络访问」
- 勾选「允许转发的流量」
- 不要勾选「使用远程网关」(因为Staging的网关是BGP禁用状态,且我们需要的是Dev流量走Staging的网关,不是让Staging用Dev的网关)
步骤3:配置Dev虚拟网络的用户定义路由(UDR)
为Dev虚拟网络中WebApp所在的子网添加用户定义路由,强制所有流量(包括第三方私有IP段和公网)路由至Staging虚拟网络的对等连接:
- 创建UDR,添加两条路由规则:
- 目标地址:第三方私有IP段(比如
192.168.0.0/16,根据实际情况调整),下一跳类型选择「虚拟网络对等」,下一跳为Staging的虚拟网络对等连接 - 目标地址:
0.0.0.0/0(所有公网流量),下一跳类型选择「虚拟网络对等」,下一跳为Staging的虚拟网络对等连接
- 目标地址:第三方私有IP段(比如
- 将该UDR关联到Dev虚拟网络中WebApp所在的子网
步骤4:配置Staging虚拟网络的路由与NAT网关
确保Staging的defaultSubnet已关联NAT网关,且Staging虚拟网络的路由表能正确将第三方私有IP段路由至S2S网关:
- 检查Staging虚拟网络的路由表,确认第三方私有IP段的下一跳是S2S虚拟网络网关
- 确认NAT网关的静态出站IP已被第三方加入白名单
步骤5:验证WebApp的虚拟网络集成
确保Dev1/Dev2的WebApp已正确集成到对应的虚拟网络子网,且WebApp的「出站流量」设置为「使用虚拟网络的路由」(在WebApp的网络配置中开启「虚拟网络集成」后,默认会使用子网的UDR,但需确认)
解决Route Server的矛盾问题
如果Dev虚拟网络确实需要Route Server,不要在Dev侧部署,而是将Route Server部署在Staging订阅的虚拟网络中,这样既能保留Route Server的功能,又不影响Dev与Staging的对等连接配置。
内容的提问来源于stack exchange,提问作者0Pat

