Azure 使用者自定義路由 (User Defined Route)

衡子發表於2015-08-26

在公有云環境中,使用者建立了一個Vnet,新增了若干個網段後,這幾個網段是全聯通的狀態。

如果希望在Vnet中新增一些功能性的裝置,比如防火牆、IPS、負載均衡裝置等,就需要進行使用者自定義路由的配置。

下圖就是UDR的一個應用場景:

被保護網路的所有流量需要經過中間的防火牆、IPS等裝置。

本文設定的一個簡單場景是兩個網段,Subnet-1和Subnet-2。有一臺裝置VM1有兩個網路卡,跨接了兩個網段。另外兩臺裝置VM2和VM3各在一個網段。如下圖:

如果不設定UDR,10.1.1.5訪問10.1.2.5的流量都通過10.1.1.1->10.1.2.1,不會經過VM1裝置。

對每個網段設定一條UDR:

  1. 在Subnet-1定義UDR:到10.1.2.0/24的流量都發給10.1.1.4
  2. 在Subnet-2定義UDR:到10.1.1.0/24的流量都發給10.1.2.4

定義好這兩條路由後,這兩個網段間互相訪問的流量都會經過VM1了。

 

具體配置如下:

1. 建立VM。

VM2和VM3的建立就是普通的建立方式,在Portal頁面上操作即可,這裡就不描述了。

VM1的建立需要考慮到雙網路卡,設定靜態內網地址等,需要通過PowerShell建立,其命令為:

New-AzureVMConfig -Name hwudr01 -InstanceSize Large -ImageName $vmimage.ImageName | Add-AzureProvisioningConfig -Linux -LinuxUser hengwei -Password password | Set-AzureSubnet -SubnetNames Subnet-1 | Set-AzureStaticVNetIP -IPAddress 10.1.1.4 | Add-AzureNetworkInterfaceConfig -Name nic2 -SubnetName Subnet-2 -StaticVNetIPAddress 10.1.2.4 -IPForwarding Enabled | New-AzureVM -ServiceName hwudr01 -Location "China North" -VNetName hwudr

 

2. 建立UDR

a. 建立路由表

New-AzureRouteTable -Name hwudrvlan01 -Location "China North" -Label hwudrvlan01

New-AzureRouteTable -Name hwudrvlan02 -Location "China North" -Label hwudrvlan02

b. 設定路由

Get-AzureRouteTable -Name hwudrvlan01 | Set-AzureRoute -RouteName hwudrvlan01 -AddressPrefix 10.1.1.0/24 -NextHopType VirtualAppliance -NextHopIpAddress 10.1.2.4

Get-AzureRouteTable -Name hwudrvlan02 | Set-AzureRoute -RouteName hwudrvlan02 -AddressPrefix 10.1.2.0/24 -NextHopType VirtualAppliance -NextHopIpAddress 10.1.1.4

c. 把路由表關聯到網段上

Set-AzureSubnetRouteTable -VirtualNetworkName hwudr -SubnetName Subnet-1 -RouteTableName hwudrvlan02

Set-AzureSubnetRouteTable -VirtualNetworkName hwudr -SubnetName Subnet-2 -RouteTableName hwudrvlan01

d. Enable IP Forwarding

只有開啟了IP Forwarding模式,被配置的虛擬機器才能進行資料包的轉發,否則只能接受目標地址是自己的IP包。

開啟的命令如下:

Get-AzureVM -Name hwudr01 -ServiceName hwudr01 | Set-AzureIPForwarding -Enable

 

配置工作完成。此時在10.1.1.5中ping 10.1.2.5,同時在VM1上抓包,可以看到ICMP的雙向資料包都經過了VM1。

相關文章