[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结



官方的参考连接:

用户定义的路由和 IP 转发:

http://www.windowsazure.cn/documentation/articles/virtual-networks-udr-overview

如何在 Azure 中创建路由并启用 IP 转发:

http://www.windowsazure.cn/documentation/articles/virtual-networks-udr-how-to#How-to-manage-routes

 

为此进行了一个小的实验:

首先在Azure上创建一个虚拟网路,网络拓扑如下:

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第1张图片

每个子网内分别创建了一台虚拟机:

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第2张图片

创建好之后,关闭掉这三台虚拟机的防火墙,三台机器可以使用内网IP互相ping通。

 

关于虚拟网络的信息(Powershell命令中会涉及):

虚拟网络名称:DanEastVNET

三个子网名称:Subnet-110.0.0.0/27),Subnet-210.0.0.32/27),Subnet-310.0.0.64/27

 

首先使用下面的命令创建一个路由表:

New-AzureRouteTable -Name DanTestRouteTable1-Location “China East”

创建完成后,可以使用Get-AzureRouteTable -Name DanTestRouteTable1 –Detailed查看路由表中创建好的路由规则(默认情况下里面什么规则也没有,所以是空的)。

 

接着我们在其中添加一条路由规则:

Get-AzureRouteTable -NameDanTestRouteTable1 | Set-AzureRoute -RouteName dantestroute2 -AddressPrefix10.0.0.64/27 -NextHopType Null

这条规则的名称是dantestroute2,规则是说所有发到10.0.0.64/27Subnet-3)网段的包的下一跳类型是Null(黑洞),即丢弃掉数据包。

添加好路由后,我们使用下面的命令将路由表DanTestRouteTable1应用给Subnet-1

Set-AzureSubnetRouteTable-VirtualNetworkName DanEastVNET -SubnetName Subnet-1 -RouteTableName DanTestRouteTable1

应用了这条规则后,可以试验一下,从Subnet-1中的虚拟机ping Subnet-3中的另外一台虚拟机就无法ping通了,因为数据包根据路由规则被丢弃了。

使用下面这条命令可以看到DanEastVM1这台虚拟机的路由表:

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第3张图片

可以看到我们的路由规则是生效的。

 

下面使用命令再添加一个路由规则:

Get-AzureRouteTable -NameDanTestRouteTable1 | Set-AzureRoute -RouteName dantestroute1 -AddressPrefix10.0.0.68/32 -NextHopType VirtualAppliance -NextHopIpAddress 10.0.0.36

这条规则是说,所有向地址10.0.0.68发送的数据包都会转发到虚拟IP 10.0.0.36上(虚拟机DanEastVM2)。

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第4张图片

当从DanEastVM110.0.0.4)上ping虚拟机Dan08Test10.0.0.68)时,由于更符合新加的dantestroute1这条规则,所以会按照这条路由进行转发,会转发到DanEastVM210.0.0.36)上。但是由于DanEastVM2上面并没有配置路由转发服务,所以此时是ping不通的。

 

我们在虚拟机DanEastVM2上面安装配置”Network Policy and Access Services”(网络策略和访问服务),然后启用本地路由:

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第5张图片

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第6张图片

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第7张图片

配置完成后看到服务已经启动:

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第8张图片

然后测试ping的连通性,发现从10.0.0.4还是ping不通10.0.0.68。这时还需要启用DanEastVM210.0.036)的IP Forwarding的功能,使用下面的命令:

Get-AzureVM -ServiceName DanEastCS -NameDanEastVM2 | Set-AzureIPForwarding -Enable

启用之后使用下面的命令可以查看IP Forwarding的状态:

 

上面都配置完成后,我们在DanEastVM110.0.0.4)中ping一下Dan08Test10.0.0.68),发现就可以ping通了。我们在DanEastVM2中使用Network Monitor抓包看一下,发现的确捕获到了10.0.0.410.0.0.68ICMP报文:

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第9张图片

但是发现了一个现象,只有10.0.0.410.0.0.68的包,并没有返回的包,但是ping的结果的确是通了:

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第10张图片

 

这是因为,我们只配置了从Subnet-1Subnet-3的路由,而反过来的路由还是会走系统的默认路由。接下来我们再配置一个反向的路由表:

New-AzureRouteTable -NameDanTestRouteTable2 -Location "China East"

 

Get-AzureRouteTable -Name DanTestRouteTable2| Set-AzureRoute -RouteName dantestroute1 -AddressPrefix 10.0.0.0/27-NextHopType VirtualAppliance -NextHopIpAddress 10.0.0.36

 

Set-AzureSubnetRouteTable-VirtualNetworkName DanEastVNET -SubnetName Subnet-3 -RouteTableNameDanTestRouteTable2

 

 

完成配置之后,再ping一下并在DanTestVM2上抓包,就可以看到能够抓到双向的数据包了:

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第11张图片

配置完成后,Dan08TestSubnet-3)的路由表:

[Azure]关于用户定义路由(User Defined Route)和 IP 转发功能(IP Forwarding)的测试实验总结_第12张图片

你可能感兴趣的:(Azure)