如何阻止Azure VPN Gateway P2S客户端在IP段内互访?
问题场景
基础设施背景
- 虚拟网络IP段:
10.0.0.0/16 - VPN网关所在子网:
GatewaySubnet(10.0.1.0/24) - VPN网关配置:OpenVPN证书认证,客户端IP地址池为
10.2.0.0/24 - 当前状态:已连接的两个客户端(
10.2.0.2、10.2.0.3)可互相访问,存在被攻陷后横向渗透的安全风险
核心需求
阻止10.2.0.0/24段内的所有VPN客户端互相通信;排除多VPN网关部署、IP白名单方案(前者成本高,后者扩展性差);已尝试NSG、Azure防火墙,均无法生效
解决方案
1. 配置VPN网关的客户端拒绝路由(推荐)
Azure托管VPN网关支持通过自定义路由实现客户端网段互访限制:
- 登录Azure门户,找到目标VPN网关,进入「点到点配置」(或OpenVPN专属配置页)
- 添加一条自定义路由规则:
- 目标地址前缀:
10.2.0.0/24 - 下一跳类型:选择拒绝(Reject)
- 目标地址前缀:
- 保存配置后,所有VPN客户端将无法访问同网段内的其他节点,但仍可正常访问虚拟网络内的资源
2. 用用户定义路由表(UDR)拦截流量
创建UDR并关联到GatewaySubnet,丢弃客户端网段互访流量:
- 新建用户定义路由表,添加一条路由:
- 地址前缀:
10.2.0.0/24 - 下一跳类型:无(None)
- 地址前缀:
- 将该路由表关联到VPN网关所在的
GatewaySubnet - 原理:此路由会阻止VPN网关向
10.2.0.0/24网段转发流量,客户端互访数据包会被直接丢弃,不影响客户端与虚拟网络的通信
3. OpenVPN服务器端配置(自定义部署场景)
如果是自行部署的OpenVPN服务器(非Azure托管网关),可直接在服务器配置中添加拒绝路由:
- 编辑OpenVPN主配置文件(通常为
server.conf),加入:push "route 10.2.0.0 255.255.255.0 reject" - 重启OpenVPN服务,客户端会同步这条拒绝路由,从而无法访问同网段其他客户端
关键说明
- NSG无法生效的原因:VPN客户端IP属于虚拟网络外部的地址池,客户端互访流量是通过VPN网关内部转发的,NSG仅管控子网内或进出子网的流量,无法捕获这类内部转发流量
- Azure防火墙无效的原因:客户端互访流量默认不会经过Azure防火墙,必须通过路由强制引导流量至防火墙才能过滤,但这种配置复杂且没必要
内容的提问来源于stack exchange,提问作者itsbriany
相关产品推荐
相关产品推荐

