单臂路由Trunk详解

2024-05-01 04:58
文章标签 详解 路由 trunk 单臂

本文主要是介绍单臂路由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了,这个也很重要的。。。。。。




这篇关于单臂路由Trunk详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/950764

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹