交换机(Switch)是一种用于电信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路,最常见的交换机是以太网交换机,其他常见的还有电话语音交换机、光纤交换机等,交换机是集线器的升级替代产品,理论上讲交换机就是按照通信两端传输信息的需求,将需要的信息发送到目标设备上的网络组件.

♥ 文章声明 ♥
该系列文章部分文字描述,整理于以下文献,化繁为简.
《网络设备配置与管理》 – 邱洋
《HCIP 华为 – 安全认证》 – 学习笔记

STP 技术简介

◆冗余技术概述◆

冗余技术又称为储备技术,是利用并联模型来提高网络可靠性的一种手段,它通过向网络中增加备用的链路,当一条通信信道出现故障时,自动切换到备用的通信信道,从而提高网络的稳定性和可靠性.

冗余技术虽然可以提高网络的稳定性和可靠性,但是也会产生许多的问题,如果两个交换机相连的话会造成交换机环路,出现的问题就是随机出现网络不通的现象,严重的话还会导致网络广播风暴,重复拷贝帧,MAC地址表不稳地等情况,但如果是智能交换机的话则不会出现此种情况,以下将分别介绍这几种环路的基本原理.

广播风暴: 在物理网络中出现环路现象,且没有采取解决措施的情况下,一旦域内有某个主机发送了广播帧,则当域内的交换机接收到数据后,就会不停的发送和转发广播帧,从而形成网络广播风暴,网络广播风暴会长时间占用网络带宽,和交换机CPU资源,影响网络性能,甚至引起整个网络瘫痪.

重复拷贝帧: 重复拷贝帧也称多帧复制,是指单播帧可能被多次复制传送到目标主机上去,此时数据帧的多个副本会保存在目标主机上,从而造成主机资源的浪费,甚至会造成目的主机无法选择其他来源的数据帧而导致数据丢失,简单的来讲就是数据分别从两个口进入了目的主机,导致目的主机MAC地址表中存在多个数据帧,有时还会导致数据的多次覆盖,从而无法接收到准确的数据.

MAC地址表不稳定: 一般情况下交换机接收到数据时,会将接收数据帧的端口与发送主机MAC地址的对应关系添加到本机的MAC地址表中,那么如果交换机在不同的端口接收到同一个数据帧的多份副本,将造成MAC地址表在短时间内被多次修改,和循环重复的覆盖,从而影响MAC地址表的稳定性.

以上几种情况是冗余技术的技术瓶颈所在,在实际的应用中网络的结构往往会很复杂,有更多的冗余链路,从而会产生更多的交换机环路,因此所带来的网络广播风暴,多帧复制会更加的严重,就因为这种需求,STP就由此诞生了.

◆STP生成树协议◆

为了解决网络冗余链路所产生的问题,IEEE定义了802.1D协议,即生成树协议STP,利用生成树协议可以避免帧在环路中的增生和无限循环,生成树的主要思想是,当两个交换机之间存在多条链路时,通过一定的算法只激活其中最主要的一条链路,而将其他冗余链路阻塞掉变为备用链路,当主链路出现问题时,生成树协议将自动启用备用链路,整个过程不需要认为干预.

STP协议中定义了,根桥(RootBridge),根端口(Root Port),指定端口(Designated Port),路径开销(Path Cost)等概念,目的在于通过构建一棵自然树的方法阻塞冗余链路,同时实现链路备份和链路最优化.

STP协议的通信,是通过桥协议数据单元(BPDU)进行通信的,它是运行STP的交换机之间交流消息帧,所有的支持STP协议的交换机都能接收并处理BPDU报文.

STP工作过程: 选举根桥->选举根端口->选举指定端口->STP阻塞非根

1.选举根桥:交换机假定自己是根,然后发送BPDU报文给其他交换机,最终选出ID号最小的交换机作为根桥.
2.选举根端口:每台非根交换机都会选举出一个根端口,并且仅有一个根端口,并按照优先级选择一个根端口.
3.选举指定端口:选择一条网桥到根桥的路径成本最小的路径,或者发送方的网桥ID最大的作为指定端口.
4.选择阻塞端口:至此,就会根据STP算法,从多个链路中选择性的阻塞掉一些端口的数据通信.

STP端口状态:

1.阻塞(Blocking):端口只接受BPDU,不能接收或发送数据,也不能把学习到的MAC地址天机到MAC地址表中.
2.转发(Forwarding):端口能够接收并转发数据,也能够学习MAC地址,并添加到MAC地址表中.
3.侦听(Listening):该状态是从阻塞到转发状态过程中的临时状态,该状态只能发送和接受BPDU数据.
4.学习(Learning):该状态是从阻塞到转发状态过程中的临时状态,该状态不能够发送或接收数据.
5.关闭(Disable):该状态端口只提供网络管理服务,不能接受发送任何数据,也就是停止服务的状态.

◆RSTP 快速生成树◆

STP协议虽然解决了链路闭合引起的死循环问题,但是在端口从阻塞状态到转发状态间经过了一个只学习MAC地址但不参与转发的过程,产生了转发延时(默认15秒),从而使得生成树的收敛过程需要较长的时间,一般是转发延时的两倍.

为了解决STP收敛时间过长的缺点,IEEE又推出了802.1w标准,定义了RSTP(快速生成树)协议.RSTP协议在网络配置参数发生变化时,能够显著的减少网络的收敛时间,由于RSTP是从STP发展而来的,其与STP协议保持高度的兼容性,RSTP协议规定,在某些情况下,处于阻塞状态的端口不必经历阻塞->侦听->学习->转发这一个过程,就可以直接进入转发状态.

RSTP协议只有以下三种:

1.丢弃(Discarding):RSTP将STP中的阻塞,禁用,和侦听统称为丢弃模式.
2.学习(Learning):拓扑有所变动情况下,端口处于学习状态并学习MAC地址,将其添加到MAC地址表.
3.转发(Forwarding):在网络拓扑稳定后,端口处于转发状态,并开始转发数据包.

以上就是生成树协议的常用内容,对比后会发现,RSTP的收敛时间明显低于STP,解决了数据同步过慢的问题所在.

生成树的配置

接下来通过一个具体的实例,来完成生成树的配置命令和配置流程的实践,以下实验我们将把LSW1(三层交换)配置成根桥,将LSW2(二层交换)配置为备份根桥,实验拓扑结构如下图:

判断根桥: 首先我们需要判断当前的根桥是哪一个设备,我们分别在四台交换机上执行display stp命令或者执行display stp brief 命令,来查询默认那一台是根桥设备,以下根据查询到的结果可以知道,32768.4c1f-cc07-18c4的MAC地址为根桥设备.

<LSW1> display stp                                              // 判断根桥命令
<LSW2> display stp
<LSW3> display stp
<LSW4> display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-cc25-08bd                         // 本机优先级
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20      // 数据包发送时间
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc07-18c4 / 20000                 // 根桥MAC地址
CIST RegRoot/IRPC   :32768.4c1f-cc25-08bd / 0                     // 备份根桥MAC地址

<LSW1> display stp brief                                          // 查询接口状态
 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
   0    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE

指定根桥: 我们想让LSW1(三层交换)作为根桥设备,此时可在三层交换机上,直接通过以下命令,更换根桥设备.

<LSW1> system-view
[LSW1] stp root primary
[LSW1] display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :0    .4c1f-cc25-08bd                       // 本机桥ID
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :0    .4c1f-cc25-08bd / 0                   // 根桥ID
CIST RegRoot/IRPC   :0    .4c1f-cc25-08bd / 0

指定备份根桥: 接下来将LSW2(二层交换)指定为备份根桥,当LSW1(三层交换)出现故障后,LSW2(二层交换)将被选举为根桥设备,从而保证网络的正常运转,修改方式通过以下命令即可实现.

<LSW2> system-view
[LSW2] stp root secondary

[LSW2] display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :4096 .4c1f-cc45-2199
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :0    .4c1f-cc25-08bd / 200000            // 根桥MAC地址
CIST RegRoot/IRPC   :4096 .4c1f-cc45-2199 / 0                 // 备份根桥MAC地址
CIST RootPortId     :128.1

此时配置到这里,我们可以手动关闭LSW1(三层交换),然后去查看LSW2(二层交换),通过display stp命令,你会发现当三层交换机关机的时候,二层交换机默认变成了根桥,顶替了LSW1(三层交换)的工作,当LSW1(三层交换)启动后,默认会将LSW1(三层交换)再次恢复成根桥.

配置端口聚合

在我们的实际生产环境中,常常将交换机之间用多条链路连接起来,以获得更高的传输能力和网络性能,但根据之前的生成树协议,当交换机之间有冗余链路时,实际工作的链路只有一条,也就是说生成树协议阻碍了网络传输能力的提高.

为了解决生成树协议的传输能力的不足,出现了一种名为端口聚合的技术,它将多条物理链路组合成一条逻辑线路,实现链路带宽的增加,且还具有冗余作用,当其中部分链路出现故障时,其他链路还可以继续传输数据.

但是并不是所有的端口都可以任意聚合,端口聚合需要满足以下条件.

1.聚合的端口配置需要相同,包括端口速率和传输介质等.
2.聚合的端口必须属于同一个VLAN,也就是不许再一个虚拟局域网中.
3.聚合的端口类型必须相同,二层端口只能二层聚合,三层端口只能三层聚合.

端口聚合形成的逻辑端口称为聚合端口,端口聚合后原来端口的属性就会被聚合端口的属性所覆盖,也不能在源端口上做任何配置,实现端口聚合后,即使网络链路出现故障,只要不是所有链路都故障,网络还是可以继续运行的,只不过网络传输速度会降低而已.

下面将用一个具体的实例讲解端口聚合的配置方法和配置过程,包括创建聚合端口,配置聚合端口的工作方式和配置负载平衡,首先分别创建两个三层交换机,并通过网线Gig 0/0/1-3三条冗余链路相连接,拓扑图如下:

创建聚合端口: 在两台交换机上创建Eth-Trunk接口并加入成员接口,配置如下.

#----在LSW1上操作-------------------------
<Huawei> system-view
[Huawei] sysname LSW1                                         // 重命名交换机
[LSW1] interface Eth-Trunk 1                                  // 配置聚合号
[LSW1-Eth-Trunk1] trunkport GigabitEthernet 0/0/1 to 0/0/3    // 选择1-3号端口
[LSW1-Eth-Trunk1] quit

#----在LSW2上操作-------------------------
<Huawei> system-view
[Huawei] sysname LSW2
[LSW2] interface Eth-Trunk 1
[LSW2-Eth-Trunk1] trunkport GigabitEthernet 0/0/1 to 0/0/3
[LSW2-Eth-Trunk1] quit

创建VLAN: 在两台交换机上分别创建VLAN10VLAN20并将主机加入到相应的虚拟局域网内.

#----在LSW1上操作-------------------------
[LSW1] vlan batch 10 20                                        // 创建VLAN10与20
[LSW1] interface GigabitEthernet 0/0/4                         // 选择Gig0/0/4端口
[LSW1-GigabitEthernet0/0/4] port link-type trunk               // 配置成trunk
[LSW1-GigabitEthernet0/0/4] port trunk allow-pass vlan 10      // 应用到vlan10
[LSW1-GigabitEthernet0/0/4] quit
[LSW1] interface GigabitEthernet 0/0/5
[LSW1-GigabitEthernet0/0/5] port link-type trunk
[LSW1-GigabitEthernet0/0/5] port trunk allow-pass vlan 20
[LSW1-GigabitEthernet0/0/5] quit

#----在LSW2上操作-------------------------
[LSW2] vlan batch 10 20
[LSW2] interface GigabitEthernet 0/0/4
[LSW2-GigabitEthernet0/0/4] port link-type trunk
[LSW2-GigabitEthernet0/0/4] port trunk allow-pass vlan 10
[LSW2-GigabitEthernet0/0/4] quit
[LSW2] interface GigabitEthernet 0/0/5
[LSW2-GigabitEthernet0/0/5] port link-type trunk
[LSW2-GigabitEthernet0/0/5] port trunk allow-pass vlan 20
[LSW2-GigabitEthernet0/0/5] quit

配置端口聚合: 配置Eth-Trunk1接口允许VLAN10和VLAN20通过,两台交换机都需要配置.

#----在LSW1上操作-------------------------
[LSW1] interface Eth-Trunk 1
[LSW1-Eth-Trunk1] port link-type trunk                   // 将接口设置为trunk
[LSW1-Eth-Trunk1] port trunk allow-pass vlan 10 20       // 配置允许的VLAN
[LSW1-Eth-Trunk1] load-balance src-dst-mac               // 配置负载平衡方式

#----在LSW2上操作-------------------------
[LSW2] interface Eth-Trunk 1
[LSW2-Eth-Trunk1] port link-type trunk
[LSW2-Eth-Trunk1] port trunk allow-pass vlan 10 20
[LSW2-Eth-Trunk1] load-balance src-dst-mac

查询端口聚合: 配置完成后,可以查询所有的集合列表情况,查看所有聚合表命令如下.

[LSW1] display interface Eth-Trunk

Eth-Trunk1 current state : UP
Line protocol current state : UP
Description:
Switch Port, PVID :    1, Hash arithmetic : According to SA-XOR-DA,Maximal BW: 3
G, Current BW: 3G, The Maximum Frame Length is 9216
IP Sending Frames\' Format is PKTFMT_ETHNT_2, Hardware address is 4c1f-cc22-6944
Current system time: 2019-04-08 12:42:34-08:00
    Input bandwidth utilization  :    0%
    Output bandwidth utilization :    0%
-----------------------------------------------------
PortName                      Status      Weight
-----------------------------------------------------
GigabitEthernet0/0/1          UP          1
GigabitEthernet0/0/2          UP          1
GigabitEthernet0/0/3          UP          1
-----------------------------------------------------
The Number of Ports in Trunk : 3
The Number of UP Ports in Trunk : 3

配置边缘端口

对于运行生成树协议的二层网络,与终端相连的端口不用参与生成树计算,这些端口参与计算会影响网络拓扑的收敛速度,而且这些端口的状态改变也可能会引起网络震荡,导致用户流最中断.此时,可以通过执行命令stp edged-port enable将当前端口配置成边缘端口,该端口便不再参与生成树计算,从而帮助加快网络拓扑的收敛时间以及加强网络的稳定性.

需要注意:当前端口配置成边缘端口后,如果收到BPDU报文,那么交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,接下来将通过一个实验来演示边缘端口的配置,其配置拓扑图如下所示:

给指定端口配置: 这里我们指定配置两台交换机的边缘端口,将Ge0/0/2配置为边缘端口.

#----在LSW1上操作-------------------------
<Huawei> system-view
[LSW1] stp mode rstp                                   // 设置成快速生成树
[LSW1] interface GigabitEthernet 0/0/2                 // 选择要配置的接口
[LSW1-GigabitEthernet0/0/2] stp edged-port enable      // 配置成边缘接口

#----在LSW2上操作-------------------------
<Huawei> system-view
[LSW2] stp mode rstp                                   // 设置成快速生成树
[LSW2] interface GigabitEthernet 0/0/2                 // 选择要配置的接口
[LSW2-GigabitEthernet0/0/2] stp edged-port enable      // 配置成边缘接口

给全局端口配置: 也可以给将边缘端口配置为全局模式,以下案例将配置全局端口.

[LSW1] stp mode rstp                  // 配置成快速生成树
[LSW1] stp edged-port default         // 配置边缘端口为全局模式

[LSW1] interface GigabitEthernet 0/0/1              // 选择接口
[LSW1-GigabitEthernet0/0/1] stp edged-port disable  // 配置为非边缘端口

配置端口隔离

端口隔离可以将两个或多个主机或群组实现物理隔离,从而禁止同网段主机的数据通信,下面的小案例将实现端口隔离,其效果是PC1与PC2之间不能互相访问,PC1与PC3之间可以互相访问,PC2与PC3之间可以互相访问,其拓扑结构如下:

配置模式: 配置端口隔离模式为二层隔离三层互通.

<Huawei>system-view
[Huawei]port-isolate mode l2

配置隔离: 配置GE0/0/1GE0/0/2的端口隔离功能.

[Huawei] interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1] port-isolate enable group 1
[Huawei-GigabitEthernet0/0/1] quit

[Huawei] interface GigabitEthernet 0/0/2
[Huawei-GigabitEthernet0/0/2] port-isolate enable group 1
[Huawei-GigabitEthernet0/0/2] quit

端口防环路: 适用与华为交换机,防止下级环路自动shutdown下级有环路的端口.

<Huawei>system-view
[Huawei]loopback-detect enable             // 全局模式启用环路检测功能

[Huawei] interface GigabitEthernet 0/0/1  // 如果下级有环路shutdown本端口
[Huawei-GigabitEthernet0/0/1] loopback-detect action shutdown

查询隔离参数: 配置完成后可使用display current-configuration命令查询配置参数.

[Huawei]display current-configuration 
....
interface GigabitEthernet0/0/1
 port-isolate enable group 1
#
interface GigabitEthernet0/0/2
 port-isolate enable group 1
....

配置端口安全

在实际的生产环境中,对于有较高安全要求的设备,可以使用端口安全技术(Port Security)来提高网络的安全性,端口安全技术可在接入层验证接入设备,防止未经允许的设备接入到网络中,还可以限制端口接入的设备数量,防止过多设备接入网络,影响网络速率.

在网络中MAC地址是设备中不变的物理地址,控制MAC地址接入就控制了交换机的端口接入,所以端口安全也是对MAC的的安全.在交换机中CAM(Content Addressable Memory,内容可寻址内存表)表,又叫MAC地址表,其中记录了与交换机相连的设备的MAC地址、端口号、所属vlan等对应关系.

华为交换机MAC地址表分为三张

1、静态MAC地址表,手工绑定,优先级高于动态MAC地址表
2、动态MAC地址表,交换机收到数据帧后会将源mac学习到MAC地址表中
3、黑洞MAC地址表,手工绑定或自动学习,用于丢弃指定MAC地址

接下来看一个具体的实例,来实现端口安全的配置,包括端口绑定端口违规的处理等,实验拓扑图参数如下:

配置静态MAC地址: 静态指定允许接入的设备的MAC地址,首先要知道MAC地址是多少.

<Huawei> system-view
[Huawei] port-group group-member Gig0/0/1 to Gig0/0/3           // 选择1-3号端口
[Huawei-port-group] port-security enable                        // 开启端口安全功能
[Huawei-port-group] port-security max-mac-num 1                 // 限制安全MAC地址最大数量为1个
[Huawei-port-group] port-security protect-action shutdown       // 违规后默认关闭端口
[Huawei-port-group] mac-address learning disable action discard // 禁止MAC地址学习功能
[Huawei-port-group] quit

#----配置MAC地址静态绑定-------------------------
#将mac地址绑定到接口 Gig0/0/1 到 Gig0/0/2 在vlan1中有效
[Huawei] mac-address static 5489-9887-165B GigabitEthernet 0/0/1 vlan 1
[Huawei] mac-address static 5489-98B4-3791 GigabitEthernet 0/0/2 vlan 1
[Huawei] mac-address static 5489-98E3-0DCA GigabitEthernet 0/0/3 vlan 1

#----查询MAC地址绑定与分配------------------------
[Huawei] display mac-address                               // 查询绑定信息列表
MAC address table of slot 0:
-------------------------------------------------------------------------------
MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
               VSI/SI                                              MAC-Tunnel  
-------------------------------------------------------------------------------
5489-98e3-0dca 1           -      -      GE0/0/3         static    -           
5489-9887-165b 1           -      -      GE0/0/1         static    -           
5489-98b4-3791 1           -      -      GE0/0/2         static    -           
-------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 3 

配置动态MAC地址: 动态分配接入设备的MAC地址,此配置无需绑定MAC地址,会接入最先访问的主机MAC地址.

#-----------------------------------------------
#此功能是将动态学习到的MAC地址设置为安全属性,其他没有被学习到的非安全属性的MAC的帧将被端口丢弃

<Huawei> system-view
[Huawei] port-group group-member Gig0/0/1 to Gig0/0/3           // 选择1-3号端口
[Huawei-port-group] port-security enable                        // 开启端口安全功能
[Huawei-port-group] port-security max-mac-num 1                 // 限制安全MAC地址最大为1
[Huawei-port-group] port-security protect-action protect        // 配置处理动作为丢弃
[Huawei-port-group] port-security aging-time 300                // 配置老化时间300s
[Huawei-port-group] quit

#----查询MAC地址绑定与分配------------------------
[Huawei] display mac-address
MAC address table of slot 0:
-------------------------------------------------------------------------------
MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
               VSI/SI                                              MAC-Tunnel  
-------------------------------------------------------------------------------
5489-98e3-0dca 1           -      -      GE0/0/3         security  -           
5489-9887-165b 1           -      -      GE0/0/1         security  -           
5489-98b4-3791 1           -      -      GE0/0/2         security  -           
-------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 3

在端口安全动态MAC地址中,配置如上的话,在Gig0/0/1-3端口学习到的第一个MAC地址设置为安全MAC地址,此外其他MAC地址在接入端口的话都不给予转发,在300s后刷新安全MAC地址表,并且重新学习安全MAC地址,(哪个MAC地址)先到就先被学到端口并设置为安全MAC地址,但是在交换机重启后安全MAC地址会被清空重新学习.

配置贴粘MAC地址: 此功能与动态MAC功能一致,唯一不同的是粘贴MAC地址不会老化,切交换重启后依然存在.

<Huawei> system-view
[Huawei] port-group group-member Gig0/0/1 to Gig0/0/3           // 选择1-3号端口
[Huawei-port-group] port-security enable                        // 开启端口安全功能
[Huawei-port-group] port-security mac-address sticky            // 打开安全粘贴MAC功能
[Huawei-port-group] port-security max-mac-num 1                 // 限制安全MAC地址最大为1
[Huawei-port-group] quit

#----配置MAC地址静态绑定-------------------------
#手工绑定粘贴MAC地址和所属vlan1的操作

[Huawei] interface GigabitEthernet 0/0/1                         // 选择绑定接口
[Huawei] port-security mac-address sticky 5489-9887-165B vlan 1  // 绑定指定的MAC地址
[Huawei] port-security protect-action shutdown                   // 违规端口自动关闭
[Huawei] quit

[Huawei] interface GigabitEthernet 0/0/2
[Huawei] port-security mac-address sticky 5489-98B4-3791 vlan 1
[Huawei] port-security protect-action shutdown
[Huawei] quit

[Huawei] interface GigabitEthernet 0/0/3
[Huawei] port-security mac-address sticky 5489-98E3-0DCA vlan 1
[Huawei] port-security protect-action shutdown
[Huawei] quit

#----查询端口绑定情况----------------------------
[Huawei] display mac-address 
MAC address table of slot 0:
-------------------------------------------------------------------------------
MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
               VSI/SI                                              MAC-Tunnel  
-------------------------------------------------------------------------------
5489-98e3-0dca 1           -      -      GE0/0/3         sticky    -           
5489-9887-165b 1           -      -      GE0/0/1         sticky    -           
5489-98b4-3791 1           -      -      GE0/0/2         sticky    -           
-------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 3

此功能配置完成后,相当于对设备进行了严格的限制,当有其他的机器链接到不该链接的接口上时,也无法连接网路.

版权声明:本文为LyShark原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/LyShark/p/11152988.html