单臂路由:扩容、负载均衡与网络安全的高效解决方案

数据来源

一、介绍(被三层交换机淘汰了)

解决的问题 

        1)VLAN控制广播域

        2)不同的VLAN之间无法通信

        3)1个VLAN = 1个网段

               如:

                        vlan10 -- IT -- 10.1.1.0/24

                        vlan20 -- IT -- 20.1.1.0/24

        4)不同的VLAN之间通信通过路由来实现

路由器的作用:就是连接不同网段,让不同网段能够通信,也能让不同的VLAN之间通信,实现方式将路由器当中转站。

单臂路由通过一根网线设置分叉很多条,让不同的VLAN之间可以通信,但是广播还是被限制的这个不用担心,单臂路由只会转发单播,不会转发广播。

如下图:下面的两台PC是不能互相通信,可以使用:ping 目标地址   # 测试网络连通性

缺点:

        1)容易出现网络瓶颈

                原因:随着一个公司的员工越来越多,PC也会越来越多,这些PC通信都是通过一条网线都达路由器,数量一多就会出现员工上网卡,访问网页之类的有点慢之类的问题,虽然现在的网线技术发展越来越好,百兆、千兆、万兆,但是数据量一多万兆也挺不住,示意图如下:。(上千人的情况,人数少的话影响不大)

        2)容易发生单点物理故障

                原因:所有的子接口依赖于总物理接口,比如下面局域网,当交换机的Fa0/5或路由器的Fa0/0,被手动关闭或者坏了,那这个局域网就瘫痪了,整个公司都无法上网。

        3)VLAN间通信的每个帧都进行路由,导致效率下降。

                原因:路由器的工作原理:一个帧到达路由器之后,(1)路由器会识别dot1q 802.lq或其他标签,然后拿掉这个标签(2)然后检查帧的目标MAC地址是否是自己(3)检查帧的IP包的目标IP地址,然后和路由器的路由表进行匹配查看路由的目标端口,并拿掉帧头(因为现在的侦听中的目标MAC地址是路由器自己),准备发送出去(就是查看要把帧发到那个端口)(4)帧到达路由器目标端口后,发送ARP广播报文通过帧的目标IP地址请求目标MAC地址(5)获取到目标MAC地址后封装帧头,并将帧转发出去。

        就这个过程每个帧都会经历,一个帧一般情况下最大MTU为1500字节,数据的净荷(payload)部分预留是1472字节,就发送一个几百兆(M)的文件可能都都几万个帧,路由器对每个帧都会进行路由,都要走上面的流程这效率就很低了。

二、单臂路由实现

目的:让上图的这VLAN10和20所属的两台PC能够通信

1)配置路由器

        en                                                     # 进入特权模式

        conf t                                               # 进入全局配置模式

        int  f0/0.1                                         # 为f0/0这个接口创建一个子接口0.1,虚拟接口

        ip add 10.1.1.254  255.255.255.0   # 给路由器的f0/0.1子接口配置IP

        no shut                                            # 开启端口

        exit                                                   # 退到上一级

        int  f0/0.2                                          # 为f0/0这个接口创建一个子接口0.2,虚拟接口

        ip add 20.1.1.254  255.255.255.0   # 给路由器的f0/0.2 子接口配置IP

        no shut                                            # 开启端口 

        exit                                                   # 退到上一级

        int  f0/0                                            # 进入  f0/0  接口配置模式

        no shut                                            # 开启端口 

注意:f0/0 这个物理接口没有配IP,他只是充当一个通道,把数据引到f0/0.1和f0/0.2虚拟的子接口上,其中f0/0.1 接口的IP是10.1.1.0网段的网关f0/0.2 接口的IP是20.1.1.0网段的网关

2)出现的问题

        现在如果就按照上面这种布局和路由器配置,图中的两台PC使用ping命令是不能ping通另一台PC的,因为PC向外发包的访问顺序如下

  1. 首先判断目标IP地址与自己是否在同一网段。
  2. 如果同一网段,则直接发出去,而不找网关
  3. 如不在同一网段,则直接发包给网关 (一般路由器的IP地址就是网关)

        很明显上图中的两台PC不是一个网段, PC会发包直接发给网关,要发给网关就要经过交换机的F0/3接口,但是F0/3接口并没有设置过VLAN,默认就是VLAN1,按照VLAN的知识不同VLAN之间,是不能通信的,所以最好把F0/3接口设置成trunk端口,在路由器上输入命令:

        en   # 进入特权模式

        conf t   # 进入全局配置模式

        int f0/x   # 进入要配置的接口

        switchport  trunk   encapsulation dot1q/isl  (常用dot1q 802.lq标签)# 这个端口如果作为trunk 需要封装成dot1q或isl (可选,模拟器不支持这命令)

        switchport  mode access/trunk (这里用trunk,要还原用access) # 设置端口为中继或接入端口

        exit   # 退到上一级

        这样以后经过F0/3端口的帧都会被打上标签,用来区分这个帧是来自那个VLAN,打上标签之后数据继续往上走就会来到路由器的物理端口F0/0路由器虽然是三层设备也有二层设备交换机的部分功能,但是它是不能设置trunk端口的也没有VLAN表,不能设置trunk端口那就得让路由器的端口能够识别标签,一个三层端口能识别一种标签,且只能识别一种标签,按照上图的情况就只能让虚拟的子接口f0/0.1和f0/0.2来负责识别标签的工作,f0/0.1 识别802.1q标签的10标签(vlan10),f0/0.2 识别802.1q标签的20标签(vlan20),路由器配置命令:

        en   # 进入特权模式

        conf t   # 进入全局配置模式

        int f0/0.1   # 进入f0/0.1端口的配置模式

        encapsulation  dot1q  10   # 配置f0/0.1端口可以识别802.1q标签的10标签

        exit   # 退到上一级 

        int f0/0.2   # 进入f0/0.2端口的配置模式

        encapsulation  dot1q  20   # 配置f0/0.2端口可以识别802.1q标签的20标签

3)他们通信的详细过程:

1下图时假设PC是没有通信过,当10.1.1.1的PC1要与20.1.1.1的PC2通信,PC1就会封装数据帧(如下图),但是现在还不知道目标MAC地址,但是知道目标IP地址是10.1.1.254(因为10和20是不同网段,上面有讲,不是同一网段就会把数据发给网关),所以就会发送ARP广播请求获取目标MAC地址,报文的大概内容是:我是10.1.1.1,目标地址是AA,谁是10.1.1.254?把你的MAC地址告诉我,当这个报文(帧)到达F0/3会被加上标签10,路由器收到帧后,就会把标签去掉,后面在细讲。

完整帧结构

        (2路由器收到PC1的ARP广播报文后,就会单播响应PC1,报文大概内容是:我是10.1.1.254,我的MAC地址是CC(注意这个帧的源MAC是路由器自己CC,目标MAC地址是AA),最后PC1收到路由器的报文就知道了,我要的目标MAC地址是CC,就会把数据帧封装进帧头内,如下图:

     (3然后PC就会把帧发送给交换机进行转发,如下图。注意:交换机的MAC地址表,是当PC连接了交换机,然后PC1开机就会自动发包获取DHCP服务器获取IP(联网,连wifi之类的),交换机就自动学习包中的源MAC地址自动形成的,全是自动的。

    (4数据到达交换机之后,交换机就会读取帧的侦听的目标MAC地址,发现是要给CC的,帧就会给交换机的F0/3端口,但是F0/3端口之前已经被设置成了trunk端口,所以这个帧就会被拆分开来,添加标签,因为这个帧是从F0/1端口进入交换机的,之前这个端口被配置成VLAN10,所以帧被标记成10,然后帧会先到路由器的F0/0接口的然后f0/0.1这个虚拟的子接口,发送自己可以识别标签10,就会把标签拿掉再传给路由器如下图:

       (5帧刚进入路由器时,路由器会查看帧头的目标MAC地址,是不是发给自己的,不是丢弃,是,就拿掉帧头,数据就来到路由器的内部,如下图:

        (6然后到路由器工作的时候了,路由器先查看数据的目标IP地址有没有和自己的路由表匹配的,发现目标IP地址是20.1.1.1刚好和自己的路由表匹配上了,对应的接口是f0/0.2,然后数据就转给f0/0.2接口准备转发出去,f0/0.2接口被配置成了能识别VLAN20的接口,所以数据要转发出去前,f0/0.2接口会给数据加上标签20,然后再给数据封装帧头,源MAC地址是自己CC,目标MAC地址不知道,但是知道目标IP是20.1.1.1,就会发送ARP广播获取MAC地址,这个ARP报文要出f0/0.2接口时也会被加上标签20,然后发给交换机的F0/3端口,F0/3端口发现这个ARP报文的标签是20,就会向所有的VLAN20端口转发,这里只有F0/2是VLAN20端口,所以直接发给F0/2接口,F0/2接口在转给接口下的PC,PC收到广播就会单播应答,我是20.1.1.1,我的MAC地址是BB。如下图:

数据图要出路由器的F0/0的示意图

        路由器发送了ARP请求,PC回包之后,获取到了目标MAC地址。有了目标MAC地址之后帧结构就完整了,开始转发数据,提取帧的目标IP地址跟自己的路由表比对,刚好匹配成功发现该目标IP地址的网段20.1.1.0对应的端口是F0/0.2,路由器就会把数据帧转发给F0/0.2端口,路由器就完成了对数据的路由,F0/0.2端口拿到数据帧之后自然就会把帧沿着网线往下传给交换机。

示意图:

         数据帧到达交换机的F0/3之后,该端口知道这个帧是标签20,就会把标签拿掉还原数据帧,帧就到达交换机内部,通过标签20交换机也知道这个帧是来自VLAN20端口的数据。

        数据帧进入交换机内部,示意图:

        这时交换机就会提取帧头的目标MAC地址与自己MAC地址表进行匹配,发现是找目标MAC地址为BB的设备对应的交换机接口是F0/2(交换机的MAC地址表在上图),这时交换机还会执行一个判断,判断这个帧和目标设备是否处于同一VLAN,不是就丢弃(上面讲了这个帧之前的标签是20,虽然被拿掉了交换机也知道了他是来自VLAN20,目标端口F0/2也是VLAN20所以匹配成功),转发数据帧就会从F0/2端口出去,发给BB,完成了通信 。

        注意:路由器只转发单播数据,广播的不转发,简单理解就是路由器只转发目标IP是他自己的路由,即转发目标IP地址网关的帧。

三、实验让不同的VLAN之间可以通信

我这里先把PC和交换机配置好了,下面之间演示配置路由器让不同的VLAN之间可以通信

PC就配置一下IP、子网掩码和网关就行了

交换机的配置命令:(大致的配置思路:需要哪台PC加入那个VLAN就加交换机内,创建对应的VLAN,然后把连接该PC的交换机接口加入该VLAN

        en                                                 # 进入特权模式

        conf  t                                          # 全局配置模式

        ho sw1                                         # 设置交换机名称

        vlan  ?                                         #  查看可选的ID

         vlan  id                                       # 创建VLAN

        name  名称                                  # 给VLAN起个名称,方便识别,可选

        exit                                               # 退出到上一级,回到全局配置模式
        do show vlan brief                      # 查看VLAN表检查有没有配置成功

        int   fx/x                                        # 进入需要配置的端口 

        switchport    access  vlan    ID   # 将端口加入到需要的VLAN内

        exit                                                # 退出到上一级,回到全局配置模式

将连接两台交换机之间的端口都设置为 trunk  (中继端口/公共端口)

注意网线的两边端口都要配置,才能正常通信,不然数据无法到达另一台交换机

                en   # 进入特权模式

                conf t   # 进入全局配置模式

                int f0/x   # 进入要配置的接口

                switchport  trunk   encapsulation dot1q/isl  (常用dot1q 802.lq标签)# 这个端口如果作为trunk 需要封装成dot1q或isl (可选,模拟器不支持这命令)

                switchport  mode access/trunk (这里用trunk,要还原用access) # 设置端口为中继或接入端口配置trunk 简写:sw m t

                exit   # 退到上一级

将第一台交换机和路由器连接的端口Fa0/5设置为trunk端口

        en                                                 # 进入特权模式

        conf  t                                          # 全局配置模式

        int   fa0/5                                    # 进入需要配置的端口 

        switchport  trunk   encapsulation dot1q/isl  (常用dot1q 802.lq标签)# 这个端口如果作为trunk 需要封装成dot1q或isl (可选,模拟器不支持这命令)

        switchport  mode access/trunk (这里用trunk,要还原用access) # 设置端口为中继或接入端口,配置trunk 简写:sw m t

配置路由器:

        en                                                     # 进入特权模式

        conf t                                               # 进入全局配置模式

        int  f0/0.1                                         # 为f0/0这个接口创建一个子接口0.1,虚拟接口

        encapsulation  dot1q  10   # 配置f0/0.1端口可以识别802.1q标签的10标签

        ip add 10.1.1.254  255.255.255.0   # 给路由器的f0/0.1子接口配置IP

        no shut                                            # 开启端口

        exit                                                   # 退到上一级

        int  f0/0.2                                          # 为f0/0这个接口创建一个子接口0.2,虚拟接口

        encapsulation  dot1q  20   # 配置f0/0.2端口可以识别802.1q标签的20标签

        ip add 20.1.1.254  255.255.255.0   # 给路由器的f0/0.2 子接口配置IP

        no shut                                            # 开启端口 

        exit                                                   # 退到上一级

        int  f0/0                                            # 进入  f0/0  接口配置模式

        no shut                                            # 开启端口 

 这样就能通过单臂路由技术,让不同VLAN之间进行通信了,单臂是指路由器的Fa0/0这个端口。

注意:现在单臂路由的方式已经被淘汰了,已经有了更好的方法,不过还是可以用的。

面试题 

有种对现实没有意义的面试题如下:

如何在不加路由器、网线与不能把设置trunk端口的前提下让这两台PC进行通信?

 答案:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗蛋的博客之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值