在公有云环境中,用户创建了一个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. Orthogonal Least Squares Learning Algorithm for Radial Basis Function Networks

    Orthogonal Least Squares Learning Algorithm for Radial Basis Function Networks S. Chen, C. F. N. Cow ...

  2. Android环境搭建 NDK+ADT(免cywgin)

    JDK下载: 1下载地址  http://www.oracle.com/technetwork/java/javase/downloads/index.html 2配置环境变量 JAVA_HOME:创 ...

  3. Linux:进程管理

    Linux:进程管理 进程间通信 文件和记录锁定. 为避免两个进程间同时要求访问同一共享资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其进行锁定,该进程访问完后再释放.这是UNIX为共享 ...

  4. butterknif

    // butterknife public class ButterknifeActivity extends Activity { @butterknife.Bind(R.id.tv_title) ...

  5. Java多线程系列 JUC锁08 LockSupport

    转载 http://www.cnblogs.com/skywang12345/p/3505784.html https://www.cnblogs.com/leesf456/p/5347293.htm ...

  6. JS中不同类型的值比较问题

    我们比较数据的时候大多是以下两种情况: 3 > 4 ; "m" > "n" ; 但有时候可能会出现比较符号两侧的数据类型不相同的场景,例如 5 &g ...

  7. 本地文件读取(csv,txt)时字符编码问题解决

    今天进行csv文件读取时,老是入库为空,因为其中有中文字符,我要通过中文字符映射成相应的编号(上升:1011,下降:1012),于是怎么也取不到编号.刚开始以为程序映射出了问题,最后日志打出来后,发现 ...

  8. Kafka- Spark消费Kafka

    在高版本的API中 val brokers = properties.getProperty("kafka.host.list") val topics = Set(propert ...

  9. JAVA- 数据库连接池原理

    第一次Java程序要在MySQL中执行一条语句,那么就必须建立一个Connection对象,代表了与MySQL数据库的连接通过直接发送你要执行的SQL语句之后,就会调用Connection.close ...

  10. CSS3制作分步注册表单

    这个DEMO是使用CSS3制作的一个分步注册表单,每个input对应的是每一步,在表单得到焦点时,对应的step也会进行对应的改变.不过这个效果是使用js代码来实现,但整个表单的外观是由CSS3来完成 ...