跨Tenant的VNET互联一般来说并不是特别常见,但是也不是什么看不到的场景,很久之前其实写过一篇如果跨tenant创建VNET Peering的blog,里边介绍了跨tenant情况下如何创建VNET Peering,有兴趣的可以瞅一眼

​跨tenant建立Azure Global 对等互联​

而除了这种方式之外,还可以通过另一项Azure的网络服务 - Azure Virtual WAN来实现这种跨tenant的VNET互联需求,本质上来讲其实背后都是建立的VNET Peering,只不过对用户来说入口以及适用场景不一样而已

假设只有个别的VNET有这个需求,其实用哪种方式都无所谓,但是对于大规模的网络模型来说,使用Virtual WAN可以极大简化部署和维护的复杂度

而这也是Virtual WAN本身最大的优势之一

关于Virtual WAN,这是一项最近两三年出现的服务,现在应该是比较成熟了,Virtual WAN算是Azure上大规模组网时的核心服务之一,可以很好地整合复杂的网络架构,把复杂的问题简单化,像是之前比较熟悉的ER、Site2Site VPN、P2S VPN,VNET Peering这种常用的组网服务都可以整合进Virtual WAN里,并且灵活的控制路由传播

除了大规模组网时建议使用Virtual WAN以外,小规模应用其实也一样适用,因为我们还要考虑组织的扩展性,架构层面一开始就留下余地的话,将来扩展时会变得容易很多,所以对于一些可以明显看到将来有扩展机会的企业,可以尝试下一开始就使用Virtual WAN组网

回到这次的话题,这次只是个简单的demo,来演示下通过Virtual WAN将两个在不同region,不同tenant的VNET连接到一起,大致的架构如下

通过Azure Virtual WAN实现跨Tenant VNET 连接_Azure

基本非常简单,不需要过多的介绍,如果想让Tenant A下的VNET A和Tenant B下的VNET B互联的话,只需要将两个VNET都连接到Virtual WAN中的HUB即可,两个VNET即可自动建立peering连接,如果有更多的VNET,也只需要再加入到Hub,即可实现多方互联,不需要像VNET Peering那样受不可传递限制

首先需要给tenant A中的用户授权访问Tenant B中的VNET B,这样才能将VNET B连接到Virtual WAN中的hub,这点是通过Azure AD B2B实现的,和之前跨tenant创建VNET Peering其实是一样的

通过Azure Virtual WAN实现跨Tenant VNET 连接_VNET_02

在另外一个账户切换目录,可以看到被授权的resource

通过Azure Virtual WAN实现跨Tenant VNET 连接_组网_03

目前这种跨tenant的连接还是没办法在portal执行,所以只能通过PowerShell或者CLI来做

在Tenant A下执行命令,首先切换到Tenant B获取到VNET信息

Connect-AzAccount -SubscriptionId "TenantB_SUB_ID" -TenantId "TenantB ID" -UseDeviceAuthentication
Get-AzVirtualNetwork |ft name

通过Azure Virtual WAN实现跨Tenant VNET 连接_VNET_04

获取VNET 信息

$VNET = Get-AzVirtualNetwork

切换回Tenant A,可以看到不同于Tenant B,Tenant A下有三个VNET

Connect-AzAccount -SubscriptionId "TenantA_SUB_ID" -TenantId "TenantA ID" -UseDeviceAuthentication
Get-AzVirtualNetwork|Measure-Object

通过Azure Virtual WAN实现跨Tenant VNET 连接_HUB_05

创建到Virtual Hub的Connection

New-AzVirtualHubVnetConnection -ResourceGroupName VWAN -VirtualHubName 'VHub' -Name "EastAsiaCon" -RemoteVirtualNetwork $VNET

通过Azure Virtual WAN实现跨Tenant VNET 连接_Azure_06

可以看到连接了

通过Azure Virtual WAN实现跨Tenant VNET 连接_WAN_07

VM内也可以正常访问对端的VNET

通过Azure Virtual WAN实现跨Tenant VNET 连接_WAN_08