Cisco

在 Cisco 中,交换机设备主要分为以下几种模式:

  1. 用户模式,刚进入设备都是用户模式,只能用来看一些统计信息
1
Switch>
  1. 特权模式,可以查看并修改配置
1
2
Switch>enable
Switch#
  1. 全局配置模式,可以修改主机名等
1
2
Switch#config terminal
Switch(config)#
  1. 接口模式,可以对指定接口进行配置
1
2
Switch(config)#int f0/1
Switch(config-if)#

1. Vlan划分

Vlan 即虚拟局域网,能够有效防止广播风暴的发生。

Vlan 的划分是在交换机上进行,实际上就是给指定端口进行划分。

  1. 在划分 vlan 前,可以看到左边的主机与右边的主机都是能够通信的

划分vlan一

  1. 接下来将左右边的主机分别划分为 vlan10、vlan20,进入全局配置模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建vlan
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
# 划分vlan
Switch(config)#int range f0/1-3
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 10
Switch(config-if-range)#exit
Switch(config)#int range f0/4-6
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 20
Switch(config-if-range)#exit
# 查看配置
Switch#show running-config
...
  1. 再去进行 ping 测试连通性,会发现只能 ping 通同一 vlan 下的主机

划分vlan二

2. 分类地址的通信

IP 地址分为五类,如果不是同一网络号下的地址则不能实现通信,如下图

分类地址一

这时候可以在中间添加一台路由器,来作为各主机之间的默认网关(默认路由),即可实现通信。

  1. 路由配置
1
2
3
4
5
6
7
8
9
Router>en
Router#conf t
# 进入端口进行配置
Router(config)#int g0/0
Router(config-if)#ip add 192.168.88.1 255.255.255.0
Router(config-if)#no shutdown
Router(config)#int g0/1
Router(config-if)#ip add 172.16.0.1 255.255.0.0
Router(config-if)#no shutdown
  1. 主机配置默认网关

分类地址二

  1. 连通性测试,第一个 ICMP 包会丢失是因为路由器会发送 ARP 包去寻找目标主机的 Mac 地址,所以在规定时间内没有收到回送报文就会超时

分类地址三

3. 划分子网

子网的划分实际上就是在原有的基础上进行更小的划分,划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。

如下图,左右边主机看似好像是在同一网络号下,但由于子网掩码是 255.255.255.192,所以之间是不能够通信的,只有 IP 地址与子网掩码进行位与的操作之后网络号相同的才能够进行通信,例如右边两台主机与子网掩码进行位与后网络号都是 192.168.88.64,即处于同一网络号下能够进行通信。

子网划分一

每个子网内可以使用的 IP 个数由子网号来判断,例如 255.255.255.192,192 转化为二进制为 11000000,有 6 个 0,即 IP 个数为 2 ** 6 = 64 个,常见子网掩码有以下几个(子网掩码:可用主机 IP 个数):

  • 255.255.255.128:126
  • 255.255.255.192:62
  • 255.255.255.224:30
  • 255.255.255.240:14
  • 255.255.255.248:6
  • 255.255.255.252:2

要解决上图网络通信问题,只需要在中间添加个路由器即可。

  1. 路由器配置
1
2
3
4
5
6
7
8
Router>en
Router#conf t
Router(config)#int g0/0
Router(config-if)#ip add 192.168.88.12 255.255.255.192
Router(config-if)#no shutdown
Router(config)#int g0/1
Router(config-if)#ip add 192.168.88.102 255.255.255.192
Router(config-if)#no shutdown
  1. 主机添加默认网关
  2. 测试连通性

子网划分二

4. 构造超网(路由聚合)

CIDR 地址格式为 xxx.xxx.xxx.xxx/xx,如 192.168.88.10/24,24 用来判断地址块信息,二进制后的 IP 前 24 位不变,后 8 位为 0,即可得出最小地址,后 8 位为 1 时,即可得出最大地址,即 192.168.88.0、192.168.88.255。

如下图,再没有配置静态路由时,上下网络的主机是不能够与右边的主机通信的,这时候添加静态路由,设置下一跳地址即可实现通信。

路由聚合一

  1. 左边路由配置
1
Router(config)#ip route 192.168.88.196 255.255.255.252 192.168.88.194
  1. 右边路由配置
1
2
Router(config)#ip route 192.168.88.0 255.255.255.128 192.168.88.193
Router(config)#ip route 192.168.88.128 255.255.255.192 192.168.88.193
  1. 测试连通性

路由聚合二

  1. 从右边路由配置可以看出,两条静态路由可以进行路由聚合,即 192.168.88 前三个字节是相同的,那么聚合后的地址块为 192.168.88.0/24,路由配置为
1
Router(config)#ip route 192.168.88.0 255.255.255.0 192.168.88.193

5. 特定路由和默认路由

特定路由即将数据报转发给特定的目标地址,而默认路由即除了特定的目标地址外都转发给默认的路由,流程如下图。

特定路由默认路由一

在以下网络中,目的地址只要是 192.168.4 网段,都会下一跳给 R1 路由器,再由 R2 进行路由转发。

特定路由默认路由二

  1. R1 路由配置
1
2
Router(config)#ip route 192.168.4.1 255.255.255.255 10.0.1.1
Router(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.1
  1. R2 路由配置
1
Router(config)#ip route 0.0.0.0 0.0.0.0 10.0.1.2
  1. R3 路由配置
1
2
3
Router(config)#ip route 192.168.0.0 255.255.255.0 10.0.0.2
Router(config)#ip route 192.168.4.0 255.255.255.0 10.0.0.2
Router(config)#ip route 0.0.0.0 0.0.0.0 10.0.2.2
  1. R4 路由配置
1
Router(config)#ip route 0.0.0.0 0.0.0.0 10.0.2.1

6. 黑洞路由

如果静态路由配置了不存在的网段,那么就可能会导致路由环路的问题,这时候可以添加一个黑洞路由进行解决,如下,只要目的地址是 192.168.88.0/24 地址快的数据包都会被丢弃。

1
Router(config)#ip route 192.168.88.0 255.255.255.0 null0

7. 路由信息协议RIP

RIP 是一种分布式的基于距离向量的路由选择协议,属于内部网关协议,主要适用于小规模的网络环境。

在 RIP 协议中,每次数据的发送都会选择跳数最少的路由,即经过节点最少的路由线路。

如下网络中,在给所有主机和路由端口配好 IP 后,还是不能够通信的,给每个路由器设置宣告地址段,即配置 RIP,路由器就会发送 RIP 报文来算出每个网段之间的最短路径,并写入路由表中,最终路径为 PC1 -> R1 -> R3 -> PC2。

RIP一

  1. 在每个路由器设置 RIP
1
2
3
4
Router(config)#router rip
Router(config-router)#network 10.0.0.0
Router(config-router)#network 192.168.2.0
Router(config-router)#network 192.168.1.0
  1. 路由表中 R 代表的就是 RIP 协议写入的路由
1
Router#show ip route

RIP二

8. 开放最短路径优先OSFP

OSPF 也属于内部网关协议,用于在单一自治系统 AS 内决策路由,是基于链路状态的动态路由选择协议。

在 OSPF 中,当链路状态发生变化就会采用洪泛法去更新信息,每个路由器都与相邻的路由器成邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。整个过程使用了五种报文、三个阶段、四张表。

在以下网络中,通过 OSPF 配置路由后的路径为 PC1 -> R1 -> R2 -> R3 -> PC2,因为 R1 与 R3 之间采用的是串行接口,是低速链路。

OSPF一

  1. R1 路由器配置
1
2
3
4
5
6
# 100为指定进程,可在1-65535之间选择
Router(config)#route ospf 100
# 0.0.0.255为反子网掩码,area为地区号
Router(config-router)#network 10.0.0.0 0.0.0.255 area 0
Router(config-router)#network 192.168.1.0 0.0.0.255 area 0
Router(config-router)#network 10.0.1.0 0.0.0.255 area 0
  1. R2 路由器配置
1
2
3
4
Router(config)#route ospf 100
Router(config-router)#network 10.0.0.0 0.0.0.255 area 0
Router(config-router)#network 10.0.1.0 0.0.0.255 area 0
Router(config-router)#network 10.0.2.0 0.0.0.255 area 0
  1. R3 路由器配置
1
2
3
4
Router(config)#route ospf 100
Router(config-router)#network 10.0.1.0 0.0.0.255 area 0
Router(config-router)#network 10.0.2.0 0.0.0.255 area 0
Router(config-router)#network 192.168.2.0 0.0.0.255 area 0
  1. 通过测试可以看到路由线路的选择

OSPF二

  1. 如果线路断了会自动更新路由表,这时候再看线路的选择就会不一样,但依旧可以联通

OSPF三

9. 边界网关协议BGP

BGP 是一种外部网关协议,是基于自治系统 AS 之间的路由协议,BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。

每个 AS 会设置一个 BGP 发言人,即一个路由器,用来与相邻 AS 的 BGP 发言人交换网络可达性的信息。

如下图网络,分别有三个 AS,要将不同 AS 之间进行联通,就可以通过 BGP 来实现。

BGP一

  1. AS 100 中路由配置
1
2
3
4
5
6
7
# 100为自治系统编号
Router(config)#route bgp 100
# 指定邻居,IP即与相邻路由器的连接端口IP,200/300为相邻AS的编号
Router(config-router)#neighbor 10.0.1.2 remote-as 200
Router(config-router)#neighbor 10.0.0.2 remote-as 300
# 将自身AS中的网络信息通报出去
Router(config-router)#network 192.168.10.0 mask 255.255.255.0
  1. AS 200 中路由配置
1
2
3
Router(config)#route bgp 200
Router(config-router)#neighbor 10.0.1.1 remote-as 100
Router(config-router)#network 192.168.20.0 mask 255.255.255.0
  1. AS 300 中路由配置
1
2
3
Router(config)#route bgp 300
Router(config-router)#neighbor 10.0.0.1 remote-as 100
Router(config-router)#network 192.168.30.0 mask 255.255.255.0
  1. 查看 BGP 路由信息,可以看到 B 代表的 BGP 路由信息
1
2
3
4
5
Router(config-router)#do show ip route
...
B 192.168.10.0/24 [20/0] via 10.0.1.1, 00:00:00
B 192.168.30.0/24 [20/0] via 10.0.1.1, 00:00:00
...

10. 多臂路由实现vlan之间的通信

vlan 之间如果网段不同,就无法进行通信,可以在中间添加一台路由器来做双方的网关,已多臂路由的方式实现不同 vlan 不同网段之间的通信。

多臂路由即一个端口对应一个 vlan,如下图。

多臂路由一

11. 单臂路由实现vlan之间的通信

单臂路由与多臂路由的原理是相同的,区别在于在多臂路由中,交换机到路由器的链路配置的是 access,在单臂路由中用一个主干 trunk 链路替代。

  1. 在连接交换机的路由器上配置
1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建逻辑子接口
Router(config)#int g0/0.1
# 可接受id为10的vlan数据包,并封装成802.1q桢进行转发
Router(config-subif)#encapsulation dot1Q 10
Router(config-subif)#ip add 192.168.1.254 255.255.255.0
Router(config-subif)#exit
Router(config)#int g0/0.2
Router(config-subif)#encapsulation dot1Q 20
Router(config-subif)#ip add 192.168.2.254 255.255.255.0
Router(config-subif)#exit
# 开启接口
Router(config)#int g0/0
Router(config-if)#no shutdown
  1. 在交换机上将与路由器相接的端口设置为 trunk 口
1
2
Switch(config)#int f0/7
Switch(config-if)#switchport mode trunk
  1. 连通性测试

单臂路由一

12. 三层交换机实现vlan之间的通信

三层交换机就是具有部分路由器功能的交换机。

  1. 三层交换机配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Switch(config)#vlan 10
Switch(config-vlan)#exit
# 进入vlan添加IP
Switch(config)#int vlan10
Switch(config-if)#ip add 192.168.1.254 255.255.255.0
Switch(config-if)#no shutdown
Switch(config-if)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#int vlan20
Switch(config-if)#ip add 192.168.2.254 255.255.255.0
Switch(config-if)#no shutdown
Switch(config-if)#exit
Switch(config)#int range f0/1-3
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 10
Switch(config-if-range)#
Switch(config-if-range)#exit
Switch(config)#int range f0/4-6
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 20
# 开启路由功能
Switch(config)#ip routing
  1. 测试连通性

三层交换机一

Author

Warner Chen

Posted on

2024-02-18

Updated on

2024-02-18

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.