Switch & Router & CLI Config
导言
- 产品线的硬装实践,接触到了华为无线产品(路由器,交换机)的基本命令行配置(可能别家的产品命令不同,但是网络设计的概念和思想是相同的。
- 还会对交换机和路由器的一些概念进行澄清。
- 还有对实践的网络规划和走线细节的回忆。
为什么需要交换机和路由器,直接网络里广播信息,目的机广播返回就行了
- 避免数据风暴
- 路由器可以将不同的子网隔离,限制广播的范围,防止广播风暴,还可以提供安全隔离。
- 交换机的作用,主要是避免局域网alltoall拉线,简化了线路。其余VLAN隔离了广播域
网络抽象¶
交换机¶
- 交换机的端口才需要设置access,hybrid和trunk。并且一般只有交换机之间的包有tag,除了路由设置子逻辑端口的情况。
- 交换机有MAC表:学习(来的端口和MAC,比如ARP请求),转发,老化
路由器¶
- 网关设置在路由器端口上
- 路由不需要设置vlan,例如
v b [xxx]
,虽然逻辑子端口可能用vlan-type dotlq [xxx]
- 路由器,不会处理局域网的请求,只会处理网关端口来的对其余网的请求。
- 路由器端口会配置ip,一般是网关ip,结合路由表,来确定ip从哪个端口出去,
PC机,网络终端¶
- 在正常网络环境下,如果网络配置正确,PC不应该收到发往非自己IP地址的数据包。(还有广播,多播)原因在于网络设备(如交换机和路由器)以及协议栈会确保数据包被正确地定向到目标设备,避免不必要的数据流传输到无关设备。
路由器和交换机的端口没有mac地址是吗?
- 交换机端口(特别是二层交换机的端口)没有MAC地址,它们只是通过MAC地址表来管理连接设备的转发。
- 路由器端口每个都有自己的MAC地址,因为它们需要与其他网络设备进行帧传输时使用MAC地址来标识自己。2.
初始化¶
实验环境
华为开源的 eNSP 软件
后面代码中,如果有两行命令,短的是常用缩写
# 用户视图
sys
# 根目录关闭消息提醒
undo info-center enable
un in en
# vlan域创建
vlan batch 10 203
#改设备名称
sysname [name]
sysn [ name]
配置接口¶
# enter
interface [name] [id/id/id]
int [name] [id/id/id]
# check conf
dis this
d th
# back
q
# undo
undo xxx
undo的两种特殊情况
- 对于
p t p v [pvid]
undo时,直接undo p t p v
, 不需要pvid
号码. - link-type 直接覆盖
交换机配置¶
交换机能借助tag信息来实现VLAN,也就是局域网隔离
- 交换机端口可以对无标签DATA打标签PVID,来实现VLAN
- 出端口才可能摘标签
Access type¶
交换机与PC连接一般用access
,比较复杂的VLAN情况下需要hybrid
Truck type¶
交换机之间或者交换机与路由器连接用truck
无论是truck还是hybrid模式都需要把PVID加入allow/VLAN-list
hybrid type¶
- 默认类型, 但是只有包括华为的少数交换机厂商支持hybrid模式
- hybrid 能摘多个标签,对比之下,truck模式只能摘PVID的标签。
port hybrid pvid vlan [id]
p h p v [id]
port hybrid untagged vlan [id1] [id2]
p h u v [id1] [id2]
port hybrid tagged vlan [id1] [id2]
p h t v [id1] [id2]
链路聚合¶
将多个物理线,当作同一个逻辑线,从而提升带宽。
三层交换机¶
一个交换机里还可以划分成逻辑端口(有网关ip,也有路由表。相当于藏了个完整的路由器, 除了设置ip,还需要int Vlanif [物理端口-pvid]
与物理端口的PVID
一一绑定。
三层交换机有部分路由功能,那还要路由器干什么
- 三层交换机:主要用于局域网内部的VLAN间路由,比如企业内部有多个VLAN时,三层交换机可以高效地处理这些VLAN之间的流量。
- 硬件转发速度快,适合高吞吐量、低延迟的局域网环境。
- 不能替代广域网路由器,它的功能侧重于LAN内部路由,虽然也能处理一些简单的WAN连接,但不适合复杂的跨网络路由场景。
路由器配置¶
路由器物理接口是不接受带标签数据的
多逻辑子端口¶
- 为了让路由的物理端口,能区分多个逻辑端口,需要借助tag里的VLAN id信息
- 逻辑端口
[.x]
实现,并通过命令vlan-type dotlq [vlanid]
来上id和剥id.
静态路由¶
(优先级数字越小越高。)
对于一个信包,路由表只会查找一次,而且有优先级,除开preference设置;掩码越多,优先级也越高
ip route-static 20.0.2.0 255.255.255.0 22.0.0.2
。路由器具体会怎么做,比如会在哪个端口发射什么包
当你在路由器上配置静态路由,例如:
路由器在处理发送到 20.0.2.0/24
网段的流量时,会将这些数据包转发到下一跳 22.0.0.2
。为了理解路由器会做什么,我们可以从以下几个步骤来分析:
-
路由表查找 当数据包到达路由器时,路由器首先查找其路由表,匹配目的IP地址所属的网络。如果匹配到静态路由条目(例如
20.0.2.0/24
),路由器就知道需要将数据包发送到下一跳22.0.0.2
。 -
ARP 解析下一跳的 MAC 地址 路由器还需要知道如何在数据链路层(二层)发送这个数据包。为了找到下一跳 IP
22.0.0.2
所对应的 MAC 地址,路由器会执行 ARP(地址解析协议)查询过程。 -
如果路由器的 ARP 表中已经缓存了
22.0.0.2
的 MAC 地址,路由器将直接使用该 MAC 地址。 - 如果 ARP 表中没有
22.0.0.2
的记录,路由器将向连接到22.0.0.2
的网络接口发送一个 ARP 请求,询问 "谁拥有 IP 地址22.0.0.2
?" - 该请求是一个广播包,通过该网络接口发送出去。
-
拥有
22.0.0.2
的设备(可能是一个路由器或其他网络设备)会响应,提供它的 MAC 地址。 -
确定接口和下一跳 根据路由表条目,路由器已经知道下一跳 IP 是
22.0.0.2
,并且应该通过某个特定的接口(例如Ethernet0/0/1
)发送数据包。 -
路由器会为数据包封装一个二层帧,其中的目标 MAC 地址是
22.0.0.2
对应的 MAC 地址。 - 源 MAC 地址是路由器自身该接口的 MAC 地址。
-
数据包通过指定的接口(
Ethernet0/0/1
)发送出去。 -
发送数据包 在封装完成后,路由器将数据包发送出去:
-
数据包从路由器的指定接口(
Ethernet0/0/1
)发出。 -
它会先到达拥有下一跳 IP
22.0.0.2
的设备(通常是另一个路由器)。 -
下一跳设备处理 当下一跳设备(即拥有
22.0.0.2
的设备)收到该数据包后,它会根据自身的路由表继续处理这个数据包。如果这个设备有一条通往20.0.2.0/24
网络的路由,它将进一步将数据包转发到最终目的地。
小结:
- 配置了静态路由后,路由器会首先查找路由表,并发现
20.0.2.0/24
需要通过下一跳22.0.0.2
。 - 然后,路由器通过
ARP
协议解析22.0.0.2
对应的 MAC 地址。 - 解析完成后,路由器将数据包通过相应的接口(如
Ethernet0/0/1
)发送给22.0.0.2
,并且封装了正确的二层信息(目标 MAC 地址)。 - 最终,数据包在网络中继续传递,直到到达
20.0.2.0/24
的目的地。
如果 22.0.0.2
不存在,或者无法在 ARP 表中找到它,数据包将无法发送成功,且可能导致路由器报错。
静态路由与直接路由的区别
问题的关键在于,直接路由和静态路由的工作机制有所不同,特别是在检查下一跳 IP 是否在同一网络中的处理上。
- 直接路由(Direct Route)
在
22.0.0.0/16
的路由条目中:
这是一个直接连接的路由,意味着 22.0.0.0/16
是一个路由器直接可以通过接口 Ethernet0/0/1
访问的网络。22.0.0.1
是路由器在 22.0.0.0/16
网络中的本地 IP 地址,直接绑定到该接口。这是路由器的本地接口地址,因此可以直接与该接口关联起来。
- 静态路由(Static Route) 当你试图添加静态路由时:
你收到错误信息 Error: The next-hop address is invalid.
,这是因为路由器要求静态路由的下一跳必须是可达的,并且在逻辑上存在于路由器的一个已知网络中。
原因:
- 路由器检查下一跳: 当你配置静态路由时,路由器会检查指定的下一跳 IP 地址(22.0.0.1
)是否在本地网络的子网中。如果你将 22.0.0.1
作为下一跳,路由器会认为你是想将流量转发到另一个设备(比如另一个路由器),而不是本地设备。但是 22.0.0.1
是该路由器的本地地址,而不是一个远程设备的地址。
路由器会认为下一跳应该是连接到该网络的另一个设备的 IP 地址,而不是自己接口的 IP 地址。因此它报错说"下一跳地址无效"。
-
静态路由的下一跳应该是远程设备: 静态路由要求下一跳 IP 地址是一个有效的、在相同子网内的设备(如另一个路由器或服务器),以便能够将流量转发到该设备。如果你将路由器自己的 IP 地址作为下一跳,它会认为这是无效的,因为没有真正的转发过程。
-
为什么直接路由可以工作?
22.0.0.1
是一个直接连接到Ethernet0/0/1
接口的 IP 地址,表示路由器自身的 IP。因此,对于直接路由条目,路由器将这个网络22.0.0.0/16
视为本地网络的一部分,所有发往该网络的流量都将通过Ethernet0/0/1
发送出去,而不需要下一跳。 -
解决方案 如果你想配置静态路由,下一跳地址应该是路由器在
22.0.0.0/16
子网中的其他设备(非本地设备)的 IP 地址。你可以改为使用网络中另一个实际设备的 IP,例如:
这样,22.0.0.2
是路由器可以通过 Ethernet0/0/1
接口到达的另一个设备的 IP 地址,它能够接收数据包并进行进一步的转发。
总结
- 直接路由:路由器将直接连接到接口的网络视为本地网络,不需要通过下一跳进行转发。
- 静态路由:要求下一跳 IP 地址是远程设备的 IP,而不能是路由器自身的 IP。
检查¶
# 查看所有配置
dis current-configuration
dis cu
dis port vlan active
d p v ac
dis vlan
# 查看所有接口
dis int brief
d int b
# 查看路由表
dis ip routing-table
d ip rou
保存¶
有些路由器需要,commit才能保存修改内容
其余信息¶
实践¶
由于保密要求,凭记忆回忆一些
网络规划¶
实践重点:
- 交换机堆叠(物理上是两个,逻辑上抽象为一个,实现交换机的1+1冗余)
- VLAN规划:
- BMC(Baseboard Management Controller)管理平面
- 业务平面
- 存储平面
- 虚拟机(基于FusionCompute管理)
走线细节¶
- 位置:上走线,
- 标签/捆扎:光纤、网线、电源线都需要标记FromTo和分组捆扎到机架上
- 保护:冗余电源注意分左右接入上级,光纤注意最小弯曲半径。
- 美观:设备之间有理线托盘,白色塑料扎带齐根剪断。