在公有云环境中,用户创建了一个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。

Azure 用户自定义路由 (User Defined Route)的更多相关文章

  1. Azure通过Vnet Peering和用户自定义路由(UDR)实现hub-spoken连接

    Azure的Vnet Peering可以把Azure中不同的Vnet连接起来的技术.底层是通过对NVGRE的租户标签进行修改,实现了不同租户间的互通.这种技术非常类似传统网络中MPLS/VPN不同租户 ...

  2. vue路由对象($route)参数简介

    路由对象在使用了 vue-router 的应用中,路由对象会被注入每个组件中,赋值为 this.$route ,并且当路由切换时,路由对象会被更新. so , 路由对象暴露了以下属性: 1.$rout ...

  3. react 中的路由 Link 和Route和NavLink

    route是配置,link是使用 https://blog.csdn.net/chern1992/article/details/77186118(copy) 嵌套路由一般使用Route,类似于vue ...

  4. 路由配置(route IP

    转载于:http://blog.csdn.net/chenlycly/article/details/52141854 使用下面的 route 命令可以查看 Linux 内核路由表. # route ...

  5. Angular入门到精通系列教程(13)- 路由守卫(Route Guards)

    1. 摘要 2. 路由守卫(Route Guards) 2.1. 创建路由守卫 2.2. 控制路由是否可以激活 2.3. 控制路由是否退出(离开) 3. 总结 环境: Angular CLI: 11. ...

  6. 路由信息相关 route 网卡

    目录 route命令 1.查看路由表 2.管理路由 基本网络配置 添加网卡地址 修改网卡UUID route命令 路由表管理命令,路由表主要构成: Destination: 目标网络ID,表示可以到达 ...

  7. 一个类似backbone路由的纯净route ( 前端路由 客户端路由 backbone路由 )

    大家用backbone.angular,可能都习惯了内置的路由,这两个框架的路由都是非常优秀的,强大而简单. 客户端(浏览器)路由原理其实比较简单,其实就是监听hash的变化. 在之前的架构探讨中,说 ...

  8. 路由信息对象Route之属性query和params的区别

    query的使用 第一步:在<router-link/>标签中配置如下 <router-link :to="{name:'beijing',query:{id:1,user ...

  9. Asp.net core (学习笔记 路由和语言 route & language)

    https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...

随机推荐

  1. java.util包下面的类---------01---示意图

    一直在使用util包下面的这些类,甚至有些没用过的,想要都去认识认识他们!也许在未来的一天可以用到! 图太大不好截图!部分没有截全!

  2. Python小练习(持续更新....)

    最近一直在学习python,这些小练习有些是书上的,有些是别人博客上的! # 1.题目1# 给一个字符串,统计其中的数字.字母和其他类型字符的个数:# 比如输入“124mid-=”,输出:数字=3,字 ...

  3. 【python】-- 初识python

    Python 安装 windows: 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机 ...

  4. Android笔记之GridView

    完整Demo链接:https://pan.baidu.com/s/1d_G9aCwBxpiYQcdQhwSDDw,提取码:5deh 效果图 activity_main.xml <?xml ver ...

  5. CF451E Devu and Flowers(容斥)

    CF451E Devu and Flowers(容斥) 题目大意 \(n\)种花每种\(f_i\)个,求选出\(s\)朵花的方案.不一定每种花都要选到. \(n\le 20\) 解法 利用可重组合的公 ...

  6. 图形数据库(GraphDB)

    Date: 2016-01-27 Title: 图形数据库-1 Published: true Type: post Excerpt: Category: GraphDB 图形数据库(GraphDB) ...

  7. Java注释Override、Deprecated、SuppressWarnings

    在J2SE5.0的java.lang包中预定义了三个注释:Override.Deprecated和SuppressWarnings Override 这个注释的作用是标识某一个方法是否覆盖了它的父类的 ...

  8. 深入理解利用new创建对象的执行过程以Person p=new Person("张三",20);为例

    代码如下: class Person { private String name="haha"; private int age; private static String co ...

  9. php关于<<<的用法

    Heredoc技术,在正规的PHP文档中和技术书籍中一般没有详细讲述,只是提到了这是一种Perl风格的字符串输出技术.但是现在的一些论坛程序,和部分文章系统,都巧妙的使用heredoc技术,来部分的实 ...

  10. python 3 mysql sql逻辑查询语句执行顺序

    python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_t ...