在公有云環境中,使用者建立了一個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:
- 在Subnet-1定義UDR:到10.1.2.0/24的流量都發給10.1.1.4
- 在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。