RAS Gateway(远程访问服务网关)在Windows Server中承担着VPN、DirectAccess以及多租户边缘网关等多种角色。当启用多租户模式后,它不再为一套整体网络提供单一入口,而是能够同时承载数十个甚至上百个相互隔离的租户网络。每个租户可以拥有自己的站点到站点VPN隧道、自己的BGP路由域、自己的虚拟网络子网,所有配置在同一个RAS Gateway实例上并行运行,却互不干扰。这种能力的实现依赖于Hyper-V网络虚拟化提供的路由域隔离机制,而不是简单地给每个租户分配一块网卡。

在实际部署前,必须清楚一个关键区别:单租户RAS Gateway中的路由表是全局共享的,而多租户RAS Gateway为每个租户维护独立的路由域和BGP实例。如果把多租户网关当成普通VPN服务器来配置,所有租户的流量会进入同一个路由域,出现路由冲突、前缀覆盖甚至跨租户访问。因此,规划阶段必须明确每个租户的自治系统号(ASN)、隧道端点地址、内部子网以及BGP邻居关系。
多租户架构中的路由域与BGP实例
Windows Server的RAS Gateway多租户模式依赖RemoteAccess服务与BGP路由器的组合。RemoteAccess负责建立和维护各租户的站点到站点VPN隧道,而BGP路由器则负责在隧道之上交换路由信息。系统为每个租户创建一个独立的BGP路由器实例,每个实例拥有自己的本地ASN、对等体列表和路由策略。这些实例运行在同一个操作系统内,但通过路由域标识彼此隔离,就像在一台物理服务器上运行多个虚拟路由器。
路由域隔离并不意味着每个租户必须使用不同的物理网卡或不同的IP协议栈。实际上,所有租户的隧道可以终结在同一个公网IP地址上,依靠IKEv2或SSTP的隧道标识区分不同租户。隧道建立后,内部流量进入各自的虚拟路由域,BGP学习到的前缀只在本租户的路由表中生效。管理员可以使用Get-BgpRouter查看当前启用的BGP路由器实例,每个租户会显示不同的RouterId和ASN。
这种架构的好处非常明显:云服务提供商只需部署一套RAS Gateway集群,就能为大量客户提供独立的站点到站点VPN接入。租户A的分支机构无法通过网关访问租户B的内部网段,即使两者的子网地址恰巧重叠也不受影响,因为各自的路由域完全隔离。不过,这也要求管理员必须为每个租户单独配置隧道参数和BGP策略,不能依赖全局默认值。
部署前置条件与网络规划
启用多租户RAS Gateway之前,需要准备一台运行Windows Server且已安装RemoteAccess角色的服务器。建议使用Windows Server 2019或更高版本,因为这些版本对多租户BGP和VPN性能做了显著优化。服务器至少需要两块物理网卡:一块连接外部网络,用于接收各租户的站点到站点VPN连接;另一块连接内部管理网络或租户虚拟交换机。如果使用Hyper-V虚拟交换机作为内部网络,还需要提前创建好对应虚拟交换机。
安装角色和启用多租户模式可以通过PowerShell完成。首先使用Install-WindowsFeature RemoteAccess -IncludeManagementTools安装远程访问功能,然后运行Install-RemoteAccess -VpnType VpnS2S -MultiTenant。这一步会将RRAS服务配置为多租户站点到站点VPN模式,同时启用BGP路由功能。注意执行前必须确认服务器没有加入任何现有单租户VPN部署,否则需要先清除旧配置,命令为Uninstall-RemoteAccess -Force。
网络规划时,每个租户需要分配以下参数:一个唯一的租户名称、一个本地ASN、隧道两端的IP地址、内部子网前缀。公网侧IP地址通常是网关服务器的外部接口地址,租户侧IP地址由租户提供。如果租户内部网络使用BGP动态路由,还需要指定对等ASN和BGP邻居地址;如果租户只有静态路由,则无需启用该租户的BGP,直接添加静态路由即可。建议为每个租户建立独立的配置文档,避免参数混淆。
PowerShell配置租户VPN与BGP
下面通过一个完整示例演示如何为一个名为TenantA的租户配置站点到站点VPN和BGP。假设RAS Gateway外部接口地址为203.0.113.10,租户A的VPN设备公网地址为198.51.100.20,租户内部子网为10.10.0.0/16,本地ASN为64512,租户ASN为64513。首先为租户创建VPN连接,使用IKEv2协议。
# 添加租户A的站点到站点VPN连接 Add-VpnS2SInterface -Name "TenantA-S2S" -Protocol IKEv2 -Destination 198.51.100.20 -AuthenticationMethod PSKOnly -SharedSecret "TenantA-Str0ngPSK!" -IPv4Subnet 10.10.0.0/16 -SourceIpAddress 203.0.113.10 # 为租户A创建独立的BGP路由器实例 Add-BgpRouter -BgpIdentifier 10.10.0.1 -LocalASN 64512 -RouterName "TenantA-BGP" # 添加BGP对等体 Add-BgpPeer -RouterName "TenantA-BGP" -Name "TenantA-Peer" -PeerIPAddress 10.10.0.2 -PeerASN 64513 -LocalIPAddress 10.10.0.1 # 将VPN接口绑定到租户A的BGP路由器 Add-BgpCustomRoute -RouterName "TenantA-BGP" -Network 10.10.0.0/16
上述命令中,Add-VpnS2SInterface创建了租户A的隧道接口,并指定了预共享密钥和远端子网。Add-BgpRouter则创建了一个名为TenantA-BGP的独立路由实例,其本地ASN为64512,BGP标识符使用隧道内地址10.10.0.1。然后通过Add-BgpPeer把租户侧的VPN设备作为BGP邻居加入,最后用Add-BgpCustomRoute通告本地子网。如果租户选择静态路由,可以跳过BGP配置,直接运行Add-VpnS2SInterface并添加静态路由即可。
配置完成后,需要验证隧道和BGP状态。运行Get-VpnS2SInterface查看隧道是否建立成功,ConnectionState应为Connected。运行Get-BgpPeer -RouterName "TenantA-BGP"查看BGP邻居状态,State应为Established。如果邻居状态长期为Idle或Connect,则需要检查网络连通性、预共享密钥以及ASN是否匹配。
常见部署问题与排障思路
多租户RAS Gateway部署中最常见的问题是路由泄漏。典型表现是租户A的分支网络能够访问租户B的内部服务器,或者两个租户使用相同子网时出现路由冲突。排查时首先要确认每个租户是否拥有独立的BGP路由器实例,使用Get-BgpRouter列出所有实例,检查它们的RouterName和LocalASN是否唯一。如果发现多个租户共享同一个路由器实例,说明配置有误,需要重新为每个租户运行Add-BgpRouter。
另一个高频问题是BGP邻居无法建立。可能的原因包括:隧道尚未建立、BGP对等体地址不可达、ASN配置错误、防火墙拦截TCP 179端口。排查顺序建议先确认Get-VpnS2SInterface的ConnectionState为Connected,然后从RAS Gateway内部ping对端BGP地址。注意多租户场景下,不同租户可能使用相同的隧道内地址,ping时必须指定正确的源地址。可以使用Test-NetConnection -ComputerName 10.10.0.2 -Port 179验证TCP连接。如果端口不通,检查Windows防火墙入站规则是否允许BGP服务。
租户隔离失效还可能源于静态路由配置错误。某些管理员为了快速上线,在全局路由表中添加了所有租户的子网,这完全破坏了多租户隔离。务必使用Add-BgpCustomRoute或租户级静态路由,而不是在RRAS全局设置中添加路由。最后,如果遇到隧道间歇性断开,检查IKEv2的生存时间和重传参数,必要时调整预共享密钥强度。定期查看事件日志中的RemoteAccess和BGP相关条目,位置在Event Viewer中的Applications and Services Logs\Microsoft\Windows\RemoteAccess,可以有效定位配置错误。
Windows ServerRAS Gateway多租户网关修改时间:2026-09-24 12:59:56