在 VLAN 这篇文章中知道,设置 VLAN 目的是隔离大型的广播域,将其分成很小的广播域,从而更好的管理。但也就带来了一些问题:如流量不能在不同的 VLAN 间通信。

而为了解决这个问题,可以采用如下技术:

  • 添加路由器(单臂路由)
  • 三层交换机(SVI)

单臂路由

首先可以增加一个路由器,采用如下的拓扑结构:

但这同样有一个问题,就是一个 VLAN 需要占用一个路由器上的接口,那么,能不能向交换机的 Trunk 口那样,在一个接口上跑所有的 VLAN 呢。

答案是肯定的,就是通过子接口的概念,将一个物理接口虚拟成多个子接口,并且为每个子接口配置一个 VLAN。这一技术也称为单臂路由。

简单来说,单臂路由是指在路由器的一个接口上通过配置子接口(逻辑接口)的方式,实现原来相互隔离不同的 VLAN 之间的互联互通。

配置单臂路由:

#  Switch
Switch>en
Switch#conf t
Switch(config)#vlan 10,20
Switch(config)#int e 0/0
Switch(config-if)#switchport mode ac
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config)#int e 0/1
Switch(config-if)#switchport access vlan 20
Switch(config-if)#no shu
Switch(config-if)#int e 0/2
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shu # PC: R1
Router>en
Router#conf t
Router(config)#no ip routing
Router(config)#ho R1
R1(config)#ip default-gateway 192.168.10.254
R1(config)#int e 0/0
R1(config-if)#ip add 192.168.10.1 255.255.255.0
R1(config-if)#no shu
R1(config-if)#do wr # PC: R2
Router>en
Router#conf t
Router(config)#no ip routing
Router(config)#ho R2
R2(config)#ip default-gateway 192.168.20.254
R2(config)#int e 0/0
R2(config-if)#ip add 192.168.20.1 255.255.255.0
R2(config-if)#no shu
R2(config-if)#do wr # Router: r4
Router>en
Router#conf t
Router(config)#ho r
r(config)#int e0/0
r(config)#no shu # configure sub-interface 10
r(config)#int e0/0.10
# config vlan for this sub-interface
r(config-subif)#encapsulation dot1Q 10
r(config-subif)#ip add 192.168.10.254 255.255.255.0
r(config-subif)#no shu # configure sub-interface 20
r(config)#int e0/0.20
r(config-subif)#encapsulation dot1Q 20
r(config-subif)#ip add 192.168.20.254 255.255.255.0
r(config-subif)#no shu

分析一下通讯过程:

R1 要给 R2 发送 ICMP,发现没有对应网关的 MAC 地址,将包搁置。发送 ARP 请求网关的 MAC 地址

Switch 学习后进行泛洪,R4 收到 ARP 请求,并做出 ARP 应答。

Switch 再次学习来自 R4 的 Arp 应答,并直接转发给 R1.

R1 解封装 ARP 应答包,并且将搁置的 ICMP 包添加 MAC 地址后,发出。

Switch 收到 ICMP 后,之间转发给 R4,R4 解封装发现 三层 IP 是给自己能到达网段的,进行封包:

4 层:ICMP 报头

3 层:IP 报头,源 IP 192.168.10.1/24 目的 IP 192.168.20.1/24

2 层: 源 MAC:aabb.cc00.4000 目的 MAC:不清楚

将包搁置,发送 Arp 请求 获取 R2 的MAC 地址

Switch 学习发来的 ARP 请求,并泛洪。R2 收到 Arp 请求做出应答,Switch 再次学习,然后直接转发给 R1。

R1 解析 ARP 应答,并将搁置的 ICMP 包发给 R2。

R2 又会做出 ICMP 应答,Switch 之间转发给 R1,R1 解封装发现 ICMP 的应答报文的目的 IP 是 R1,接着重新封装转发给 Switch。

Switch 再直接转发给 R1。

综上:我们可以发现一个有趣的现象,在 R4 和 交换机的链路上可以看到有双重的 Icmp 的 reqeust 和 reply 如下:

这里在解释一下两个 request 和 reply 的含义:

第一个 request 是:R1 发送 R4 (R4 是 R1 的网关) 并且应该带有 VLANID = 10 的 Tag,如下

第二个 request 是:R4 发给 R2 的 ICMP 包,并且应该带有 VLANID = 20 的 TAG,因为是从虚拟的子接口 Vlan20 发出,如下

第一个 reply 是:R2 发给 R4,带有 VLANID = 20 的 Tag,如下

第二个 replay 是:R4 发给 R1 的,带有 VLANID = 10 的 TAG,如下

因此我们可以推测出在 R4 内部,进行了 Tag 的去除和封装。

SVI(Switch Virtual Interface)

另一种方式就是通过三层交换机,来达到路由转发的功能。

三层交换机,具有二层和三层转发的功能。

网关接口,用于三层交换机跨 VLAN 间路由,具体可以通过 interface vlan 接口配置命令来创建 svi,然后实现路由功能

SVI 配置:

# switch
Switch(config)#ip routing # 开启路由功能
Switch(config)#no ip cef # 关闭cef(这个属于模拟器的bug,真实环境下不用) # 创建 vlan
Switch(config)# vlan 10,20
# 配置模式
Switch(config-vlan)#int e 0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config-if)#no shutdown
Switch(config-vlan)#int e 0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20
Switch(config-if)#no shutdown # 创建SVI接口
Switch(config)#interface vlan 10
Switch(config-if)#no sh
Switch(config-if)#ip address 192.168.1.254 255.255.255.0 Switch(config)#interface vlan 20
Switch(config-if)#no sh
Switch(config-if)#ip address 192.168.2.254 255.255.255.0 # PC
# 关闭路由功能
PC1(config)#no ip routing # 配置 ip
PC1(config)#interface e0/0
PC1(config-if)#no sh
PC1(config-if)#ip address 192.168.1.1 255.255.255.0 # PC 配置网关
PC1(config)#ip default-gateway 192.168.1.254

由于是三层交换机,192.168.1.0/24 和 192.168.2.0/24 两个网段直接就可以互通了,不需要再去配置路由表,我们可以看一下路由表:

对三层交换机内部的讲解:

由于 e0/0 口是 access 口,所以会被打上相应 vlan ID=10 的 tag。

由于是三层交换机,通过 SVI 模拟路由器,也就是说明进行的是三层通信,可是传送过来的数据包中包含 tag,

也就说明存在一个能把 tag 拆掉的 access 口才能通信,所以推测这个口是虚拟的 Vlan 10,同时 Vlan 也是通往新网段的网关。

EtherChannel

有时交换机的带宽无法满足转发流量的需要,就会出现阻塞的情况。一般会升级接口的带宽,但有时往往特别大型的流量不是时常发生。手动的升级接口麻烦,甚至有些浪费。为了解决这个问题,EtherChannel 接口出现了,它可以将多个物理接口捆绑在一起同时进行流量的转发,在流量较大时增加连接接口的数量,从链路视角看,就是同时连接多根链路,实现并行传输。

同时也出现了一个问题,在之前介绍交换机 STP 的内容时,了解交换机内部通过 STP 来防止环路,会将某些接口 Block。当如果想用这种并行的链路连接,就必须形成环路。

最后为了保证在 STP 不失效的情况下,应用并行链路,就会采用 EtherChannel 这种配置。会将所有绑定的接口视为同一个接口,这样 STP 还能正常的运行。

但想要实现 Port-channel 接口,需要保证所有的接口配置完全相同:

  1. 物理接口支持 Etherchanbnel
  2. 物理接口保持一致
  3. 绑定的数量一致
  4. 接口模式一样(如二层接口,三层接口)
  5. 接口类型必须相同(带宽)
  6. 双工,
  7. 工作模式,trunk,switch
  8. vlan 相同

配置了 EtherChannel 的接口,具有如下优点:

  • 逻辑聚合接口
  • 高带宽
  • 负载均衡
  • 为 STP 提供一个逻辑接口
  • 冗余(在断开下,仍能保持运行)

配置 EtherChannel

配置 EtherChannel 有两种方式:

  1. 手动

    • 手动将交换机上多个端口,捆绑成一个
  2. 自动学习(PAGP思科私有,LACP公有)

LACP 的模式:

  • Passive:等待主动的接口,建立连接
  • Active:主动发送消息,和另一端的接口建立连接

下面是 LACP 的建立原则:

# bind interfaces
s1(config)#interface range ethernet 0/0 - 1
s1(config)#shutdown
s1(config)#channel-group 1 mode active
s1(config)#no shutdown
# apply configuration
s1(config)#interface port-channel 1
s1(config)#switchport trunk encapsulation dot1q
s1(config)#switchport mode trunk s1#show ip int bri
s1#show etherchannel summary # bind interfaces
s2(config)#interface range ethernet 0/0 - 1
s2(config)#shutdown
s2(config)#channel-group 1 mode active
s2(config)#no shutdown
# apply configuration
s2(config)#interface port-channel 1
s2(config)#switchport trunk encapsulation dot1q
s2(config)#switchport mode trunk s2#show ip int bri
s2#show etherchannel summary

总结

这篇文章中主要提到了三种技术:

  • 单臂路由和 SVI 是为了解决 VLAN 在不同网段间通信的问题。

  • EtherChannel 是为了解决物理端口带宽不够时,如果去调整的方案。

在不同网段使用 VLAN 通信 - SVI,单臂路由的更多相关文章

  1. 跨Vlan通信:单臂路由,三层交换机

    实验涉及命令以及知识补充(涉及Vlan通过的以太网口需要设置为Trunk口) 单臂路由 父接口 no ip address :删除实现单臂路由接口的IP no shutdown 虚拟子接口 R2(co ...

  2. 实现不同VLAN间的通信(单臂路由和链路聚合)

    单臂路由与链路聚合 1.单臂路由 1.1 链路类型 1.2 子接口 2. 链路捆绑 1.单臂路由 是指在路由器的一个接口上通过配置子接口,实现原来相互隔离的不同VLAN(虚拟局域网)之间的互联互通. ...

  3. 交换知识 VLAN VTP STP 单臂路由

    第1章 交换基础 1.1 园区网分层结构 层次 作用 出口层 广域网接入 出口策略 带宽控制 核心层 高速转发 服务器接入 路由选择 汇聚层 流量汇聚 链路冗余 设备冗余 路由选择 接入层 用户接入 ...

  4. 小知识get:利用单臂路由实现不同vlan间路由

    一.单臂路由概述 1.1.单臂路由实现不同vlan间通信 链路类型 交换机连接主机的端口为access链路 交换机连接路由器的端口为Trunk链路 子接口 路由器的物理接口可以被划分成多个逻辑接口 每 ...

  5. 单臂路由&链路捆绑

    单臂路由&链路捆绑 目录 一.单臂路由 1.1.单臂路由作用 1.2.单臂路由实现不同VLAN间通信的原理 二.单臂路由相关命令配置 三.链路捆绑 3.1.以太网链路聚合原理 3.2.命令配置 ...

  6. 单臂路由与三层交换机实现VLAN通信

    不同VLAN之间相互通信的两种方式 (单臂路由.三层交换) 试验环境:东郊二楼第三机房 试验设备:Catalyst 2950-24(SW3)                   Cisco 2611( ...

  7. 三层交换单臂路由vlan间通信综合实验之降龙要点[转]

    单臂路由三层交换机提供vlan间的通信之菜鸟之降龙详解要点: 图示 PC:左到右依次设置IP172.16.10.1,    20.1,  30.1,   40,1  ,50,1  /24 网关10.2 ...

  8. 三层交换单臂路由vlan间通信综合实验之降龙要点--Lee

    单臂路由三层交换机提供vlan间的通信之菜鸟之降龙详解要点: 图示 PC:左到右依次设置IP172.16.10.1,    20.1,  30.1,   40,1  ,50,1  /24 网关10.2 ...

  9. VLAN之间单臂路由通信

    实验目的 理解单臂路由的应用场景 掌握路由器子接口的配置方法 掌握子接口封装VLAN的配置方法 理解单臂路由的工作原理 实验原理 单臂路由解决用户需要跨越VLAN实现通信的情况. 原理:通过一台路由器 ...

随机推荐

  1. 利用SignalR实施响应股票数据波动

    1.新建ASP.NET Web应用程序,  选择Empty模板. 2.创建Stock.cs类 public class Stock { /// <summary> /// 价格 /// & ...

  2. python读取EXCEL是去掉空白行和表头全部重命名

    当读取进来的表格如图所示,转换成图2. import pandas as pd # header:指定作为列名的行,默认0,即取第一行的值为列名.数据为列名行以下的数据:若数据不含列名, # 则设定 ...

  3. java 面向对象(三十六):泛型五 通配符

    1.通配符的使用 /* 通配符的使用 通配符:? 类A是类B的父类,G<A>和G<B>是没关系的,二者共同的父类是:G<?> */ @Test public voi ...

  4. java 面向对象(八):面向对象的特征一:封装性

    面向对象的特征一:封装与隐藏1.为什么要引入封装性?我们程序设计追求“高内聚,低耦合”.高内聚 :类的内部数据操作细节自己完成,不允许外部干涉:低耦合 :仅对外暴露少量的方法用于使用. 隐藏对象内部的 ...

  5. DOM 和 BOM 区别

    DOM, DOCUMENT, BOM, WINDOW 区别DOM 是为了操作文档出现的 API,document 是其的一个对象:BOM 是为了操作浏览器出现的 API,window 是其的一个对象. ...

  6. Flask 基础组件(七):蓝图

    1 蓝图资源 蓝图有自己的目录,它的所有资源都在其目录下.蓝图的资源目录是由创建Blueprint对象时传入的模块名”__name__”所在的位置决定的.同时,我们可以指定蓝图自己的模板目录和静态目录 ...

  7. Spring Boot中Tomcat是怎么启动的

    Spring Boot一个非常突出的优点就是不需要我们额外再部署Servlet容器,它内置了多种容器的支持.我们可以通过配置来指定我们需要的容器. 本文以我们平时最常使用的容器Tomcat为列来介绍以 ...

  8. 适用于IE8浏览器的bootsarp下拉菜单(支持多选,全选)

    html部分代码,引用及整体项目Github项目地址:https://github.com/CNbozi/combobox 1 <!DOCTYPE html> <html lang= ...

  9. oracle创建Javasource实现数据库备份

    因客户需求,需要在业务系统中,菜单中的网页中的按钮中加入一个按钮,用于点击备份数据库 (环境:只配置了数据源连接oralce ,应用服务器和数据服务器不在一台机器,且数据库机器oracle操作系统账号 ...

  10. Python Ethical Hacking - VULNERABILITY SCANNER(8)

    Implementing Code To Discover XSS in Parameters 1. Watch the URL of the XSS reflected page carefully ...