跳转至

Switch & Router & CLI Config

导言

  • 产品线的硬装实践,接触到了华为无线产品(路由器,交换机)的基本命令行配置(可能别家的产品命令不同,但是网络设计的概念和思想是相同的。
  • 还会对交换机和路由器的一些概念进行澄清。
为什么需要交换机和路由器,直接网络里广播信息,目的机广播返回就行了
  1. 避免数据风暴
  2. 路由器可以将不同的子网隔离,限制广播的范围,防止广播风暴,还可以提供安全隔离。
  3. 交换机的作用,主要是避免局域网alltoall拉线,简化了线路。其余VLAN隔离了广播域

网络抽象

交换机

  • 交换机的端口才需要设置access,hybrid和trunk。并且一般只有交换机之间的包有tag,除了路由设置子逻辑端口的情况。
  • 交换机有MAC表:学习(来的端口和MAC,比如ARP请求),转发,老化

路由器

  • 网关设置在路由器端口上
  • 路由不需要设置vlan,例如v b [xxx],虽然逻辑子端口可能用vlan-type dotlq [xxx]
  • 路由器,不会处理局域网的请求,只会处理网关端口来的对其余网的请求。
  • 路由器端口会配置ip,一般是网关ip,结合路由表,来确定ip从哪个端口出去,

PC机,网络终端

  • 在正常网络环境下,如果网络配置正确,PC不应该收到发往非自己IP地址的数据包。(还有广播,多播)原因在于网络设备(如交换机和路由器)以及协议栈会确保数据包被正确地定向到目标设备,避免不必要的数据流传输到无关设备。

路由器和交换机的端口没有mac地址是吗?

  1. 交换机端口(特别是二层交换机的端口)没有MAC地址,它们只是通过MAC地址表来管理连接设备的转发。
  2. 路由器端口每个都有自己的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的两种特殊情况

  1. 对于p t p v [pvid]undo时,直接undo p t p v, 不需要pvid号码.
  2. link-type 直接覆盖

交换机配置

交换机能借助tag信息来实现VLAN,也就是局域网隔离

  • 交换机端口可以对无标签DATA打标签PVID,来实现VLAN
  • 出端口才可能摘标签

Access type

交换机与PC连接一般用access,比较复杂的VLAN情况下需要hybrid

# set type
port link-type access 
p l a

# set PVID
port default vlan 10

Truck type

交换机之间或者交换机与路由器连接用truck

无论是truck还是hybrid模式都需要把PVID加入allow/VLAN-list

port truck pvid vlan [id]
p t p v [id]

port truck allow vlan [id1] [id2]
p t a v [id1] [id2]

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]

链路聚合

将多个物理线,当作同一个逻辑线,从而提升带宽。

# 创建聚合链路
interface Eth-trunk [0-63]

# 添加端口 到聚合
trunkport GigabitEthernet0/0/

三层交换机

一个交换机里还可以划分成逻辑端口(有网关ip,也有路由表。相当于藏了个完整的路由器, 除了设置ip,还需要int Vlanif [物理端口-pvid]与物理端口的PVID一一绑定。

三层交换机有部分路由功能,那还要路由器干什么

  1. 三层交换机:主要用于局域网内部的VLAN间路由,比如企业内部有多个VLAN时,三层交换机可以高效地处理这些VLAN之间的流量。
  2. 硬件转发速度快,适合高吞吐量、低延迟的局域网环境。
  3. 不能替代广域网路由器,它的功能侧重于LAN内部路由,虽然也能处理一些简单的WAN连接,但不适合复杂的跨网络路由场景。

路由器配置

路由器物理接口是不接受带标签数据的

# 接口网关 
ip address [ip] [掩码]

多逻辑子端口

  • 为了让路由的物理端口,能区分多个逻辑端口,需要借助tag里的VLAN id信息
  • 逻辑端口[.x]实现,并通过命令 vlan-type dotlq [vlanid] 来上id和剥id.

静态路由

(优先级数字越小越高。)

ip route-static [dest-ip] [maskNumber] [next-ip] prefrence [pre-level]

对于一个信包,路由表只会查找一次,而且有优先级,除开preference设置;掩码越多,优先级也越高

ip route-static 20.0.2.0 255.255.255.0 22.0.0.2。路由器具体会怎么做,比如会在哪个端口发射什么包

当你在路由器上配置静态路由,例如:

ip route-static 20.0.2.0 255.255.255.0 22.0.0.2

路由器在处理发送到 20.0.2.0/24 网段的流量时,会将这些数据包转发到下一跳 22.0.0.2。为了理解路由器会做什么,我们可以从以下几个步骤来分析:

  1. 路由表查找 当数据包到达路由器时,路由器首先查找其路由表,匹配目的IP地址所属的网络。如果匹配到静态路由条目(例如 20.0.2.0/24),路由器就知道需要将数据包发送到下一跳 22.0.0.2

  2. ARP 解析下一跳的 MAC 地址 路由器还需要知道如何在数据链路层(二层)发送这个数据包。为了找到下一跳 IP 22.0.0.2 所对应的 MAC 地址,路由器会执行 ARP(地址解析协议)查询过程。

  3. 如果路由器的 ARP 表中已经缓存了 22.0.0.2 的 MAC 地址,路由器将直接使用该 MAC 地址。

  4. 如果 ARP 表中没有 22.0.0.2 的记录,路由器将向连接到 22.0.0.2 的网络接口发送一个 ARP 请求,询问 "谁拥有 IP 地址 22.0.0.2?"
  5. 该请求是一个广播包,通过该网络接口发送出去。
  6. 拥有 22.0.0.2 的设备(可能是一个路由器或其他网络设备)会响应,提供它的 MAC 地址。

  7. 确定接口和下一跳 根据路由表条目,路由器已经知道下一跳 IP 是 22.0.0.2,并且应该通过某个特定的接口(例如 Ethernet0/0/1)发送数据包。

  8. 路由器会为数据包封装一个二层帧,其中的目标 MAC 地址是 22.0.0.2 对应的 MAC 地址。

  9. 源 MAC 地址是路由器自身该接口的 MAC 地址。
  10. 数据包通过指定的接口(Ethernet0/0/1)发送出去。

  11. 发送数据包 在封装完成后,路由器将数据包发送出去:

  12. 数据包从路由器的指定接口(Ethernet0/0/1)发出。

  13. 它会先到达拥有下一跳 IP 22.0.0.2 的设备(通常是另一个路由器)。

  14. 下一跳设备处理 当下一跳设备(即拥有 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 是否在同一网络中的处理上。

  1. 直接路由(Direct Route)22.0.0.0/16 的路由条目中:
22.0.0.0/16  Direct  0    0           D   22.0.0.1        Ethernet0/0/1

这是一个直接连接的路由,意味着 22.0.0.0/16 是一个路由器直接可以通过接口 Ethernet0/0/1 访问的网络。22.0.0.1 是路由器在 22.0.0.0/16 网络中的本地 IP 地址,直接绑定到该接口。这是路由器的本地接口地址,因此可以直接与该接口关联起来。

  1. 静态路由(Static Route) 当你试图添加静态路由时:
ip route-static 20.0.2.0 255.255.255.0 22.0.0.1

你收到错误信息 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,例如:

ip route-static 20.0.2.0 255.255.255.0 22.0.0.2

这样,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才能保存修改内容
# 退出sys
save

其余信息

display mac-address

display vlan

参考文献

评论