单臂路由&&Trunk详解

单臂路由作为CCNA的重点之一,有着非常重要的地位。这几年随着设备的更新,已经不太用二层交换和路由器所组成的单臂路由了,三层交换机配合二层交换机的拓扑,已经成为主流,这里先说道这里,回到主题

看拓扑:


PC1和PC2属于不同vlan,最终需要PC1和PC2能互通。

Vlan配置和IP的配置我这里省略了,不懂的可以看一下之前的博客。

我这里贴一下预配置检查

SW1#sh vlan-s bri

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa0/0, Fa0/3, Fa0/4, Fa0/5
                                                Fa0/6, Fa0/7, Fa0/8, Fa0/9
                                                Fa0/10, Fa0/11, Fa0/12, Fa0/13
                                                Fa0/14, Fa0/15
10   VLAN0010                         active    Fa0/1
20   VLAN0020                         active    Fa0/2
1002 fddi-default                     active    
1003 token-ring-default               active    
1004 fddinet-default                  active    
1005 trnet-default                    active  
vlan配完,测试PC1与PC2不通,这个肯定是不通的,PC的网关也没有,就算没有Vlan也通不了。。。。。

看单臂路由配置:

思路:通过R1交换功能,来实现路由

1、SW1需要把两个vlan的信息传输出去,那就是承载不同vlan的信息,自然需要Trunk

SW1(config)#int f0/0
SW1(config-if)#sw mo tr
*Mar  1 00:47:26.587: %DTP-5-TRUNKPORTON: Port Fa0/0 has become dot1q trunk
SW1(config-if)#sw tr enc dot
SW1(config-if)#no sh

2、R1接口配置,通过子接口配置单臂路由

要起子接口,父接口必须先开启

R1(config)#int e0/0
R1(config-if)#no sh
//vlan10 对应e0/0.10,这个.10只是个名字
R1(config-if)#int e0/0.10
R1(config-subif)#ip add 1.1.1.100 255.255.255.0
配置ip报错,查看以下报错信息,他告诉我必须先配置封装协议,才能实现IP Routing功能。
% Configuring IP routing on a LAN subinterface is only allowed if that
subinterface is already configured as part of an IEEE 802.10, IEEE 802.1Q,
or ISL vLAN.

配置封装

R1(config-subif)#encapsulation dot1Q ?
  <1-4094>  IEEE 802.1Q VLAN ID
后面还需要跟所对应的Vlan ID
R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ip add 1.1.1.100 255.255.255.0
R1(config-subif)#no sh
R1(config-subif)#exi
第一个子接口配置完成,接下来第二个

R1(config)#int e0/0.20
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ip add 2.2.2.100 255.255.255.0
R1(config-subif)#no sh
查看以下R1的路由表
R1#sh ip rou
Gateway of last resort is not set

     1.0.0.0/24 is subnetted, 1 subnets
C       1.1.1.0 is directly connected, Ethernet0/0.10
     2.0.0.0/24 is subnetted, 1 subnets
C       2.2.2.0 is directly connected, Ethernet0/0.20
可以发现,子接口的网段已经被添加进了路由表,然后给PC1和2配置网关。

-------------------------------------------------------------------------------------------------------------------

好了,这时候你就会发现,PC1和PC2能互通了。网上的其他教程基本也就到这里结束了,嘿嘿,我告诉你,这里才只是开始。有没有想过这样一个问题,PC1是属于VLan10,PC2是属于vlan20,路由器只是简单的转发么?不是说不同Vlan,会有TAG么?他到底是怎么做到的呢?我来简单的证明一下,工具自然是wireshark。我要抓SW1 f0/0《==》R1 e0/0这条线路。

实验步骤和思路:从PC1pingPC2,PC2会收到ICMP请求,PC1会收到ICMP回复。(贴图不是很方便,我就把步骤和结果写的详细一下)

我从PC1就发一个ICMP包给PC2,从抓包的结果上看,可以看到两条从1.1.1.1发送给2.2.2.2的ICMP request,(这个应该可以理解,PC1先发给R1,R1再发给PC2,所有请求有两条),发现再原地址后面添加8个字节802.1Q virtual lan数据,里面有两个字节是用来表示VlanID的,第一个报文显示的是10(从PC1发送给R1),第二个显示的是20(从R1发送给PC2),从这里我们可以发现,R1收到从PC1发送的数据报文已经,会解封装,然后再重新封装发出,他会对这个vlan的值进行修改。我假设一下过程,R1收到数据包,拆掉vlan TAG标记,然后查询到路由,因为路由是从子接口学习到的,而子接口已经绑定了vlan,(不明白的回顾一下之前的配置)所以会重新打上vlan TAG标记,发送出去。

可以有些细节讲的不太对,大致应该就是这样。

-----------------------------------------------------------------------------------------------------------------

单臂路由最常见的就在这里了,但是接下来我还要讲第二种。我先配,配玩再说为什么会出现第二种,这里需要把R1改成一个三层交换机,起名叫做SW2


其他配置都不动,我们单单配置SW2

1、讲f0/0配置为Trunk

SW2(config)#int f0/0
SW2(config-if)#switchport trunk encapsulation dot
SW2(config-if)#no sh
SW2(config-if)#end

配置完查看一下

SW2#sh int tru

Port      Mode         Encapsulation  Status        Native vlan
Fa0/0     on           802.1q         trunking      1

Port      Vlans allowed on trunk
Fa0/0     1-1005

Port      Vlans allowed and active in management domain
Fa0/0     1

Port      Vlans in spanning tree forwarding state and not pruned
Fa0/0     1

2、添加Vlan

SW2#vlan da
SW2(vlan)#vlan 10
VLAN 10 added:
    Name: VLAN0010
SW2(vlan)#vlan 20
VLAN 20 added:
    Name: VLAN0020
SW2(vlan)#exi  
APPLY completed.
Exiting....

给Vlan配置IP,作为该Vlan所有终端的网关

SW2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW2(config)#int vlan 10
SW2(config-if)#ip add 1.1.1.100 255.255.255.0
SW2(config-if)#no sh

SW2(config-if)#int vlan 20
SW2(config-if)#ip add 2.2.2.100 255.255.255.0
SW2(config-if)#no sh
SW2(config-if)#end

----------------------------------------------------------------------------------------------------------------

注意:

1、可以发现我这里并没有创建Vlan,我只是int vlan xx,再某些机器上,你输入这条命令的时候他会自动为你创建vlan,但是并不是全部,而且有的机器根本就不支持(包括通过vlan xx创建vlan)。

2、我是用的GNS3做的第二个实验,我就发现一个BUG,你可以看出来我的机器是支持int vlan这条命令的,但是实际上查看vlan的时候,你是看不到这几个vlan的,所以我建议,还是先手动创建好vlan,做完最后再检查一下,以防万一。

*如果你忘记了创建vlan但是上面的命令你都成功配完了,我可以提供一个排查思路,去检查接口,sh ip int bri,去看vlan的接口你会发现,status是up但是protocol是down,等你创建好vlan,protocol就up了。

------------------------------------------------------------------------------------------------------------------

vlan配置完毕,查看一下路由表,如果显示没有路由只有ARP table,记得开启路由功能
SW2#sh ip rout
Gateway of last resort is not set

     1.0.0.0/24 is subnetted, 1 subnets
C       1.1.1.0 is directly connected, Vlan10
     2.0.0.0/24 is subnetted, 1 subnets
C       2.2.2.0 is directly connected, Vlan20
这时候就配置完成了,PC1和PC2就能通信了。

-----------------------------------------------------------------------------------------------------------------

方法二和方法一,异曲同工。一个给vlan配置ip,一个给接口配置ip,乍一看,差不多么,不就换了一个三层交换机么。其实仁者见仁,智者见智。现在大部分公司架构,介入层,核心层,转发层(或者防火墙),核心层是用来转发数据的,大部分用的都是三层交换设备,而再上一层转发曾,往往接的都是防火墙,主要就是同外部通信的,而且三层交换设备,相较于路由器而且,更加多变,吞吐量比老款的纯路由器高很多(这个我没有考证,网上是这么说的,而且我觉得这点不是很对。。。)反正就这样,大家还是实际考虑为主。

-------------------------------------------------------------------------------------------------------------------

你以为到这里就结束了?no no no今天还有一个点,直接看图


设置如下,就问一个问题PC0和PC1通不通

PC0             ip:1.1.1.1/24

PC1             ip:1.1.1.2/24

Switch0        f0/1 vlan10 mode access    f0/2 vlan10 mode access

Switch1        f0/1 vlan20 mode access    f0/2 vlan20 mode access

没了 没有Trunk 什么也没有  到底通不通?

自然是通,为什么?不是不同的Vlan么?

注意,Vlan只是划分本地的路由条目,多个vlan建立在一台交换机上的时候,他是通过将接口的mac地址进行划分,但是并不会加上Vlan Tag,VLAN TAG只会在你配置了封装协议之后也就是起了Trunk以后,进行添加。而我这里没有Trunk,自然也就不会有Vlan TAG(dot1q),switch0 发现f0/2也是vlan10,自然会把同属于vlan10的f0/1接口收到的数据转发出去,通过抓包会发现就是一个普通的数据包,没有关于vlan的信息,switch1也是同样。

总结一句话:vlan划分本地接口!!!

假设配了Trunk会怎么样呢?那就不会通了,因为通过Trunk发出去以后就会带上Vlan TAG,而两个路由器的Vlan ID不一样,自然是不会通的。假如我再改一下,把两个SW的vlan号改成一样的,试一下,会不会通呢?能通。就是因为vlan id相同了。可以发现Vlan并不能控制外部划分,只能控制内部,一旦数据发出以后,就是通过vlan id来区分。拥有相同的vlan id,就能通信了。这里说一下,dot1q的vlan Tag是打在二层数据帧,目标地址+源地址+type之后的8位。

-----------------------------------------------------------------------------------------------------------------

好了,这里讲了这么这么多,很重要,都是要掌握的,没有只需要了解的,掌握的越深刻越好。下一次,就是STP了,这个也很重要的。。。。。。




  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值