diff --git a/0209.png b/0209.png new file mode 100644 index 0000000..577b467 Binary files /dev/null and b/0209.png differ diff --git a/021.png b/021.png new file mode 100644 index 0000000..12f39ba Binary files /dev/null and b/021.png differ diff --git a/0210.png b/0210.png new file mode 100644 index 0000000..577b467 Binary files /dev/null and b/0210.png differ diff --git a/0211.png b/0211.png new file mode 100644 index 0000000..a73b729 Binary files /dev/null and b/0211.png differ diff --git a/0212.png b/0212.png new file mode 100644 index 0000000..74bc174 Binary files /dev/null and b/0212.png differ diff --git a/0213.png b/0213.png new file mode 100644 index 0000000..9f9f056 Binary files /dev/null and b/0213.png differ diff --git a/0214.png b/0214.png new file mode 100644 index 0000000..def35b2 Binary files /dev/null and b/0214.png differ diff --git a/0215.png b/0215.png new file mode 100644 index 0000000..59c6319 Binary files /dev/null and b/0215.png differ diff --git a/0216.png b/0216.png new file mode 100644 index 0000000..a7168b9 Binary files /dev/null and b/0216.png differ diff --git a/0217.png b/0217.png new file mode 100644 index 0000000..6d0073a Binary files /dev/null and b/0217.png differ diff --git a/0218.png b/0218.png new file mode 100644 index 0000000..0f96ce3 Binary files /dev/null and b/0218.png differ diff --git a/0219.png b/0219.png new file mode 100644 index 0000000..fc8605f Binary files /dev/null and b/0219.png differ diff --git a/022.png b/022.png new file mode 100644 index 0000000..a893b99 Binary files /dev/null and b/022.png differ diff --git a/0220.png b/0220.png new file mode 100644 index 0000000..334784e Binary files /dev/null and b/0220.png differ diff --git a/023.png b/023.png new file mode 100644 index 0000000..b8c79aa Binary files /dev/null and b/023.png differ diff --git a/024.png b/024.png new file mode 100644 index 0000000..87953aa Binary files /dev/null and b/024.png differ diff --git a/025.png b/025.png new file mode 100644 index 0000000..82686c0 Binary files /dev/null and b/025.png differ diff --git a/026.png b/026.png new file mode 100644 index 0000000..5bea0a6 Binary files /dev/null and b/026.png differ diff --git a/027.png b/027.png new file mode 100644 index 0000000..5516948 Binary files /dev/null and b/027.png differ diff --git a/028.png b/028.png new file mode 100644 index 0000000..42a8aba Binary files /dev/null and b/028.png differ diff --git a/029.png b/029.png new file mode 100644 index 0000000..90cb700 Binary files /dev/null and b/029.png differ diff --git a/0300.png b/0300.png new file mode 100644 index 0000000..6a5427e Binary files /dev/null and b/0300.png differ diff --git a/0301.png b/0301.png new file mode 100644 index 0000000..45e13fa Binary files /dev/null and b/0301.png differ diff --git a/0302.png b/0302.png new file mode 100644 index 0000000..505ed43 Binary files /dev/null and b/0302.png differ diff --git a/0303.png b/0303.png new file mode 100644 index 0000000..8dcd92e Binary files /dev/null and b/0303.png differ diff --git a/0304.png b/0304.png new file mode 100644 index 0000000..35ba625 Binary files /dev/null and b/0304.png differ diff --git a/0305.png b/0305.png new file mode 100644 index 0000000..0cec122 Binary files /dev/null and b/0305.png differ diff --git a/0306.png b/0306.png new file mode 100644 index 0000000..bbe30b0 Binary files /dev/null and b/0306.png differ diff --git a/0401.png b/0401.png new file mode 100644 index 0000000..cc3867d Binary files /dev/null and b/0401.png differ diff --git a/0402.png b/0402.png new file mode 100644 index 0000000..8156a3e Binary files /dev/null and b/0402.png differ diff --git a/29.png b/29.png new file mode 100644 index 0000000..e5a5777 Binary files /dev/null and b/29.png differ diff --git a/2nd_chapter.md b/2nd_chapter.md new file mode 100644 index 0000000..86a79ee --- /dev/null +++ b/2nd_chapter.md @@ -0,0 +1,876 @@ +# CSMA/CD, 交换和虚拟局域网 + +__ CSMA/CD, Switching, and VLANs __ + +## 第二天的任务 + +* 阅读今天的课文 +* 复习昨天的课文 +* 阅读 ICND1 记诵指南 + + +思科工程师混饭吃的手艺就是安装、配置和调试(troubleshooting)交换机。而这又恰恰是这些工程师们不那么擅长的事情,这么说有些不思议吧。可能有些人靠的是交换机本身的即插即用能力,或是在问题出现后直面解决。这样的“凭感觉试试看”的风格,在出现交换相关的问题时,就会心态事与愿违了。(This "fly by the seat of your pants" mentality backfires for many enigeers when there is a switching-related issue.) + +__我建议你在学习本书时,先粗略地过一遍,然后在回头读几次,每次都将那些重点做一下笔记或是划一下重点。__ + +今天你将学到以下内容: + +* CSMA/CD +* 虚拟局域网,VLANs +* 配置 VLANs +* VLANs 故障排除 + +此模块涵盖 CCNA 大纲要求的以下方面: + +* 掌握以太网络中用到的技术及介质访问控制方法 +* 理解基本的交换概念及思科交换机操作: + * 冲突域 + * 广播域 + * 交换的不同类型 + * CAM 表 +* 配置并验证初始交换机配置,含远程访问管理 + * 执行基本交换机设置的那些思科 IOS 命令 +* 使用如 ping、Telnet 以及 SSH 等基本工具程序来验证网络状态以及交换机的运作 +* 描述 VLANs 是如何创建出逻辑独立网络,以及这些网络之间的路由需求 + * 解释网络分段及基本的流量管理概念 +* 配置和验证 VLANs + +## 交换机基础知识 + +### 带有冲突检测载波侦听,多路复用,Carrier Sense, Multiple Access with Collision Detection + +带有冲突检测载波侦听,多路复用(Carrier Sense, Multiple Access with Collision Detection, CSMA/CD) 一词可以分解为以下几个部分,“载波侦听” 的意思是线路为设备所侦听,以确定是否有信号在其上传输。如果线路正在使用中,那么以太网帧是不能发送出去的。“多路复用” 的意思是网段上有多余一台的设备在使用线缆。最后的“冲突检测” 是指协议运行着一套确定线路上的太网帧是否因为遇到另一个帧而已经损坏的算法。从下图 2.1 你可以看到交换机端口在监听着线路。 + + +图 2.1 -- 端口监听着线路 + +如果线路上出现了冲突,则监听设备会发出一个拥塞信号,以通知其它设备发生了冲突,它们就不会尝试往线路上发送数据了。此时,协议算法运行起来,产生一个随机数时间间隔,在以此间隔后重传。在线路清空前,设备不会发送以太网帧。Wikipedia 上是这样解释该过程的: + + +图 2.2 -- CSMA/CD 过程 + +> Farai 指出 -- “需要注意,现代交换机使用的是全双工连接交换机,因此而不会用到 CSMA/CD。但它仍然支持该技术,而这完全是为了向后兼容性。” + +### 冲突域和广播域 + +网络集线器的一个缺点是在线路上发生冲突时,损坏的帧会发送到所有连接的设备。现代交换机的优势之一就是交换机的每个端口都是作为一个冲突域。在冲突发生时(全双工下是不可能出现的),损坏的帧不会通过接口。图 2.3 展示了一台交换机增加到使用两台集线器的小型网络上的情形。交换机将该网络分解成两个冲突域。 + + +图 2.3 -- 一台交换机创建出两个冲突域 + +思科通常会在考试中以提问交换机是否减少冲突域数量的方式引诱你犯错。匆忙之下,你可能受导向说交换机会减少冲突域数量,但实际情况是相反的,交换机会增加冲突域的数量,而这是好事。交换机确实增加了冲突域的数量。因为集线器受限于其所采用的技术,而只能工作于半双工下,它就显得相当无用了。图 2.4 中,__4 台 PC 连接到交换机上,产生 4 个冲突域__。每台 PC 都工作在全双工下,能够完全用上 100Mbps 的带宽。 + + +图 2.4 -- 四个冲突域 + +__交换机(这里说的是二层交换机)不会隔离广播域,路由器会__。如果交换机收到带有广播目的地址的以太网帧,就就转发给所有端口,不管该帧是从哪个端口收到的。需要一台路由器来隔离广播域。图 2.5 展示了使用交换机/网桥以及一台路由器的小型网络,用以说明冲突域是如何隔离的。 + + +图 2.5 -- 广播域和冲突域 + +### 自动协商,Auto-negotiation + +你已经见到在连接不同速率和双工设置时,可能会出问题。在网络的一部,你可能会经常予以升级,但因为财务预算的制约,网络的其它部分会有老旧设备。这就会导致双工和速率的不匹配,引起错误和丢帧现象的发生。后面的章节中,我们将涉及交换机故障排除的内容。 + +IEEE 将自动协商作为解决此问题的方案,该技术让设备在传输流量前,就双工和速率上达成一致。速率设置为低速设备的速率。在下面的输出中,速率可被手动设定为 10Mbps 或 100Mbps, 或者设定为 auto-negotiation。 + +``` +Switch(config)#int f1/0/1 +Switch(config-if)#speed ? +10 Force 10 Mbps operation +100 Force 100 Mbps operation +auto Enable AUTO speed configuration +``` + +该设置可用命令 `show interface x` 进行查看。 + +``` +Switch#show int f1/0/1 +FastEthernet1/0/1 is down, line protocol is down (notconnect) + Hardware is FastEthernet, address is 001e.13da.c003 (bia 001e.13da.c003) + MTU 1600 bytes, BW 10000 Kbit, DLY 1000 usec, + reliability 255/255, txload 1/255, rxload 1/255 + Encapsulation ARPA, Loopback not set + Keepalive set (10 sec) + Auto-duplex, Auto-speed, media type is 10/100BaseTX +``` + +请务必牢记,尽管有如此设置,__auto-negotiation 仍可能会引起问题__。这就是为何许多生产性网络仍然坚持将端口直接配置成 100/full 或者千兆以太网的 1000/full。思科这样解释的: + +> 不合格的应用(nonconforming implementation)、硬件不兼容或者软件缺陷(software defects)三种原因,可能会导致各种自动协商问题。在网卡或厂商交换机与 IEEE 802.3u 规范不完全一致时,问题就会发生。厂商特定的一些高级特性,比如自动正负极性或线缆完整性(auto-polarity or cable integrity)等在 IEEE 802.3u 的 10/100Mbps 自动协商标准中没有描述的那些特性,同样会导致硬件的不兼容或其它问题。([Cisco.com](http://www.Cisco.com)) + +### 帧交换,Switching Frames + +__交换机是为交换帧而生(也就是说,将来自某进入接口的帧传输到正确的出口接口)__。广播帧被交换出所有接口(除了接收到广播帧的那个接口),带有不明目的地(目的地址不在 MAC 表中)的那些帧也一样,交换机执行下面三个动作: + +* 根据目的 MAC 地址,进行帧转发或过滤(forwarding or filtering<dropping>) +* 从进来的帧学习 MAC 地址 +* 使用 STP 协议来阻止二层环回的发生(STP 在 ICND2 第 31 天学习) + +图 2.6 中,交换机将来自主机 A (F0/1)以主机 C 为目的地的帧正确转发出 F0/3, 而阻止其离开接口 F0/2。 + + +图 2.6 -- 帧过滤 + +如目的地址不在 MAC 地址表中,交换机将该帧泛洪(flooding)至除它收到该帧的那个接口外的所有接口上。__交换机也会存储那些连接在另一台交换机上的设备的 MAC 地址;不过在地址表中它们对应的接口名称会是同一个,这样下来多个 MAC 地址与一个同样的出口接口对应,列出在 MAC 地址表中。这是一种找出网络上你不熟悉设备的方法__。图 2.7 用以说明这个概念。 + + +图 2.7 -- 同一接口上的多 MAC 地址 + +流量传输中的任何延时(delay),都被称为传输延迟(latency)。__依据你所希望的在流量传输前对帧的检查程度,思科交换机提供了三种流量交换的方式__。对帧的检查越多,引入到交换机的延迟就越多。三种可供选择的交换模式(switching modes)为: + +* 直通模式,Cut-through +* 存储转发模式(交换机默认),Store-and-forward +* Fragment-free(改进的直通模式) + +__直通模式__ + +直通模式交换是最快交换方式,它有最低的延迟。进入交换机的帧仅读至目的地址,便做出转发决定。在获知目的地址后,交换机马上检查 CAM 表,以找到正确的端口来转发出该帧并马上发出。因为没有错误检查,此方式才能提供最低的延迟。代价是交换机会转发任何带有错误的帧。 + +使用一个比方来说明交换机模式是最好不过了。你作为某夜店的保安,被要求每个进入夜店的人都要有一个带照片的出入卡 -- 却并没要求你去查看照片是否与那个人一致,只是出入卡要有就行。这种方式下,人们必定能快速进入夜店了。这就是直通模式的工作原理。 + + +__存储转发模式__ + +交换机读取整个帧,并将其复制到它的缓冲区。对该帧执行一次循环冗余校验(cyclic redundancy check, CRC)以检查其存在的任何错误。如有发现错误,该帧就被丢弃。相反,就检查交换表,并转发该帧。存储转发模式确保帧至少有 64 字节大,且不大于 1518 字节。若小于 64 字节或大于 1518 字节,交换机就会丢弃帧。 + + +现在请再次设想你是夜店保安,此时你务必要确保照片与那个人是相吻合的,同时你要在放进那些人之前记下他们的名字和地址。这样来查验出入卡就造成了相当大的延迟,这也是存储转发交换运行的方式。 + +三种交换方式中有着最高延迟的就是存储转发交换,也是 2900 系列交换机默认的交换方式。 + +__Fragment-free(修订的直通模/Runt-free 模式)__ + +因为直通交换不检查错误,而存储转发模式又耗时太长,我们需要一种又快又可靠的方式。使用夜店保安的例子,设想你被要求确保每个人都有出入卡同时照片又要吻合。此方式下,你确保每个人都是其宣称的那个人,但你不必记下他们的所有信息。在交换中,这是通过采用 fragment-free 交换方式实现的,低端的(lower-level)思科交换机默认配置为此种模式。 + +Fragment-free 交换是直通交换的一个修改变种。检查帧的前 64 字节有无错误,随后传输出去。此方法背后推理(reasoning)是帧的错误最有可能发生在前 64 字节中。 + +如同上面已经提到的,以太网帧的最小尺寸是 64 字节;任何小于 64 字节的帧被称为是“侏儒(runt)”帧。因为转发前的帧都必须至少有 64 字节,这就会消除那些侏儒帧,这也是为何此模式又被叫做 “runt-free” 交换的原因。 + +## 交换基本概念,Switching Concept + +### 交换机使用需求 + +在交换机发明前,网络上的所有设备都会接收到来自其它设备的数据。一旦探测到线路上有一个数据帧,PC 就不得不停下来查看其头部,看看自己是不是数据帧的接收者。设想一下网络上每分钟都有上千个帧吧。所有设备很快就被折腾到挂起。图 2.8 展示了网络上的所有设备;注意因为是通过仅转发的集线器连接在一起,它们都不得不共享同一带宽。 + + +图 2.8 -- 每台设备都听着其它设备 + +__集线器的问题__ + +之前我曾提到__集线器仅是简单的多端口中继器__(见 2.9)。它们接收传入的信号,进行清理,然后在插线了的端口上发出。它们同时创建出一个巨大的冲突域。 + + +图 2.9 -- 集线器在每个端口上都发送帧 + +集线器是愚蠢(dumb)设备。它们没有 MAC 地址存储机制,所以在设备 A 每次往设备 B 发送一个帧时,它都会往每个端口发送。交换机就不一样,有一块叫做专用集成电路(application-specific integrated circuit, AISC)的存储芯片,该芯片会建立一个设备端口表(图 2.10)。这个表保存在内容可寻址存储器(Content Addressable Memory, CAM)中。 + + +图 2.10 -- 交换机建立起一张 MAC 地址表 + +__在首次启动时,交换机并未在其 CAM 表(思科考试又此表称为 MAC 地址表)中存储任何地址__。一有帧开始传输,该表就建立起来。如果在指定时间过后没有帧从某个端口传送,这条记录就会过期。下面的输出表明,至今仍没有帧在交换机上通过。 + +``` +Switch#show mac-address-table + Mac Address Table +------------------------------------------- +Vlan Mac Address Type Ports +---- ----------- -------- ----- +Switch# +``` + +交换机中没有记录,不过当你从一台路由器 ping 另一台时(两台都连接上交换机),表格条目建立起来。 + +``` +Router#ping 192.168.1.2 +Type escape sequence to abort. +Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds: +.!!!! +Success rate is 80 percent (4/5), round-trip min/avg/max = 62/62/63 ms +Switch#show mac-address-table + Mac Address Table +------------------------------------------- +Vlan Mac Address Type Ports +---- ----------- -------- ----- +1 0001.c74a.0a01 DYNAMIC Fa0/1 +1 0060.5c55.da01 DYNAMIC Fa0/2 +``` + +该条目的意思是,任何目的地址为连接到交换机上 FastEthernet 端口 0/1 或 0/2 的 MAC 地址的帧,都会直接发送到对应的端口。对于任何其它帧,交换机都将执行一次广播查询,看看目的设备是否插入了交换机。从上面的五次 ping 中的第一个句点可以看出。在等待交换机广播查询及收到目的路由器回应时,第一次 ping 发生了超时(80% 的成功率)。 + +__`show mac-address-table` 命令是一个非常重要的命令__,务必要记住这个命令,考试和现实工作中都是需要的。 +你已经注意到 MAC 地址是个什么东西了。MAC 地址指派给所有设备,以实现数据链路层的通信。在以太网卡、路由器的以太网接口及无线设备上,你都能看到各厂商分配的 MAC 地址。下面是我的笔记本的以太网卡的 MAC 地址。 + + + +各家厂商有各自的组织唯一识别号(Organizationally Unique Identifier, OUI), 该号码构成了 MAC 地址的前半段。随后他们就可以根据其各自的编号系统来自由创建地址的后半段了。一个 MAC 地址是 48 位二进制数(后面我们会涉及二进制和十六进制的知识),所以上面我的地址构成为: + +| OUI | 厂商编号 | +| -- | -- | +| 24 位二进制数 | 24 位二进制数 | +| 6 位十六进制数 | 6 位十六进制数 | +| 00 1E EC | 54 85 17 | + + +如交换机在某个接口上收到一个帧,它就将帧的源地址加入到表中。如它知道帧的目的地址,就将该转发出相应接口。如它不知道目的地址,它将把该帧广播到除了收到该的所有接口。如果交换机收到一个广播帧(也就是目的地址全 F 的帧),它也会将该帧广播到除接收到该帧的所有接口。后面我们会涉及十六进制编址。广播过程如图 2.11 所示。 + + +图 2.11 -- 广播帧在所有接口上发出 + +### 以太网帧 + +有四种不同类型的以太网帧: + +* 以太网 802.3 帧 +* 以太网 II 帧 +* 以太网 802.2 SAP 帧 +* 以太网 802.2 SNAP 帧 + +前两种以太网标准用于在网卡之间通信时的组帧方式。__它们不能识别上层协议,802.2 类型帧才具备此能力__。你__只需要注意 802.3 类帧__,此类型的帧构成如下。 + + +图 2.12 -- 以太网 802.3 帧结构 + +IEEE 委员确定的 IEEE 802.3 以太网帧有以下特定字段。 + +* 前同步信号,preamble -- 为传入的数据对网卡进行信号同步及告知 +* 帧开始界定符,start-of-frame delimiter, SFD -- 标志着帧的开始 +* 目的地址 -- 目的 MAC 地址,可以是单播(Unicast)、广播或多播(Multicast) +* 源地址 -- 发送主机的 MAC 地址 +* 长度 -- 定义帧中数据字段的长度 +* 数据 -- 帧中的载荷(就是传输中的数据) +* 帧校验序列,frame-check sequence, FCS -- 给出了帧中所有数据的循环冗余校验(cyclic redundancy check, CRC) + + +### 交换机初始配置,Initial Switch Configuration + +你需要先像连接全新的路由器那样,用通过控制台端口连接新的交换机。因为在你能够在通过 Telnet 或 SSH(稍后会更多地讲到)连上交换机之前,交换机上至少得已经有一两条配置才行。很多交换机的初始配置和路由器的初始配置都是一样的。 + +在首次连接交换机时,在任何设上都很有必要执行一下 `show version` 命令(其输出见下面)。考试中也要求你明白哪个 `show` 命令提供哪些信息。大多数情况下你不能从考试模拟器访问中得到答案,你就只有靠记忆来作答了。 + +`show version` 命令提供了很多有用信息,包括这些。 + +* 交换机运行时间,switch uptime +* 型号 +* IOS 版本, IOS release +* 上次重启的原因 +* 所有接口及其类型 +* 所有安装的存储器 +* 背板 MAC 地址,base MAC address + +``` +Switch>en +Switch#show version +Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(25)FX, RELEASE +SOFTWARE (fc1) +Copyright (c) 1986-2005 by Cisco Systems, Inc. +Compiled Wed 12-Oct-05 22:05 by pt_team +ROM: C2960 Boot Loader (C2960-HBOOT-M) Version 12.2(25r)FX, RELEASE SOFTWARE (fc4) +System returned to ROM by power-on +Cisco WS-C2960-24TT (RC32300) processor (revision C0) with 21039K bytes of memory. +24 FastEthernet/IEEE 802.3 interface(s) +2 GigabitEthernet/IEEE 802.3 interface(s) +63488K bytes of flash-simulated non-volatile configuration memory. +Base Ethernet MAC Address___________: 0090.2148.1456 +Motherboard assembly number : 73-9832-06 +Power supply part number : 341-0097-02 +Motherboard serial number : FOC103248MJ +Power supply serial number : DCA102133JA +Model revision number : B0 +Motherboard revision number : C0 +Model number : WS-C2960-24TT +System serial number : FOC1033Z1EY +Top Assembly Part Number : 800-26671-02 +Top Assembly Revision Number : B0 +Version ID : V02 +CLEI Code Number : COM3K00BRA +Hardware Board Revision Number : 0x01 +Switch Ports Model SW Version SW Image +------ ----- ----- ---------- --------------- +* 1 26 WS-C2960-24TT 12.2 C2960-LANBASE-M +Configuration register is 0xF +``` + +我们还没有涉及 VLANs 的知识,但现在,你可以把 VLAN 看着是一个逻辑上的局域网,在 VLAN 上的设备物理上可以在不同地方,但在能它们所能关注到的细节下(as far as they are concerned),他们都是直接连接在一台交换机下的。在下列配置中,交换机所有端口都是默认在 VLAN 1 中。 + +``` +Switch#show vlan +VLAN Name Status Ports +---- ------- ------ ------------------------------ +1 default active Fa0/1, Fa0/2, 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, Fa0/16, + Fa0/17, Fa0/18, Fa0/19, Fa0/20, + Fa0/21, Fa0/22, Fa0/23, Fa0/24, +``` + +如你打算给交换机添加一个 IP 地址(就是__管理地址__),以便通过网络连上该交换机,只需给某个 VLAN 配置 IP 地址即可;本例中就是 VLAN1。 + +``` +Switch#conf t +Enter configuration commands, one per line. End with CNTL/Z. +Switch(config)#interface vlan1 +Switch(config-if)#ip add 192.168.1.3 255.255.255.0 +Switch(config-if)# ← hold down Ctrl+Z keys now +Switch#show interface vlan1 +Vlan1 is administratively down, line protocol is down + Hardware is CPU Interface, address is 0010.1127.2388 (bia 0010.1127.2388) + Internet address is 192.168.1.3/24 +``` + +而 __VLAN1 默认是关闭的__,你需要执行一个 `no shutdown` 命令来开启它。你__还需告诉交换机往哪里发送所有 IP 流量,因为 2 层交换机没有建立路由表的能力__;该操作如下面的输出所示。 + +``` +Switch#conf t +Enter configuration commands, one per line. End with CNTL/Z. +Switch(config)#ip default-gateway 192.168.1.1 +Switch(config)# +``` + +在网络上有多台交换机时,你会想着去修改交换机默的主机名,这样在远程连接它们时才更容易区分(见下面的配置命令行)。设想一下通过远程 Telnet 对五台同样叫做 “Switch” 的交换机进行故障排除时的情形吧。 + +``` +Switch(config)#hostname Switch1 +``` + +如你要经由网络 Telnet (或 SSH) 到某台交换机,你还需开启该协议。交换机远程访问默认是关闭的。 + +``` +Switch1#conf t +Enter configuration commands, one per line. +Switch1(config)#line vty 0 15 +Switch1(config-line)#password cisco +Switch1(config-line)#login +``` + +__请完成上述操作,然后从另一设备(同一子网)连上交换机来测试你的配置__。这是一道 CCNA 基础题目。 + +__VTYs(Virtual TeletYpe terminal) 是路由器或交换机用于对其进行 Telnet 或安全 Telnet ( SSH ) 访问的虚拟端口__。在你为其配置上一种认证方式之前,它们都是关闭的(最简单的方法是给它们加上一个口令,然后执行 `login` 命令)。你可以见到 0 到 4 端口、inclusive (包含)或 0 到 15 端口。要得知你有多少个可用的端口的一种方法是在编号 0 后面输入一个问号, 或者使用 `show line` 命令,如下面的输出所示。 + +``` +Router(config)#line vty 0 ? +<1-15> Last Line number +Router#show line + Tty Typ Tx/Rx A Modem Roty AccO AccI Uses Noise Overruns Int +* 0 CTY - - - - - 0 0 0/0 + 1 AUX 9600/9600 - - - - - 0 0 0/0 * + 2 VTY - - - - - 2 0 0/0 + 3 VTY - - - - - 0 0 0/0 + 4 VTY - - - - - 0 0 0/0 + 5 VTY - - - - - 0 0 0/0 + 6 VTY - - - - - 0 0 0/0 +``` +CTY 就是控制台线路,同时 VTY 线路用于 Telnet 连接,AUX 是指辅助端口。 + +为了获得更为安全的访问方式,你可以仅允许 SSH 连接进入交换机,这就是说流量会被加密。而要让 SSH 工作,你需要在交换机上允许安全性 IOS 镜像,如下面的输出那样。 + +``` +Switch1(config-line)#transport input ssh +``` +现在,Telnet 流量就不再被允许传入到 VTY 端口了。 + +请在交换机上配置一下这所有的命令。仅仅阅读它们无助于你在考试当天记起它们。 + +## 虚拟局域网,Virtual Local Area Networks, VLANs + +就如同你已经看到的那样,交换机打破冲突域。更进一步,路由器打破广播域,这就是说现在的网络看起来像下面这样。 + + +图 2.13 -- 路由器隔离广播域 + +在继续之前,让我们讨论一下局域网到底是什么。一个局域网本质上是一个广播域。图 2.13 中的网络上,如果 PC-A 发出一个广播包,PC-B 会接收到这个包,PC-C 和 PC-D 却不能。这是因为那台路由器打破了该广播域。现在你可以__使用虚拟局域网将交换机的那些端口放入不的广播域__,如下图所示。 + + +图 2.14 -- VLAN 下的广播域 + +图 2.14 中,该 2 层网络经由 VLANs 被划分为两个广播域。PC-A 发出的广播包为 PC-B 接收到,PC-C 和 PC-D 接收不到。如没有 VLANs,PC-C 和 PC-D 仍会收到 PC-A 发出的广播包。VLANs 的一些优点如下。 + +* 更小规模的设备组中的较少广播包令到网络更快 +* 设备资源得以节省,因为它们只需处理少量的广播包 +* 通过将设备保留在特定组别(或按特定功能分组)的一个广播域中,而提升安全性。这里的组别,可以是公司/机构的部门,或是某个安全级别等。比如开发部门或者测试室就应该与生产部门的设备分开。 +* 带来在跨越任何尺度的地理位置上网络扩展的灵活性。比如,同一 VLAN 中某台 PC 在楼宇中的什么位置并不重要。它会以为自己与其它配置在同一 VLAN 中的机器在同样的网段上。图 2.15 中,VLAN 1 中的所有主机都能与其它主机通信,尽管它们不在同一楼层。对它们来说,VLAN 是透明的或不可见的。 + + +图 2.15 -- VLANs 消除局域网的物理边界 + +### VLAN 标记,VLAN Marking + +虽然厂商在创建 VLANs 中采用其各自的方法,我们务必要小心处理一个涉及多厂商的 VLAN,以解决互操作性问题。比如思科开发的 __ISL 标准,是通过增加一个 26 字节的头部,以及一个新的 4 字节尾部(trailer), 的方式来封装原始帧__。为解决兼容性问题,IEEE 开发了 802.1Q 标准,这是一个独立于厂商的方式,用以创建可互操作 VLANs。 + + +图 2.16 -- ISL 的标记方式 + +802.1Q 通常被称为“帧标记(frame tagging)”, 因为它将一个叫做标签的 32 位头部(a 32-bit header, called a "tag"),插入到原始帧源地址后面,而不会对其它字段进行修改。紧邻源地址后两个字节,占据着一个注册以太网类型值 -- 0x8100, 它表明该帧包含了一个 802.1Q 头部。接着的 3 位表示 802.1P 用户优先级(User Priority, UP)字段, 在服务质量(Quality of Service, QoS)技术中,用作服务类别(Class of Service, CoS)位。下一个字段是 1 位规范格式标识(Canonical Format Indicator, CFI),最后 12 位是 VLAN ID。所以在采行 802.1Q 标准时,我们总共能有 4096 个 VLANs。 + + +图 2.17 -- 802.1Q 的标记方式 + +传送来自多个 VLANs 数据的那个端口叫做干线(trunk)端口。trunk 端口可以使用 ISL 协议,也可以使用 802.1Q 协议。802.1Q 中的一个特别概念是"原生 VLAN(native VLAN)"。这是一种特别的 VLAN 类型,它上面的帧是没有打标签的。原生 VLAN 的目的是让交换机在某个接口上运行 802.1Q 中继(单一链上的多 VLANs),即便另一设备无法支持中继的情况下,原生 VLAN 上的流量仍能通过该链路。如交换机在一条中继链路上收到未打标签的流量,就会假定这些流量是属于原生 VLAN 上的。__思科将 VLAN 1 作为_默认_的原生 VLAN__。 + +### 加入虚拟局域网, VLAN Membership + +有两种常用的将端口加入到 VLANs 的方式 -- 静态方式或动态方式。 + +通过静态 VLAN 指派或配置,交换机上的那些端口为管理员所配置在不同 VLANs 中,有关设备再连接到端口上。在某用需要搬往楼宇的其它部位时,就要求管理员改变交换机上的配置。默认情形下,所有交换机端口属于 VLAN 1。 + +动态指派方式令到设备可根据其 MAC 地址而加入到特定的 VLAN。该特性给予管理员在无需改变交换机配置的情况下,允许用户接入任何交换机或是在楼栋内搬动的灵活性。__通过运用一台虚拟局域网管理策略服务器(a VlAN Management Policy Server, VMPS)实现动态特性__。 + +> Farai 指出 “先是端口指派到 VLANs 中,随后设备插入到端口上”。 + +请注意,由于各个 VLAN 都是不同的广播域,这就带来以下问题。 + +* 默认情形下,一个 VLAN 中的主机是不能到达其它 VLAN 的 +* VLAN 间通信需要一台三层设备(后面会讲到) +* 每个 VLAN 都需要它们自己的子网,比如, VLAN 1 -- 192.168.1.0/24, VLAN 2 -- 192.168.2.0/24 +* 某 VLAN 中的所有主机应属于同一 VLAN + +### VLAN 链路, VLAN Links + +我们知道在一台交换机上可以有连接到多个 VLANs 的主机。那么在流量从一台主机前往另一主机时,发生了些什么呢?比如说,在图 2.15 中,当 VLAN 1 位于一楼的主机尝试与 VLAN 1 位于二楼的主机通信时,二层的那台主机是怎样知道该流量是属于哪个 VLAN 的呢? + +我们知道交换机采用了一种叫做“帧标记(frame tagging)” 的方式,来将流量在不同 VLANs 上保持隔离。交换机把包含了 VLAN ID 的一个头部添加进帧中。在图 2.15 中,一楼交换机将会给来自 VLAN 2 的流量打上标记后,传给交换机 2, 交换机 2 将会看到这个标记,从而得知该流量需要呆在 VLAN 2 中。__这样的流量只能在叫做_中继链路_的链路上通过。VLAN 1 通常被指定为原生 VLAN,而_原生 VLAN 上的流量不被标记___。关于原生 VLAN 的内容,后面会提到。 + +交换机端(在 CCNA 考试范围内)可一分为以下三种。 + +* 接入端口,或接入链路,access links or ports +* 中继端口,或中链路,trunk links or ports +* 动态端口(很快就会学到这个) + +### 接入链路,Access Links + +被定义了作为接入链路的交换机端口,只能是唯一 VLAN 的一个成员。连接该接入链路的设备并不知晓任何其它 VLANs 的存在。在来自主机的帧进入到一个接入链路时,交换机就将一个标签加入到该帧中,在前往主机的帧从交换机接入链路出去时,交换将该标记从帧中移除。接入链路用于连接主机,也可以用于连接路由器。 + +### 中继,Trunking + +某个交换机端口通常既会连接网络上的某台主机,也会连接其它网络交换机、路由器或服务器。那么该链路就有可能需要传输多个 VLANs 上的流量。为实现这个目的,就需要区分每个帧都是来自于哪个 VLAN。这种区分方式就叫做 “帧标记(frame tagging)”, 在经中继链路传输前,出原生 VLAN 的帧外,所有帧都已打过标签。帧中的标记包含了 VLAN ID 信息。在帧到达目的主机所在的那台交换机后,该标记被移除。 + + +图 2.18 -- VLAN 标记法 + +VLAN 中继用于传输多个 VLAN 的数据。为将属于某个 VLAN 的帧与其它 VLANs 的帧有所区别,在中继链路上传输的所有帧都经特别标记过,这样目的交换机就知道该帧属于那个 VLAN。ISL 和 802.1Q 是用于确保这些 VLANs 在穿过交换机中继链路后,仍能完全分辨出来的两种主要方式。 + +交换机间链路(Inter-Switch Link, ISL) 是思科专有的。尽管如此,CCNA 考试用用到的型号是 2960 交换机,它只能识别 802.1Q。我们在这里提到 ISL 只是为了知识体系的完整性,以防你不得不配置老旧型号的交换机的情形。 + +> Farai 指出 -- “所有新型号交换机默认都是采用 802.1Q, ISL 已被弃用。” + +802.1Q 与 ISL 有很多的不同,最大区别是,802.1Q 可以支持最多 4096 个 VLANs, ISL 只能支持最多 1000 个。另一个大的区别是 802.1Q 中的原生 VLAN 概念。默认情形下,802.1Q 中来自所有 VLANs 的帧都被打上标签。此规则的唯一例外就是属于原生 VLAN 的帧,这些帧未被标记。 + +尽管如此,你要记住,__在某个特定中继链路上,可以通过将某 VLAN 设为原生 VLAN,来指定其上面的帧不打标签__。比如,在采用 802.1Q 时,为阻止对 VLAN 400 上的帧打标签,你需要将 VLAN 400 配置为某特定中继上的原生 VLAN。IEEE 802.1Q 原生 VLAN 配置在后面会详细介绍。 + +以下是有关 802.1Q 特性的小结。 + +* 支持最多 4096 个 VLANs +* 采用帧内标记机制,修改原始帧 +* 是由 IEEE 开发的开发标准协议 +* 不对原生 VLAN 上的帧打标签;除此之外的所有帧都被标记 + +下面是一台交换机上的简短示例配置。我将 `switchport` 命令包括了进去,该命令告诉交换机将其某个端口作为二层端口,而不是三层。 + +``` +Sw(config)#interface FastEthernet 0/1 +Sw(config-if)#switchport +Sw(config-if)#switchport mode trunk +Sw(config-if)#switchport trunk encapsulation dot1q +Sw(config-if)#exit +``` + +当然,在 2960 系列交换机上,`encapsulation` 不被识别,因为它只有一种类型。__在将一台交换机与其它交换机连接时,你需要将其接口设置为中继接口,以令到 VLANs 都被标记上__。`switchport` 命令的作用同样如此。再次说明,我在这里提到这个,是因为在现实中,你可能要配置一台三层交换机,如我们死盯 2960 型号,你可能会感到迷惑,我们不要这个! + +交换机上的某中继链路可以是下列五种模式之一。 + +* 开启(On)模式 -- 强制该端口进入永久中继模式。不管插入设备是否同意将它们之间的链路转换成中继链路,该端口都会成为一个中继端口。 +* 关闭(Off)模式 -- 该链路不被作为中继链路使用,就算插入设备被设置成“中继”模式。 +* 自动(Auto)模式 -- 该端口不情愿成为一条中继链路。在插入设备被设置为“开启”或“我要(desirable)”模式时,链路就成为中继链路。当两端都被设置为“自动”模式时,链路就绝不会变成中继链路了,因为没有一方有转换成中继的意愿。 +* 我要(Desirable)模式 -- 该端口积极尝试转换成中继链路。如另一设备被设置为 “开启”、“自动” 或 “我要” 模式,链路就会成为中继链路 +* 没商量(No-negotiate)模式 -- 阻止端口经由协商成为中继连接。配置上此模式后,端口会强制进入接入模式或中继模式。 + +### 配置 VLANs, Configuring VLANs + +现在你已对 VLANs 和中继链路有了了解,就让我们来配置一下图 2.19 中的网络吧。你需要将交换机配置为两个分别在 fa0/1 端口上的主机位于 VLAN 5 中,以及端口 fa0/15 之间的链路为中继链路。 + + +图 2.19 -- 测试网络 + +在将端口指派到 VLANs 之前,务必先要全局配置命令 `vlan <vlan#>` 创建出那个 VLAN。而此命令又会将你带入 VLAN 配置模式,在那里又可以为 VLANs 赋予一个描述性的名称。这里有一个示例。 + +``` +Switch1(config)#vlan 5 +Switch1(config-vlan)#name RnD +Switch2(config)vlan 5 +Switch2(config-vlan)#name RnD +``` + +使用命令 `show vlan` 命令来查看交换上存在着哪些 VLANs。其输出与下面的相似。 + +``` +Switch1#show vlan +VLAN Name Status Ports +---- -------- ------- -------------------------------------------- +1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4 Fa0/5, Fa0/6, Fa0/7, Fa0/8 Fa0/9, + Fa0/10, Fa0/11, Fa0/12, Fa0/13 Fa0/14, Fa/15, Fa0/16, Fa0/17, Fa0/18 +... +[Truncated Output] +... +5 RnD active +... +[Truncated Output] +``` + +我们在通过使用接口配置命令 `switchport access vlan [vlan#]`, 将端口 fa0/1 加入到 VLAN 5 中去。 + +``` +Switch1(config)#int fa0/1 +Switch1(config-if)#switchport access vlan 5 +Switch2(config)#int fa0/1 +Switch2(config-if)#switchport access vlan 5 +``` + +在形如 3560 这样的三层交换机上,在将某个端口加入到一个 VLAN 前,你务必要使用命令 `switchport mode access` 将端口手动设置为接入模式。现在我们来看看 `show vlan` 命令的输出。 + +``` +Switch1#show vlan +VLAN Name Status Ports +---- ---- ----- -------------------------------------------- +1 default active Fa0/2, Fa0/3, Fa0/4, Fa0/5, Fa0/6, Fa0/7, + Fa0/8, Fa0/9, Fa0/10, Fa0/11, Fa0/12, Fa0/13, + Fa0/14, Fa/15, Fa0/16, Fa0/17, Fa0/18 +... +[Truncated Output] +... +5 RnD active Fa0/1 +... +[Truncated Output] +``` + +注意 fa0/1 现在被指派给了 VLAN 5。让我们来将两台交换机的 fa0/15 接口配置为中继链路。这里要注意的是 3550 型号交换机端口的默认模式是我要模式(desirable, 3560 型号的是自动模式)。 动态中继协议(Dynamic Trunk Protocol, DTP)会导致两台交换机上的 fa0/15 接口成为 ISL 中继链路。下一节课会学 DTP 的内容,但这里会简要提到 DTP 的一些东西。这种情况可用 `show interface trunk` 命令看到。 + +``` +Switch1#show interface trunk +Port Mode Encapsulation Status Native vlan +Fa0/15 desirable n-isl trunking 1 +``` + +请注意,其模式为我要(desirable), 封装方式是 ISL (“n” 代表 negotiated, 协商出的)。以下输出演示了配置中继为 ISL 方式的做法。 + +``` +Switch1(config)#interface fa0/15 +Switch1(config-if)#switchport trunk encapsulation isl +Switch1(config-if)#switchport mode trunk +Switch2(config)#interface fa0/15 +Switch2(config-if)#switchport trunk encapsulation isl +Switch2(config-if)#switchport mode trunk +``` + +`switchport trunk encapsulation` 命令设置端口的中继协议,而命令 `switchport mode trunk` 命令则是将端口设置为中继工作方式。现在的 `show interface trunk` 命令输出会是下面这样。 + +``` +Switch2#show interface trunk +Port Mode Encapsulation Status Native vlan +Fa0/15 on isl trunking 1 +``` + +取代 N-ISL 的是 ISL。这是因为此次的协议是在接口上配置的,而不是协商出的。 + +> __重要提示:__ 在将交换机某端口设置为中继模式前,要先设置其中继封装方式。而这个规则又不适用于 2960 交换机(当前 CCNA 大纲中用到的型号),2960 交换机只使用 dot1q (802.1Q 的另一种叫法)封装。因此,2960 交换机上的 `switchport trunk encapsulation` 命令不工作。 + +与此类似,你可将交换机端口配置为 802.1Q 而不是 ISL,如下面的输出那样。 + +``` +Switch1(config)#interface fa0/15 +Switch1(config-if)#switchport trunk encapsulation dot1q +Switch1(config-if)#switchport mode trunk +Switch2(config)#interface fa0/15 +Switch2(config-if)#switchport trunk encapsulation dot1q +Switch2(config-if)#switchport mode trunk +``` + +命令 `show interface trunk` 命令的输出又成了这样。 + +``` +Switch2#show interface trunk +Port Mode Encapsulation Status Native vlan +Fa0/15 on 802.1q trunking 1 +``` + +请注意,原生 VLAN 是 1。这正是一个 802.1Q 中继上的默认原生 VLAN,同时可使用 `switchport trunk native vlan <vlan#>` 命令进行修改。__中继链路上的两个接口原生 VLAN 必须匹配__。这条命令是 CCNA 大纲的一部分,__也被作为一中安全手段__。 + +> __重要提示:__ 交换机能存储所有 VLAN 的信息,在重启后也还在。如你打算交换机以空白配置启动,就需要在交换机上运行 `delete vlan.dat` 命令,如下面的输出所示。这只适用于真实交换机,在诸如 Packet Tracer 等交换机模拟器是做不到的。 + +``` +SwitchA#dir flash: +Directory of flash:/ + 1 -rw- 3058048 <no date> c2960-i6q4l2-mz.121-22.EA4.bin + 2 -rw- 676 <no date> vlan.dat +64016384 bytes total (60957660 bytes free) +SwitchA# +SwitchA#delete vlan.dat +Delete filename [vlan.dat]? +Delete flash:/vlan.dat? [confirm] +SwitchA#dir flash: +Directory of flash:/ + 1 -rw- 3058048 <no date> c2960-i6q4l2-mz.121-22.EA4.bin +64016384 bytes total (60958336 bytes free) +SwitchA# +``` + +## 交换故障排除基础,Basic Switching Troubleshooting + +理论上,一旦设备配置好并运行起来后,它就会一直运行下去,不过下面这些情况是常有的事,比如你要在某个不是你亲自配置的网络上做事,或者你会在轮班制工当中支持许多并不熟悉的网络,这些网络又在你不当班的时候被其他人改动过,这些状况都会导致出现多多少少的问题。我建议你在完成一些实验后,在回头看看这部分内容。 + +### 常见的交换机问题,Common Switch Issues + +__无法远程登录到交换机,Can't Telnet to Switch__ + +首先要问的是 Telnet 曾正常运行过吗?如曾正常运行过,现在却不行了,那就是有人对交换机进行了改动、重启过交换机,从而导致配置丢失,或者是网络上的某台设备阻止了 Telnet 流量。 + +``` +Switch#telnet 192.168.1.1 +Trying 192.168.1.1 ...Open +[Connection to 192.168.1.1 closed by foreign host] +``` + +要检查的头一件事就是交换机上的 Telnet 是否已被确实开启(见下面的输出)。网络的 80% 错误都是由于唐突或疏忽造成的,所以请不要信誓旦旦,要亲历亲为,别去相信其他人的言词。 + +一个简单的 `show running-config` 命令就可以将交换机的配置列出。在 `vty` 线路下,你将看到 Telnet 是否有被打开。注意你需要在 vty 线路下有 `login` 或者 `login local` (或者配置了 AAA, 而 AAA 配置超出了 CCNA 考试范围) 命令,以及 `password` 命令。如下面所示。 + +``` +line vty 0 4 +password cisco +login +line vty 5 15 +password cisco +login +``` + +`login local` 命令告诉交换机或路由器去查找配置在其上的用户名和口令,如下面输出的那样。 + +``` +Switch1#sh run +Building configuration... +Current configuration : 1091 bytes! +version 12.1 +hostname Switch1 +username david privilege 1 password 0 football +line vty 0 4 +password cisco +login local +line vty 5 15 +password cisco +login local +... +[Truncated Output] +``` + +__Ping 不通交换机, Can't Ping the Switch__ + +首先要弄清楚那人要 ping 交换机的原因。如你真要 ping 交换机,那么得要给交换机配置上一个 IP 地址;此外,交换机也要知道如何将流量送出(要有默认网关)。 + +__不能经由交换机 ping 通其它设备, Can't Ping through the Switch__ + +如出现经由交换机 ping 不通的情况,那就要确保那两台终端设备位于同一 VLAN 中。每个 VLAN 被看成一个网络,因此各个 VLAN 都要有与其它 VLAN 所不同的地址范围。必须要有一台路由器,以实现一个 VLAN 与其它 VLAN 之间连通。 + +__接口故障,Interface Issues__ + +默认情况下,所有路由器接口都是对流量关闭的,而交换机接口是开启的。如你发现交换机接口处于管理性关闭状态,可以通过执行接口级命令 `no shutdown` 来开启它。 + +``` +Switch1(config)#int FastEthernet0/3 +Switch1(config-if)#no shut +``` + +__二层接口可被设置成三种模式:中继、接入,或动态模式__。__中继模式下,交换机可与其它交换机或服务器连接__。而接入模式用于连接终端设备,比如一台 PC 或笔记本计算机。动态模式令到交换机去探测采用何种设置。 + +在形如 3550 型号交换机平台上,默认设置通是动态我要模式(dynamic desirable),你需要在 [Cisco.com](http://cisco.com) 上去查看你的交换机型号的设置以及发行注记。__CCNA 考试中,你将被要求配置一台 2960 型号交换机__。此型号的交换机在除非你硬性设置接口为中继或接入模式的情况下,会动态选择工作模式。 + +``` +Switch1#show interfaces switchport +Name: Fa0/1 +Switchport: Enabled +Administrative Mode: dynamic auto +``` + +默认设置可以方便地进行更改,如下面的输出这样。 + +``` +Switch1#conf t +Enter configuration commands, one per line. End with CNTL/Z. +Switch1(config)#int FastEthernet0/1 +Switch1(config-if)#switchport mode ? + access Set trunking mode to ACCESS unconditionally + dynamic Set trunking mode to dynamically negotiate access or trunk mode + trunk Set trunking mode to TRUNK unconditionally + +Switch1(config-if)#switchport mode trunk +%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down + +Switch1(config-if)#^Z +Switch1# +%SYS-5-CONFIG_I: Configured from console by console +Switch1#show interfaces switchport +Name: Fa0/1 +Switchport: Enabled +Administrative Mode: trunk +Operational Mode: trunk +``` + +__更多有关接口的故障, More Interface Issues__ + +交换机端口的默认设置是双工自动侦测(auto-detect duplex)以及速率自动侦测(auto-detect speed)。如你将一台 10Mbps 的设备插入到以半双工方式运行的交换机(现在已经很难找到这样的交换机了)上,该端口就会探测到插入的设备并运作起来。然而并不是任何时候都这样的,所以一般建议将交换机端口的双工方式及速率硬性设置,如下面的输出那样。 + +``` +Switch1#show interfaces switchport +Name: Fa0/1 +Switchport: Enabled +Administrative Mode: dynamic auto + +Switch1#show interface FastEthernet0/2 +FastEthernet0/2 is up, line protocol is up (connected) + Hardware is Lance, address is 0030.f252.3402 (bia 0030.f252.3402) +BW 100000 Kbit, DLY 1000 usec, + reliability 255/255, txload 1/255, rxload 1/255 + Encapsulation ARPA, loopback not set + Keepalive set (10 sec) + Full-duplex, 100Mb/s + +Switch1(config)#int fast 0/2 +Switch1(config-if)#duplex ? + auto Enable AUTO duplex configuration + full Force full-duplex operation + half Force half-duplex operation +Switch1(config-if)#speed ? + 10 Force 10Mbps operation + 100 Force 100Mbps operation + auto Enable AUTO speed configuration +``` + +双工模式不匹配的一些迹象(除开错误消息外)有接口上的输入错误以及 CRC 错误,如下面的输出所示。请同时看看 ICND1 章节的第 15 天的一层和二层故障排除部分。 + +``` +Switch#show interface f0/1 +FastEthernet0/1 is down, line protocol is down (disabled) + Hardware is Lance, address is 0030.a388.8401 (bia 0030.a388.8401) +BW 100000 Kbit, DLY 1000 usec, + reliability 255/255, txload 1/255, rxload 1/255 + Encapsulation ARPA, loopback not set + Keepalive set (10 sec) + Half-duplex, 100Mb/s + input flow-control is off, output flow-control is off + ARP type: ARPA, ARP Timeout 04:00:00 + Last input 00:00:08, output 00:00:05, output hang never + Last clearing of “show interface” counters never + Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 + Queueing strategy: fifo + Output queue :0/40 (size/max) + 5 minute input rate 0 bits/sec, 0 packets/sec + 5 minute output rate 0 bits/sec, 0 packets/sec + 956 packets input, 193351 bytes, 0 no buffer + Received 956 broadcasts, 0 runts, 0 giants, 0 throttles + 755 input errors, 739 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort + 0 watchdog, 0 multicast, 0 pause input + 0 input packets with dribble condition detected + 2357 packets output, 263570 bytes, 0 underruns + 0 output errors, 0 collisions, 10 interface resets + 0 babbles, 0 late collision, 0 deferred + 0 lost carrier, 0 no carrier + 0 output buffer failures, 0 output buffers swapped out +``` + +__硬件故障,Hardware Issues__ + +和其它电子设备一样,交换机端口也会出现失效或不能全时正常运行现象,而时而正常时而故障的情况是更难于处理的。工程师经常通过将一台已知正常的设备插入到交换机的另一端口,来测试故障的接口。你也可以跳转(bounce)某端口,就是在该端口是先用 `shutdown` 命令关闭,接着用 `no shutdown` 命令开启。更换网线也是一个常见的处理步骤。图 2.20 给出了一些其它的交换机故障和处理方法。 + +请查阅你的交换机的文档,因为根据系统和端口 LEDs 的不同,每个端口会有闪烁的或是常亮的红色、琥珀色或者绿色的指示灯,表示功能正常或是端口、系统故障。 + + +图 2.20 -- 常见交换机故障及解决方法 + +### VLAN 分配故障,VLAN Assignment Issues__ + +小环境下的网络管理起来相对容易,因为只需部署少数特性,就能满足业务需求。但在企业环境中,你不会去使小型工作组交换机或是家庭办公设备的(small workgroup switches and SOHO device)。相反,你会用到高端设备,它们提供提供了诸多高级/复杂功能,具有流量优化能力。 + +此种环境下一种可能会配置到的特别特性,就是采用 VLANs 技术将不同网络区域进行逻辑隔离。在你遇到与某个 VLAN 有关的配置问题时,故障就会出现,这种故障可能会是难于处理的。一种处理方法就是去分析交换机的整个配置,并尝试找到问题所在。 + +VLAN 相关故障,通常是经由观察网络主机之间连通性(比如某用户不能 ping 通服务器)缺失发现的,就算一层运行无问题。__有关 VLAN 故障的一个重要特征就是不会对网络的性能造成影响__。如你配错了一个 VLAN,连接就直接不通,尤其是在考虑 VLANs 通常是用作隔离 IP 子网的情况下,只有处于同一 VLAN 的设备才能各自通信。 + +在排除 VLAN 故障时,首先要做的是查看设计阶段完成的网络文档和逻辑图表(网络拓扑图),如此你才能得知各个 VLAN 跨越的区域,以及相应设备和各交换机的端口情况。接着就要去检查每台交换机的配置,并通过将其与存档方案进行比较,以尝试找出问题。 + +你还要对 IP 地址分配方案进行查验。如你采用的是设备静态 IP 地址分配方式,你可能打算回去检查那台设备,确保其有正确的 IP 地址和子网掩码。如在 IP 分址方案上存在问题,像是将设备配置到错误的网络上,或是子网掩码错误/默认网关错误的话,即使交换机的 VLAN 配置无误,你也会遇到连通性问题。 + +还要确保交换机的中继配置正确。当存在多台交换机时,通常会有交换机间的上行链路,这些上行链路承载了网络上的 VLANs。这些交换机间链路常被配置为中继链路,以实现穿越多个 VLANs 的通信。如某 VLAN 中的数据需要从一台交换机发往另一交换机,那么它就必须是该中继链路组的成员,因此,你还要确保中继链路两端交换机配置正确。 + +最后,如你要将某设备迁往另一个 VLAN,你务必要同时更改交换机及客户端设备,因为在迁移后,客户端设备会有一个不同子网的不同 IP 地址。 + +如你有遵循这些 VLAN 故障排除方法,在你首次插入设备及 VLAN 间迁移时,肯定能得到预期的连通性。 + +## 第二天的问题 + +1. Switches contain a memory chip known as an `_______`, which builds a table listing which device is plugged into which port. +2. The `_______ _______`-`_______`-`_______` command displays a list of which MAC addresses are connected to which ports. +3. Which two commands add an IP address to the VLAN? +4. Which commands will enable Telnet and add a password to the switch Telnet lines? +5. How do you permit only SSH traffic into your Telnet lines? +6. What is the most likely cause of Telnet to another switch not working? +7. Switches remember all VLAN info, even when reloaded. True or False? +8. A switch interface can be in which of three modes? +9. How do you set a switch to be in a specific mode? +10. Which commands will change the switch duplex mode and speed? + + +## 第二天问题答案 + +1. ASIC. +2. `show mac-address-table` +3. The `interface vlan x` command and the `ip address x.x.x.x`command. +4. +``` +Switch1(config)#line vty 0 15 +Switch1(config-line)#password cisco +Switch1(config-line)#login +``` +5. Use the `Switch1(config-line)#transport input ssh` command. +6. The authentication method is not defined on another switch. +7. True. +8. Trunk, access, or dynamic mode. +9. Apply the `switchport mode <mode>` command in Interface Configuration mode. +10. The `duplex` and `speed` commands. + + +## 第二天实验 + +### 交换机概念实验 + +请登入到一台思科交换机,并输入那些本单元课程中解释到的命令。包括: + +* 在不同交换机端口上配置不同的端口速率/自动协商速率 +* 使用 `show running-config` 和 `show interface` 命令,验证这些端口参数 +* 执行一下 `show version` 命令,来查看硬件信息以及 IOS 版本 +* 查看交换机 MAC 地址表 +* 给 VTY 线路配置一个口令 +* 定义出一些 VLANs 并为其指派名称 +* 将一个 VLAN 指派到一个配置为接入模式的端口上 +* 将某个端口配置为中继端口(ISL 以及 802.1Q),并将一些 VLANs 指派到该中继链路 +* 使用 `show vlan` 命令验证 VLAN 配置 +* 使用 `show interface switchport` 命令和 `show interface trunk` 命令,验证接口中继工作状态及 VLAN 配置 +* 删除 `vlan.dat` 文件 + + + + + + + + + + + + + + + + + + + + + diff --git a/30.png b/30.png new file mode 100644 index 0000000..67b800b Binary files /dev/null and b/30.png differ diff --git a/31.png b/31.png new file mode 100644 index 0000000..2fdb333 Binary files /dev/null and b/31.png differ diff --git a/38.png b/38.png new file mode 100644 index 0000000..f48af9e Binary files /dev/null and b/38.png differ diff --git a/39.png b/39.png new file mode 100644 index 0000000..bb2af2f Binary files /dev/null and b/39.png differ diff --git a/3rd_day.md b/3rd_day.md new file mode 100644 index 0000000..7b407c0 --- /dev/null +++ b/3rd_day.md @@ -0,0 +1,790 @@ +# 中继、DTP 及 VLAN 间路由 + + +## 第三天的任务 + +* 阅读今天的课文 +* 回顾昨天的课程 +* 完成今天的实验 +* 阅读 ICND1 记诵指南 + + +在最小规模的那些办公室里,你才会遇到仅使用一台交换机的情况,但是网络基础设施通常是由多台交换机构成的。多台交换机带来了其配置上的挑战,要求你对中继及其有关的问题有深入理解。思科将多台交换机的安装和故障排除,视为一个 CCNA 级别的基础主题。 + + +今天你将学到。 + +* 中继工作方式,trunking +* 动态中继协议(Dynamic Trunking Protocol, DTP) +* VLAN 间路由 + +本单元覆盖 ICND1 考试大纲的以下要求。 + +* 在思科交换机上配置并验证中继 +* DTP +* 自动协商 +* VLAN 间路由的配置和验证(单臂路由,router-on-a-stick) + * 子接口,subinterfaces + * 上行路由,upstream routing + * 封装,encapsulation +* 配置交换机虚拟接口,configure SVI(Switch Virtual Interface) Interfaces + + +## 配置并验中继链路 + +中继是一个可以承载多种流量类型,每种流量类型都用一个独特的 VLAN ID 做了标记,的交换机端口。在数据经由中继端口,或者说中继链路得以交换时,就被那个外出交换机中继端口(the egress switch trunk port)打上了标签(或者叫进行了着色), 这样做了过后,接收交换机就能够分辨出数据是属于哪个特定的 VLAN 了。在接收交换机的进入端口(the receiving switch ingress port)上, 标签会被移除,然后数据就被转发给相应的目的设备。 + +在思科 IOS Catalyst 交换机上部署 VLAN 中继的头一项配置任务,就是把需要的接口配置为一个二层交换端口。这是通过执行 `switchport` 接口配置命令完成的。 + +> **注意:** 该命令只在兼容三层或多层交换机上需要。在诸如 Catalyst 2960 系列这样的二层交换机上并不适用。那些支持命令 `ip routing` 的交换机才被认为是兼容三层的交换机。 + +接着就是要中继链路所要使用的封装协议。这是通过执行 `switchport trunk encapsulation [option]` 命令完成的。此命令可用的选项有下面这些。 + +``` +Switch(config)#interface FastEthernet1/1 +Switch (config-if)#switchport trunk encapsulation ? +dot1q - Interface uses only 802.1q trunking encapsulation when trunking +isl - Interface uses only ISL trunking encapsulation when trunking +negotiate - Device will negotiate trunking encapsulation with peer on interface +``` + +关键字 `[dot1q]` 强制该交换机端口使用 IEEE 802.1Q 封装方式。关键字 `[isl]` 强制该交换机端口使用思科 ISL 封装方式。 +而 `[negotiate]` 关键字则指明说在动态交换机间链路协议(Dynamic Inter-Switch Link Protocol, DISL)及动态中继协议(Dynamic Trunking Protocol, DTP)无法就封装格式达成一致时,ISL 作为备选格式。DISL 简化了两台互联的快速以太网设备间 ISL 中继链路的建立。在 DISL 协议下,只需链路的一端需要配置为中继端口,因此而将 VLAN 中继配置过程大大简化。 + + +DTP 是一个***思科专有的***点对点协议(point-to-protocol), 它在两台交换机间协商建立起某种常见中继模式。DTP 会在稍后专门讲到。下面的输出演示了如何将某交换机端口配置为在建立起一条中继链路是采用 IEEE 802.1Q 封装方式。 + +``` +Switch (config)#interface FastEthernet1/1 +Switch (config-if)#switchport +Switch (config-if)#switchport trunk encapsulation dot1q +``` + +此配置可通过命令 `show interfaces [name] switchport` 进行验证,如下列输出所示。 + +<pre> +Switch#show interfaces FastEthernet1/1 switchport +Name: Fa0/2 +Switchport: Enabled +Administrative Mode: dynamic desirable +Operational Mode: trunk +<b>Administrative Trunking Encapsulation: dot1q</b> +<b>Operational Trunking Encapsulation: dot1q</b> +Negotiation of Trunking: On +Access Mode VLAN: 1 (default) +Trunking Native Mode VLAN: 1 (default) +... +[Truncated Output] +</pre> + +中继端口配置的第三步,就是部署配置,以确保该端口已被指定为中继端口。可以通过两种方式完成。 + +* 手动(静态)地完成中继配置 +* 使用动态中继协议(Dynamic Trunking Protocol, DTP) + + +### 手动(静态)中继配置 + +手动配置一个中继,是通过在所需要的交换机上,执行接口配置命令 `switchport mode trunk` 完成的。此命令将该端口强制变成永久(静态)中继模式。下面的配置输出演示了如何将一个端口静态地配为中继端口。 + +``` +VTP-Server(config)#interface FastEthernet0/1 +VTP-Server(config-if)#switchport +VTP-Server(config-if)#switchport trunk encapsulation dot1q +VTP-Server(config-if)#switchport mode trunk +VTP-Server(config-if)#exit +VTP-Server(config)# +``` + +如你使用的是一台低端交换机,就大可以忽略 `switchport` 命令,上面的输出是来自一台 Catalyst 6000 系列交换机。此配置可通过 `show interfaces [name] switchport` 命令予以验,如下面的输出所示。 + +``` +VTP-Server#show interfaces FastEthernet0/1 switchport +Name: Fa0/1 +Switchport: Enabled +Administrative Mode: trunk +Operational Mode: trunk +Administrative Trunking Encapsulation: dot1q +Operational Trunking Encapsulation: dot1q +Negotiation of Trunking: On +Access Mode VLAN: 1 (default) +Trunking Native Mode VLAN: 1 (default) +... +[Truncated Output] +``` + +尽管中继链路的静态配置强制交换机建立一条中继,动态 ISL 和动态中继协议(DTP)数据包仍能从该接口发出。这样做了后,一条静态配置的中继链路就可以与相邻的使用了 DTP 的交换机,建立起中继关系,接着的小节将会讲到。经由 `show interfaces [name] switchport` 命令的输出,便可验证这点。如下面的输出所示。 + +<pre> +VTP-Server#show interfaces FastEthernet0/1 switchport +Name: Fa0/1 +Switchport: Enabled +Administrative Mode: trunk +Operational Mode: trunkAdministrative Trunking Encapsulation: dot1q +Operational Trunking Encapsulation: dot1q +<b>Negotiation of Trunking: On</b> +Access Mode VLAN: 1 (default) +Trunking Native Mode VLAN: 1 (default) +... +[Truncated Output] +</pre> + + +在上面的输出中,粗体文字表明尽管中继链路是静态配置的,端口仍然在发出 DTP 和 DISL 数据包。在一些场合,此特性被看成是不受欢迎的。因此,通过执行接口配置命令 `switchport nonegotiate`,在静态配置作为中继链路的端口上关闭 DISL 及 DTP 数据包发送,被认为是一种良好实践,具体操作如以下的输出。 + +``` +VTP-Server(config)#interface FastEthernet0/1 +VTP-Server(config-if)#switchport +VTP-Server(config-if)#switchport trunk encapsulation dot1q +VTP-Server(config-if)#switchport mode trunk +VTP-Server(config-if)#switchport nonegotiate +VTP-Server(config-if)#exit +VTP-Server(config)# +``` + +再一次,`show interfaces [name] switchport` 命令可被用作验证配置,像下面这样。 + +<pre> +VTP-Server#<b>show interfaces FastEthernet0/1 switchport</b> +Name: Fa0/1 +Switchport: Enabled +Administrative Mode: trunk +Operational Mode: trunk +Administrative Trunking Encapsulation: dot1q +Operational Trunking Encapsulation: dot1q +<b>Negotiation of Trunking: Off</b> +Access Mode VLAN: 1 (default) +Trunking Native Mode VLAN: 1 (default) +... +[Truncated Output] +</pre> + +### 动态中继协议,Dynamic Trunking Protocol, DTP + +DTP 是一个在两台交换机之间协商出一种常见中继模式的,思科专有的点对点协议(a Cisco proprietary point-to-protocol)。这种动态协商不止于何种中继模式,还包括中继的封装方式。根据其平台的不同,两种交换机端口所能使用的 DTP 模式如下。 + +* 动态我要模式,dynamic desirable +* 动态自动模式,dynamic auto + +在两台相交换机上使用 DTP 时,如交换机端口默认为动态我要状态,端口就会积极尝试变为中继端口。而如果交换机端口默认为动态自动状态,端口仅会在相邻交换机被设置为动态我要模式时,才反转为中继端口。 + +图 3.1 演示所有 DTP 模式组合,在两台思科 Catalyst 交换机间,这些组合有的能建立起中继链路,也有的不能建立(在这里的组合都能建立中继链路;请查看图 3.2 之后的说明)。 + + +图 3.1 -- DTP 模式组合 + +图 3.2 示出了将会在两台相邻交换机间成功建立中继链路的有效组合 -- 一端是 DTP 另一端静态配置为中继端口。 + + +图 3.2 -- DTP 模式组合,第二部分 + + +> __注意:__ 如果两台交换机都设置为动态自动模式,它们是无法建立起中继链路的,知道这一点很重要。这因为,不同于动态我要模式,动态自动模式是一种消极模式,它等待另一端发起中继建立。因此,在两个消极端口连接时,既不会发起中继建立,同时中继链路也绝不会形成。与此类,一个静态配置的交换机端口同时配置了 `switchport nonegotiate` 命令的话,它绝不会与相邻的使用 DTP 的交换机形成中继,因为这会阻止 DISL 及 DTP 数据包从那个端口发出。 + +在交换的局域网中应用 DTP 时,`show dtp [interface <name>]` 命令就可用来显示交换机的全局 DTP 信息以及特定接口的 DTP 信息。下面的输出给出了 `show dtp` 命令打印出的信息。 + +``` +VTP-Server#show dtp +Global DTP information + Sending DTP Hello packets every 30 seconds + Dynamic Trunk timeout is 300 seconds + 4 interfaces using DTP +``` + +从上面的输出可以看出,交换机每 30 秒就发出一个 DTP 数据包。而 DTP 超时被设置为 300 秒(5 分钟),当前有 4 个接口正使用着 DTP。命令 `show dtp intferface [name]` 会打印出特定接口的 DTP 信息,这些信息中包括了接口的类型(中继或接入)、端口当前的 DTP 配置情况、中继的封装方式,以及 DTP 数据包统计信息,如下面的输出所示。 + +``` +VTP-Server#show dtp interface FastEthernet0/1 +DTP information for FastEthernet0/1: + TOS/TAS/TNS: TRUNK/ON/TRUNK + TOT/TAT/TNT: 802.1Q/802.1Q/802.1Q + Neighbor address 1: 000000000000 + Neighbor address 2: 000000000000 + Hello timer expiration (sec/state): 7/RUNNING + Access timer expiration (sec/state): never/STOPPED + Negotiation timer expiration (sec/state): never/STOPPED + Multidrop timer expiration (sec/state): never/STOPPED + FSM state: S6:TRUNK + # times multi & trunk 0 + Enabled: yes + In STP: no + Statistics + ---------- + 0 packets received (0 good) + 0 packets dropped + 0 nonegotiate, 0 bad version, 0 domain mismatches, 0 bad TLVs, 0 other + 764 packets output (764 good) + 764 native, 0 software encap isl, 0 isl hardware native + 0 output errors + 0 trunk timeouts + 2 link ups, last link up on Mon Mar 01 1993, 00:00:22 + 1 link downs, last link down on Mon Mar 01 1993, 00:00:20 +``` + +### IEEE 802.1Q 原生 VLAN + +昨天的课程中,你学到了 802.1Q, 或是 VLAN 标记法,在除了原生 VLAN 的帧外的所有帧中,插入一个标签。IEEE 定义了原生 VLAN, 以提供给不能明白 VLAN 标签的,原有的 802.3 端口以连通性。 + +默认情况下,802.1Q 中继将 VLAN 1 作为原生 VLAN。执行命令 `show interfaces [name] switchport` 或命令 `show interfaces trunk`,就可查看到默认原生 VLAN 是哪一个,如下面的输出所示。 + +<pre> +VTP-Server#show interfaces FastEthernet0/1 switchport +Name: Fa0/1 +Switchport: EnabledAdministrative Mode: trunk +Operational Mode: trunk +Administrative Trunking Encapsulation: dot1q +Operational Trunking Encapsulation: dot1q +Negotiation of Trunking: On +Access Mode VLAN: 1 (default) +<b>Trunking Native Mode VLAN: 1 (default)</b> +Voice VLAN: none +... +[Truncated Output] +</pre> + +交换机使用 VLAN 1 来承载一些特定的协议流量,比如思科发现协议(Cisco Discovery Protocol, CDP)、VLAN 中继协议(VLAN Trunking Protocol, VTP)、端口聚合协议(Port Aggregation Protocol, PAgP), 以及动态中继协议(Dynamic Trunking Protocol, DTP) 等的协议信息。CDP 和 PAgP 将在今天的课程后面部分详细讨论。尽管默认原生 VLAN 总是 VLAN 1, 它是可以手动修改为任何不在__保留 VLANs__ 中的任何有效 VLAN 编号的。 + +但是,__中继链路两端上的原生 VLAN 必须一致__,记住这点是很重要。如出现了原生 VLAN 不匹配,生成树协议(Spanning Tree Protocol, STP)就把该端口置为端口 VLAN ID (port VLAN ID, PVID) 不一致状态,且不会转发该链路。此外,CDPv2 也会在交换机间传送原生 VLAN 信息,而在出现原生 VLAN 不匹配后,将会在交换机控制台上打印错误消息。通过对所需的 802.1Q 中继链路,执行接口配置命令 `switchport trunk native vlan [number]` 可以修改其默认原生 VLAN。如下面的输出所示。 + +``` +VTP-Server(config)#interface FastEthernet0/1 +VTP-Server(config-if)#switchport trunk native vlan ? +<1-4094> VLAN ID of the native VLAN when this port is in trunking mode +``` + + +### VLAN 间路由,Inter-VLAN Routing + +默认情况下,尽管 VLANs 能够跨越整个的二层交换网络,一个 VLAN 中的主机却是不能直接和其它 VLAN 中的主机直接通信的。为实现这个目的,必须对不同 VLANs 间的流量进行路由。这就叫做 VLAN 间路由。交换局域网(switched LANs) 中的 VLAN 间路由有三种实现方式,下面有分别列出,这三种方式及其各自的优势和劣势,接下来的部分会详细介绍。 + +* 采用物理的路由器接口的 VLAN 间路由, Inter-VLAN routing using physical router interfaces +* 采用路由器子接口的 VLAN 间路由, Inter-VLAN routing using router subinterfaces +* 采用交换机虚拟接口的 VLAN 间路由, Inter-VLAN routing using switched virtual interfaces + + +__采用物理的路由器接口的 VLAN 间路由__ + +为实现 VLAN 间路由通信的第一种方式,需要用到带有多个接口的路由器,来作为每个单独配置 VLAN 的网关。此时路由器就能够使用这些物理的 LAN 接口,将接收自一个 VLAN 的数据包,路由到其它 VLAN 上。此种方式如图 3.3 所示。 + + +图 3.3 -- 采用多个物理路由器接口的 VLAN 间路由 + +图 3.3 演示了用到两个不同 VLANs 的单一 LAN,这两个 VLANs 都有分配给各自的 IP 子网。尽管图中画出的网络主机都是连接在同一物理交换机上,但因为它们处于不同的 VLANs 中, VLAN 10 中的主机与 VLAN 20 中的主机之间的数据包必须要经过路由才行,而在同样 VLAN 中的数据包只需要简单的交换即可。 + +这种方案的最主要优势在于,它是简单的,且易于部署。而最主要的劣势在于,它不具有可扩展性。比如说,,当交换机上配置了有 5 个、10 个,甚至 20 个额外的 VLANs 时,路由器上就要有相应数量的物理接口才行。在大多数情况下,这在技术上是不可行的。 + +在采用多物理路由器接口时,各需要的 VLAN 中到路由器的交换机链路,被配置为接入链路。然后路由器上的物理接口都配置上相应的 IP 地址,而 VLAN 上的网络主机,要么以静态方式配置上相应 VLAN 的 IP 地址,将该路由器物理接口作为默认网关,要么通过 DHCP 完成配置。图 3.3 中交换机的配置,在下面的输出中有演示。 + +``` +VTP-Server-1(config)#vlan 10 +VTP-Server-1(config-vlan)#name Example-VLAN-10 +VTP-Server-1(config-vlan)#exit +VTP-Server-1(config)#vlan 20 +VTP-Server-1(config-vlan)#name Example-VLAN-20 +VTP-Server-1(config-vlan)#exit +VTP-Server-1(config)#interface range FastEthernet0/1 – 2, 23 +VTP-Server-1(config-if-range)#switchport +VTP-Server-1(config-if-range)#switchport access vlan 10 +VTP-Server-1(config-if-range)#switchport mode access +VTP-Server-1(config-if-range)#exit +VTP-Server-1(config)#interface range FastEthernet0/3 – 4, 24 +VTP-Server-1(config-if-range)#switchport +VTP-Server-1(config-if-range)#switchport access vlan 20 +VTP-Server-1(config-if-range)#switchport mode access +VTP-Server-1(config-if-range)#exit +``` + +2960 交换机上无需 `switchport` 命令,因为其接口已经运行于二层模式。 + +下面的输出又演示了图 3.3 中的路由器的配置。 + +``` +R1(config)#interface FastEthernet0/0 +R1(config-if)#ip add 10.10.10.1 255.255.255.0 +R1(config-if)#exit +R1(config)#interface FastEthernet0/1 +R1(config-if)#ip add 10.20.20.1 255.255.255.0 +R1(config-if)#exit +``` + +__使用路由器子接口的 VLAN 间路由__ + +采用路由器子接口实现 VLAN 间路由的方法,解决了使用多路由器物理接口方法所可能存在的伸缩性问题。有了路由器子接口,就只需要路由器有一个物理接口就行,接下来的子接口是经由在那个物理接口上的配置获得。图 3.4 演示了这种方法。 + + +图 3.4 -- 采用路由器子接口的 VLAN 间路由 + +图 3.4 描绘了图 3.3 中同样的 LAN。但在图 3.4 中,仅使用了一个物理路由器接口。而为了实现一种 VLAN 间路由解决方案,使用 `interface [name].[subinterface number]` 全局配置命令,在该主要路由器接口上配置出了子接口。而通过命令 `encapsulation [isl|dot1q] [vlan]` 子接口配置命令,又将各子接口与某个特定 VLAN 关联了起来。最后一步就是给子接口配置上需要的 IP 地址。 + +在交换机上,那条连接路由器的单一链路,必须要配置为中继链路,这是因为__路由器不支持 DTP__。假如中继配置成 802.1Q 中继,那么在原生 VLAN 不是默认原生 VLAN 时,此中继的原生 VLAN 一定要定义。而该__原生 VLAN 也要在相应的路由器子接口上予以配置,配置命令为 `encapsulation dot1q [vlan] native` 子接口配置命令__。下面的输出演示了使用单一物理接口的 VLAN 间路由配置(又称作 “单臂路由,router-on-a-stick”)。图 3.4 中绘出的两个 VLANs 在下面的输出中也有显示,同时还有一个额外的 VLAN 用于管理用;该管理 VLAN 将被配置为原生 VLAN。 + +``` +VTP-Server-1(config)#vlan 10 +VTP-Server-1(config-vlan)#name Example-VLAN-10 +VTP-Server-1(config-vlan)#exit +VTP-Server-1(config)#vlan 20 +VTP-Server-1(config-vlan)#name Example-VLAN-20 +VTP-Server-1(config-vlan)#exit +VTP-Server-1(config)#vlan 30 +VTP-Server-1(config-vlan)#name Management-VLAN +VTP-Server-1(config-vlan)#exit +VTP-Server-1(config)#interface range FastEthernet0/1 – 2 +VTP-Server-1(config-if-range)#switchport +VTP-Server-1(config-if-range)#switchport access vlan 10 +VTP-Server-1(config-if-range)#switchport mode access +VTP-Server-1(config-if-range)#exit +VTP-Server-1(config)#interface range FastEthernet0/3 – 4 +VTP-Server-1(config-if-range)#switchport +VTP-Server-1(config-if-range)#switchport access vlan 20 +VTP-Server-1(config-if-range)#switchport mode access +VTP-Server-1(config-if-range)#exit +VTP-Server-1(config)#interface FastEthernet0/24 +VTP-Server-1(config-if)#switchport +VTP-Server-1(config-if)#switchport trunk encapsulation dot1q +VTP-Server-1(config-if)#switchport mode trunk +VTP-Server-1(config-if)#switchport trunk native vlan 30 +VTP-Server-1(config-if)#exit +VTP-Server-1(config)#interface vlan 30 +VTP-Server-1(config-if)#description ‘This is the Management Subnet’ +VTP-Server-1(config-if)#ip address 10.30.30.2 255.255.255.0 +VTP-Server-1(config-if)#no shutdown +VTP-Server-1(config-if)#exit +VTP-Server-1(config)#ip default-gateway 10.30.30.1 +``` + +图 3.4 中的路由器之配置如下面的输出所示。 + + +``` +R1(config)#interface FastEthernet0/0 +R1(config-if)#no ip address +R1(config-if)#exit +R1(config)#interface FastEthernet0/0.10 +R1(config-subitf)#description ‘Subinterface For VLAN 10’ +R1(config-subif)#encapsulation dot1Q 10 +R1(config-subif)#ip add 10.10.10.1 255.255.255.0 +R1(config-subif)#exit +R1(config)#interface FastEthernet0/0.20 +R1(config-subitf)#description ‘Subinterface For VLAN 20’ +R1(config-subif)#encapsulation dot1Q 20 +R1(config-subif)#ip add 10.20.20.1 255.255.255.0 +R1(config-subif)#exit +R1(config)#interface FastEthernet0/0.30 +R1(config-subitf)#description ‘Subinterface For Management’ +R1(config-subif)#encapsulation dot1Q 30 native +R1(config-subif)#ip add 10.30.30.1 255.255.255.0 +R1(config-subif)#exit +``` + +此方案的主要优在于,路由器上仅需一个物理接口。主要的劣势在于,该物理端口的带宽,是为所配置的多个子接口所公用的。因此,如果存在很多 VLAN 间流量时,路由器就很快会成为网络的性能瓶颈。 + +__采用交换机虚拟接口的 VLAN 间路由__ + +__多层交换机支持在物理接口上配置 IP 地址__。但要先用__接口配置命令 `no switchport`__ 对这些接口进行配置,以允许管理员在其上配置 IP 地址。除开使用物理接口外,多层交换机还支持交换机虚拟接口(Switch Virtual Interfaces, SVIs +)技术。 + +SVIs 是一系列代表了 VLAN 的逻辑接口。尽管某个交换机虚拟接口代表了一个 VLAN,它也不是在某个 VLAN 在交换机上配置出来时,就自动配置出来的;它必须要管理员通过执行 __`interface vlan [number]` 全局配置命令__,手动加以配置。而那些诸如 IP 分址等的三层配置参数,也要与在物理接口上一样,在交换机虚拟接口予以配置。 + +以下输出演示了在单一交换机上实现 VLAN 间路由,做出的交换机虚拟接口配置。此输出引用了本小节前面的配置输出所用到的 VLANs。 + +``` +VTP-Server-1(config)#vlan 10 +VTP-Server-1(config-vlan)#name Example-VLAN-10 +VTP-Server-1(config-vlan)#exit +VTP-Server-1(config)#vlan 20 +VTP-Server-1(config-vlan)#name Example-VLAN-20 +VTP-Server-1(config-vlan)#exit +VTP-Server-1(config)#interface range FastEthernet0/1 – 2 +VTP-Server-1(config-if-range)#switchport +VTP-Server-1(config-if-range)#switchport mode access +VTP-Server-1(config-if-range)#switchport access vlan 10 +VTP-Server-1(config-if-range)#exit +VTP-Server-1(config)#interface range FastEthernet0/3 – 4 +VTP-Server-1(config-if-range)#switchport +VTP-Server-1(config-if-range)#switchport mode access +VTP-Server-1(config-if-range)#switchport access vlan 20 +VTP-Server-1(config-if-range)#exit +VTP-Server-1(config)#interface vlan 10 +VTP-Server-1(config-if)#description “SVI for VLAN 10” +VTP-Server-1(config-if)#ip address 10.10.10.1 255.255.255.0 +VTP-Server-1(config-if)#no shutdown +VTP-Server-1(config-if)#exit +VTP-Server-1(config)#interface vlan 20 +VTP-Server-1(config-if)#description ‘SVI for VLAN 10’ +VTP-Server-1(config-if)#ip address 10.20.20.1 255.255.255.0 +VTP-Server-1(config-if)#no shutdown +VTP-Server-1(config-if)#exit +``` + +__在用到多层交换机时,交换机虚拟端口是推荐的配置方法,和实现 VLAN 间路由的首选方案__。 + +你可通过使用 `show interface vlan x` 命令,来验证某个交换机虚拟接口是配置恰当的(IP 分址等)。下面的输出与 `show interface x` 命令等同。 + +``` +Switch#show interfaces vlan 100 +Vlan100 is up, line protocol is down + Hardware is EtherSVI, address is c200.06c8.0000 (bia c200.06c8.0000) + Internet address is 10.10.10.1/24 + MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec, + reliability 255/255, txload 1/255, rxload 1/255 + Encapsulation ARPA, loopback not set + ARP type: ARPA, ARP Timeout 04:00:00 +``` + +如你希望使用一台 2960 交换机来路由 IP 数据包,那么就需要对配置进行修改,然后进行重启。这是因为 2960 和更新型号的一些交换机进行了性能调优,实现一种明确的交换机资源分配方式。该资源管理方式叫做交换机数据库管理(Switch Database Managent, SDM)模板。你可以在以下几种 SDM 模板中进行选择。 + +* 默认(default) -- 各项功能的平衡 +* IPv4/IPv4 双协议支持(dual IPv4/IPv6) -- 用于双栈环境(dual-stack environments) +* Lanbase-routing -- 支持各种单播路由(Unicast routes) +* 服务质量(Quality of Service, QoS) -- 提供对各种服务质量特性的支持 + +下面是在我的 3750 交换机上的输出。这些输出与 2960 上的选项不完全一致,但你明白了这个意思。同时,请记住,__交换机型号及 IOS 对 SDM 配置选项有影响,因此,你要查看你的型号的配置手册__。 + +``` +Switch(config)#sdm prefer ? + access Access bias + default Default bias + dual-ipv4-and-ipv6 Support both IPv4 and IPv6 + ipe IPe bias + lanbase-routing Unicast bias + vlan VLAN bias +``` + +在你期望在 2960 交换机上配置 VLAN 间路由时,就需要开启 Lanbase-routing SDM 选项。同时在此变更生效前,需要重启交换机。下面是 `show sdm prefer` 命令的输出,该输出告诉你当前的 SDM 配置以及资源分配情况。 + +``` +Switch#show sdm prefer +The current template is “desktop default” template. +The selected template optimizes the resources in +the switch to support this level of features for +8 routed interfaces and 1024 VLANs. + number of unicast mac addresses: 6K + number of IPv4 IGMP groups + multicast routes: 1K + number of IPv4 unicast routes: 8K + number of directly-connected IPv4 hosts: 6K + number of indirect IPv4 routes: 2K + number of IPv4 policy based routing aces: 0 + number of IPv4/MAC qos aces: 0.5K + number of IPv4/MAC security aces: 1K +Switch# +``` + +## 虚拟局域网中继协议,VTP + +虚拟局域网中继协议(VLAN Trunking Protocol, VTP)是一个思科专有的二层消息协议(a Cisco proprietary Layer 2 messaging protocol), 用于管理同一个 VTP 域中交换机上 VLANs 增加、删除及重命名。VTP 允许 VLAN 信息在交换网络(the switched network)上宣告/扩散(propagate),这将减轻交换网络中的管理开销, 同时使得众多的交换机能够交换(exchange)并维护一致的 VLAN 信息。此概念在图 3.5 中进行了演示。 + + +图 3.5 -- VTP 更新 + +采用 VTP 能够得到以下好处。 + +* VLANs 信息的精确监控和汇报 +* 整个网络上 VLANs 的一致性 +* 易于添加和移除 VLANs + + +### 配置 VTP, configuring VTP + +要让交换机进行 VLAN 信息交换,这些交换机就务必要配置在同一个 VTP 域中,如下面的输出这样。 + +<pre> +Switch(config)#vtp mode server ←this is on by default +Switch(config)#vtp domain in60days +Changing VTP domain name from NULL to in60days +Switch#show vtp status +VTP Version : 2 +Configuration Revision : 0 +Maximum VLANs Supported Locally : 255 +Number of Existing VLANs : 5 +VTP Operating Mode : Server +VTP Domain Name : <b>in60days</b> +</pre> + +如要安全的传输 VTP 更新数据,可以为其加上一个口令,但要求 VTP 域中的每台交换机的口令都要匹配。 + +``` +Switch(config)#vtp password Cisco321 +Setting device VLAN database password to Cisco321 +``` + +### VTP 模式, VTP Modes + +VTP 以下列三种模式允许。 + +* 服务器模式(默认模式), server(default) +* 客户端模式, client +* 透明模式, transparent + +上面的输出中,你可以看到配置中有个服务器模式。 + +__服务器模式, Server Mode__ + +在服务器模式时,该交换机被授权去__建立、修改及删除整个 VTP 域上的 VLAN 信息__。你对服务器所做的任何修改,都会扩散到整个域中。而 __VLAN 配置是保存在位于闪存中的 VLAN 数据库文件 “vlan.dat” 中的__。 + +__客户端模式,Client Mode__ + +处于客户端模式下的交换机,将会接收 VTP 信息,并根据收到的通告信息做出配置上的改变,而不能增加、移除或是改变它们的 VLAN 信息了。客户端交换机也会在它们的中继端口上,发出接收到的 VTP 数据包。记住,你是不能将客户端交换机的某个端口,添加到 VTP 服务器上不存在的 VLAN 中去的。__VLAN 配置也是保存在位于闪存中的 VLAN 数据库文件 “vlan.dat” 中的__。 + +__透明模式,Transparent Mode__ + +透明模式下的交换机,将在它们的中继端口上转发接收到的 VTP 信息,却不会应用通告的更新。一台 VTP 透明模式交换机(a VTP Transparent-mode switch) 是可以创建、修改并移除 VLANs 的, 但其 VLAN 配置变动不会通告给其它交换机。__VTP 透明模式仍然需要域信息配置项__。当处于 VTP 服务器与客户端之间的某台交换机,需要有不同的 VLAN 数据库时,它就需要是一台 VTP 透明交换机。__而要配置上扩展的 VLAN 编号范围(the extended VLAN range)时,也要用到透明模式__。 + + +### VTP 修剪, VTP Pruning + +时常会出现这样的情形,比如说,在网络的一边有 VLANs 20 到 50, 另一边有 VLANs 60 到 80。而一边的那些交换机上的 VLAN 信息却又无需传送到另一边的那些交换机上。为此,交换机能够将它们的 VLAN 信息进行修剪,因此而减少广播流量,如图 3.6 所示。 + + +图 3.6 -- 运行中的 VTP 修剪 + +下面这行配置将 VTP 修剪功能加入到你的交换机。 + +`Switch(config)#vtp prunning` + +而当你将一台处于其它两台交换机之间的交换机设置为透明模式时,该配置就没有任何意义了,透明模式交换机上的 VTP 修剪不会运行。 + +### 配置修订号,Configuration Revision Number + +配置修订号(the configuration revision number)是一个 32 位整数,用以表明一个 VTP 数据包的修订级别(在上面的 `show vtp status` 输出中可以看到)。此信息用于判断收到的信息是否与当前版本要新。你每次此处于 VTP 服务器模式的交换机上做出 VLAN 变动时,配置修订号就会加 1, 同时变动会通告给 VTP 客户端(处于 VTP 透明模式的交换机,其修订号会是 0, 且不会随 VLAN 数据库的变动而增大)。__修改 VTP 域名称,然后又改回早前的名称,可以实现交换机配置修订号重置__。 + +> __重要提示:__ 当以匹配的 VTP 域名,同时有着较高修订号的一台交换机被配置为 VTP 服务器,或者 VTP 客户端而接入到网络中时,它的数据库将会被通告给其它交换机,进而潜在地将它们各自现有的 VTP 数据库进行替换。这有可能会将整个局域网拖垮,所以在将一台新交换机连入到局域网时,一定要小心谨慎(总是要检查检查当前的 VTP 状态)。 + + +## VLAN 故障排除基础, Basic VLAN Troubleshooting + +VLANs 是一种相当直观的交换机特性,它很少需要进行故障排除。你所发现的问题,大部分都是人为配置错误。在第 15 天的课程中,我们会详细讲到二层故障排除。而一些常见的涉及 VLAN 的问题有这些。 + +1. <u>VLAN 间路由无效,Inter-VLAN routing not working</u>: 检查交换机之间的链路、路由器都是正确设置的,以及相关的 VLANs 允许通过且未被修剪(参照 “VTP 修剪” 部分)。`show interface trunk` 命令将提供所需信息。还要检查路由器子接口有配置了正确的封方式和 VLAN,同时子接口的 IP 地址是那些主机的默认网关。 +2. <u>无法创建 VLANs, VLANs cannot be created</u>: 检查交换机的 VTP 模式是否被设置成了 “client”。在 VTP 模式为 “client” 时,是不能创建 VLANs 的。另一个重要原因是交换机所允许的 VLANs 编号。`show vtp status` 命令将提供所需的信息(参看下的“中继和 VTP 故障排除”部分)。 +3. <u>同一 VLAN 中的主机之间不能通信,Hosts within the same VLAN cannot reach each other</u>: 重要的是某 VLAN 中的主机都要有一个属于同一子网的 IP 地址。如子网不同,它们之间就无法通信。另一个需要考虑的原因是这些主机是否都是连接到同一台交换机上。如它们不是连接到同一交换机,就要确保交换机之间的中继链路工作正常,还要确保该 VLAN 未在允许清单中被排除/被修剪[ensure that the trunk links(s) between the switches is/are working correctly and that the VLAN is not excluded/not pruned from the allowed list]。`show interface trunk` 命令将给出有关该中继链路的所需信息。 + + +## 中继和 VTP 故障排除,Troubleshooting Trunking and VTP + +下面是一些问题实例机器可能的解决方法。 + +* 中继宕掉? + * 接口务必要是 up/up + * 中继链路两端的封装方式要匹配 + +<pre> +SwitchA#show interface fa1/1 switchport +Name: Fa1/1 +<b>Switchport: Enabled</b> +<b>Administrative Mode: trunk</b> +Operational Mode: trunk +Administrative Trunking Encapsulation: dot1q +Operational Trunking Encapsulation: dot1q +Negotiation of Trunking: Disabled +Access Mode VLAN: 0 ((Inactive)) +</pre> + +* VLAN 信息未有传输 + * 该 VLAN 在中继链路上阻塞了吗 +`Switch#show interface trunk` + +* VTP 信息无法到达 VTP 客户端 + * VTP 域名称密码正确吗? + +`show vtp status / show vtp password` + +* 在增加一台新的交换机后,所有 VTP 信息都变动了 + * 总是客户端模式加入新的交换机(但请查看上面的有关“配置修订号(the configuration revision number)”的提示) + * 服务器模式将通告新信息 + +* VTP 修剪无效 + * 中间是否有一台透明交换机? + * 该 VLAN 允许通过该中继链路? + +## VLAN 间路由故障排除, Troubleshooting Inter-VLAN Routing + +VLAN 间路由故障可以多种形式出现,尤其是考虑在该过程中涉及多种设备(交换机、路由器等)。通过下面给出的适当故障排除方法论,你就能够将问题孤立在某台特定设备上,接着再其对应到一个错误配置的具体特性。 + +从连通性立足点上看,下面这些情事都应该检查一下。 + +* 检查一下终端主机连接了正确的交换机端口 +* 检查一下正确的交换机端口连接了正确的路由器端口(如使用了一台路由器做 VLAN 间路由) +* 检查一下在此过程中所涉及到的每个端口承载的是正确的 VLANs + * 连接终端站的那些端口,通常是被分配到一个特定 VLAN 的接入端口 + * 而将交换机连接至路由器的那些端口,则通常是中继端口 + +在确认设备之间的连通性无误后,逻辑上下一步就是检查二层配置了,__以所配置的中继端口上的封装方式开始__, 这通常是作为首选的 802.1Q 封装方式。接着就要确保中继链路两端都是配置了同样的封装方式。 + +可用于查看封类型的一些命令有以下这些。 + +* `show interface trunk` +* `show interface <number> switchport` + +这里有个输出示例。 + +<pre> +Cat-3550-1#show interfaces trunk +Port Mode Encapsulation Status Native vlan +Fa0/1 on <b>802.1q</b> trunking 1 +Fa0/2 on <b>802.1q</b> trunking 1 +Port Vlans allowed on trunk +Fa0/1 1,10,20,30,40,50 +Fa0/2 1-99,201-4094 +</pre> + +命令 `show interface trunk` 提供的另一重要细节是中继状态。从中继状态可以看出中继是否形成,同时在链路两端都要检查中继状态。如果接口未处于“中继”模式,那么接口的运行模式(on, auto, 等)是最重要的检查项,以弄清接口能否允许与链路另一端形成中继态(a trunking state)。 + +中继端口上另外一个需要检查的重要元素便是原生 VLAN。原生 VLAN 错误配置可能带来功能缺失,抑或安全问题。中继链路的两端的原生 VLAN 需要匹配。 + +假如在完成二层检查任务后,VLAN 间路由问题仍然存在,你就可以继续进行三层配置检查了。依据用于实现 VLAN 间路由的三层设备,可能会在下列设备上进行配置及配置检查。 + +* 多层交换机,multilayer switch +* 路由器 -- 物理接口, router -- physical interfaces +* 路由器 -- 子接口,router -- subinterfaces + + +三层设备上应该检查一下其各接口(或者交换机虚拟接口,SVI)都有分配的正确的子网,同时如有必要,你还应检查一下路由协议。通常情况下,各个 VLAN 都有分配不同的子网,所以你应确保你未曾错误配置了接口。而为检查此项,你可以对特定物理接口、子接口或是 SVI,使用 `show interface` 命令。 + + +## 第三天的问题 + +1. Name four advantages of using VLANs. +2. Hosts in the same VLAN can be in different subnets. True or false? +3. An access link is part of more than one VLAN. True or false? +4. Name the two trunk link encapsulation types. +5. Which commands will configure and name a VLAN? +6. A trunk link on a switch can be in which five possible modes? +7. Which command would put your interface into VLAN 5? +8. Which command will change the native VLAN? +9. VTP Client mode allows you to configure VLANs. True or false? +10. Name three benefits of using VTP. +11. Which command configures VTP pruning on your switch? + + +## 第三天问题的答案 + +1. Containing Broadcasts within a smaller group of devices will make the network faster; saves resources on devices because they process less Broadcasts; added security by keeping devices in a certain group (or function) in a separate Broadcast domain; and flexibility in expanding a network across a geographical location of any size. +2. True, but not recommended. +3. False. +4. 802.1Q and ISL. +5. The `vlan x` and `name y` commands. +6. On, off, auto, desirable, and nonegotiate. +7. The `switchport access vlan 5` command. +8. The `switchport trunk native vlan x` command. +9. False. +10. Accurate monitoring and reporting of VLANs; VLAN consistency across the network; and ease of adding and removing VLANs. +11. The `vtp pruning` command. + + +## 第三天的实验 + +### VLAN 和中继实验 + +__拓扑图,Topology__ + + + +__实验目的,Purpose__ + +学习如何配置 VLANs 以及中继链路。 + +__实验步骤,Walkthrough__ + +1. 你需要在每台 PC 上添加 IP 地址。可自由选择,只要求它们在同一子网上。 +2. 在交换机 A 上设置主机名(hostname), 创建 VLAN 2, 并将连接 PC 的那个接口放到 VLAN 2 中。如你愿意,你也可以赋予 VLAN 2 一个名称。 + + +<pre> +Switch>en +Switch#conf t +Enter configuration commands, one per line. End with CNTL/Z. +Switch(config)#hostname SwitchA +SwitchA(config)#vlan 2 +SwitchA(config-vlan)#name 60days +SwitchA(config-vlan)#interface FastEthernet0/1 +SwitchA(config-if)#switchport mode access +SwitchA(config-if)#switchport access vlan 2 +SwitchA(config-if)#^Z +SwitchA#show vlan brief +VLAN Name Status Ports +---- --------- ------------------------------- +1 default active Fa0/2, 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, Fa0/16, Fa0/17, + Fa0/18, Fa0/19, Fa0/20, Fa0/21, + Fa0/22, Fa0/23, Fa0/24 +<b>2 60days active Fa0/1</b> +1002 fddi-default active +1003 token-ring-default active +1004 fddinet-default active +1005 trnet-default active +SwitchA# +</pre> + +3. 将中继链路设置为中继模式。 + +<pre> +SwitchA#conf t +Enter configuration commands, one per line. End with CNTL/Z. +SwitchA(config)#int FastEthernet0/2 +SwitchA(config-if)#switchport mode trunk +SwitchA#show interface trunk +Port Mode Encapsulation Status Native vlan +Fa0/2 on 802.1q trunking 1 +Port Vlans allowed on trunk +<b>Fa0/2 1-1005</b> +</pre> + +4. 如你愿意,设置在该中继链路上仅允许 VLAN 2。 + +<pre> +SwitchA(config)#int FastEthernet0/2 +SwitchA(config-if)#switchport trunk allowed vlan 2 +SwitchA(config-if)#^Z +SwitchA# +%SYS-5-CONFIG_I: Configured from console by console +SwitchA#show int trunk +Port Mode Encapsulation Status Native vlan +Fa0/2 on 802.1q trunking 1 +Port Vlans allowed on trunk +<b>Fa0/2 2</b> +</pre> + +5. 此时,如你自其中一台 PC ping 往另一台,将会失败。这是因为一边是在 VLAN 1 中,另一边在 VLAN 2 中。 + +``` +PC>ping 192.168.1.1 +Pinging 192.168.1.1 with 32 bytes of data: +Request timed out. +Ping statistics for 192.168.1.1: + Packets: Sent = 2, Received = 0, Lost = 2 (100% loss) +``` + +6. 此时在交换机 B 上配置同样的那些命令。创建 VLAN、将交换机 PC 端口放入 VLAN 2,并将该接口设置为接入模式,还要将中继链路设置为 “中继”。 +7. 现在你就可以从一台 PC 实现跨越中继链路 ping 通另一 PC 了。 + +``` +PC>ping 192.168.1.1 +Pinging 192.168.1.1 with 32 bytes of data: +Reply from 192.168.1.1: bytes=32 time=188ms TTL=128 +Reply from 192.168.1.1: bytes=32 time=78ms TTL=128 +Reply from 192.168.1.1: bytes=32 time=94ms TTL=128 +Reply from 192.168.1.1: bytes=32 time=79ms TTL=128 +Ping statistics for 192.168.1.1: + Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), +Approximate round trip times in milli-seconds: + Minimum = 78ms, Maximum = 188ms, Average = 109ms +``` + + +### VTP 实验 + +在一个又两台交换机组成的拓扑中,实验今天所提到的那些 VTP 配置命令。 + +* 将其中一台交换机配置为 VTP 服务器 +* 将另一台交换机配置为 VTP 客户端 +* 在两台交换机上配置同样的 VTP 域及口令(the same VTP domain and password) +* 在服务器交换机上创建一系列的 VLANs,然后观察它们是如何彼此之间是如何通告的 +* 在两台交换机上都配置 VTP 修剪(VTP pruning) +* 在两台交换机上检查(展示) VTP 配置 +* 在两台交换机上配置不同的 VTP 域及口令,并重复上述过程;观察结果的不同 + + + + diff --git a/40.png b/40.png new file mode 100644 index 0000000..6e48969 Binary files /dev/null and b/40.png differ diff --git a/41.png b/41.png new file mode 100644 index 0000000..270d99d Binary files /dev/null and b/41.png differ diff --git a/42.png b/42.png new file mode 100644 index 0000000..08fb33d Binary files /dev/null and b/42.png differ diff --git a/43.png b/43.png new file mode 100644 index 0000000..12a96e3 Binary files /dev/null and b/43.png differ diff --git a/44.png b/44.png new file mode 100644 index 0000000..0911eea Binary files /dev/null and b/44.png differ diff --git a/45.png b/45.png new file mode 100644 index 0000000..ffdb34d Binary files /dev/null and b/45.png differ diff --git a/46.png b/46.png new file mode 100644 index 0000000..e6d25ee Binary files /dev/null and b/46.png differ diff --git a/47.png b/47.png new file mode 100644 index 0000000..c0cf763 Binary files /dev/null and b/47.png differ diff --git a/48.png b/48.png new file mode 100644 index 0000000..e7b7da6 Binary files /dev/null and b/48.png differ diff --git a/49.png b/49.png new file mode 100644 index 0000000..fbbf928 Binary files /dev/null and b/49.png differ diff --git a/50.png b/50.png new file mode 100644 index 0000000..d22f51a Binary files /dev/null and b/50.png differ diff --git a/60days-1.png b/60days-1.png new file mode 100644 index 0000000..92432b4 Binary files /dev/null and b/60days-1.png differ diff --git a/60days-10.png b/60days-10.png new file mode 100644 index 0000000..e66c84a Binary files /dev/null and b/60days-10.png differ diff --git a/60days-11.png b/60days-11.png new file mode 100644 index 0000000..0ae42df Binary files /dev/null and b/60days-11.png differ diff --git a/60days-12.png b/60days-12.png new file mode 100644 index 0000000..6b33844 Binary files /dev/null and b/60days-12.png differ diff --git a/60days-13.png b/60days-13.png new file mode 100644 index 0000000..64b5795 Binary files /dev/null and b/60days-13.png differ diff --git a/60days-14.png b/60days-14.png new file mode 100644 index 0000000..66e4e5e Binary files /dev/null and b/60days-14.png differ diff --git a/60days-15.png b/60days-15.png new file mode 100644 index 0000000..8503d79 Binary files /dev/null and b/60days-15.png differ diff --git a/60days-16.png b/60days-16.png new file mode 100644 index 0000000..3b2bbb2 Binary files /dev/null and b/60days-16.png differ diff --git a/60days-17.png b/60days-17.png new file mode 100644 index 0000000..070a78d Binary files /dev/null and b/60days-17.png differ diff --git a/60days-18.png b/60days-18.png new file mode 100644 index 0000000..2b7a590 Binary files /dev/null and b/60days-18.png differ diff --git a/60days-19.png b/60days-19.png new file mode 100644 index 0000000..d3f624f Binary files /dev/null and b/60days-19.png differ diff --git a/60days-2.png b/60days-2.png new file mode 100644 index 0000000..23cfa2b Binary files /dev/null and b/60days-2.png differ diff --git a/60days-20.png b/60days-20.png new file mode 100644 index 0000000..4241207 Binary files /dev/null and b/60days-20.png differ diff --git a/60days-21.png b/60days-21.png new file mode 100644 index 0000000..b075759 Binary files /dev/null and b/60days-21.png differ diff --git a/60days-22.png b/60days-22.png new file mode 100644 index 0000000..b12cdc6 Binary files /dev/null and b/60days-22.png differ diff --git a/60days-23.png b/60days-23.png new file mode 100644 index 0000000..fbb6f24 Binary files /dev/null and b/60days-23.png differ diff --git a/60days-24.png b/60days-24.png new file mode 100644 index 0000000..ebfabd4 Binary files /dev/null and b/60days-24.png differ diff --git a/60days-25.png b/60days-25.png new file mode 100644 index 0000000..22b0156 Binary files /dev/null and b/60days-25.png differ diff --git a/60days-26.png b/60days-26.png new file mode 100644 index 0000000..e9e3308 Binary files /dev/null and b/60days-26.png differ diff --git a/60days-27.png b/60days-27.png new file mode 100644 index 0000000..06aa226 Binary files /dev/null and b/60days-27.png differ diff --git a/60days-28.png b/60days-28.png new file mode 100644 index 0000000..d401288 Binary files /dev/null and b/60days-28.png differ diff --git a/60days-3.png b/60days-3.png new file mode 100644 index 0000000..64da2d5 Binary files /dev/null and b/60days-3.png differ diff --git a/60days-32.png b/60days-32.png new file mode 100644 index 0000000..38f4982 Binary files /dev/null and b/60days-32.png differ diff --git a/60days-33.png b/60days-33.png new file mode 100644 index 0000000..7b38e44 Binary files /dev/null and b/60days-33.png differ diff --git a/60days-34.png b/60days-34.png new file mode 100644 index 0000000..d2342b2 Binary files /dev/null and b/60days-34.png differ diff --git a/60days-35.png b/60days-35.png new file mode 100644 index 0000000..d36cfb9 Binary files /dev/null and b/60days-35.png differ diff --git a/60days-36.png b/60days-36.png new file mode 100644 index 0000000..be119b2 Binary files /dev/null and b/60days-36.png differ diff --git a/60days-37.png b/60days-37.png new file mode 100644 index 0000000..23e7d2b Binary files /dev/null and b/60days-37.png differ diff --git a/60days-4.png b/60days-4.png new file mode 100644 index 0000000..5666f7a Binary files /dev/null and b/60days-4.png differ diff --git a/60days-5.png b/60days-5.png new file mode 100644 index 0000000..748922f Binary files /dev/null and b/60days-5.png differ diff --git a/60days-6.png b/60days-6.png new file mode 100644 index 0000000..3d28275 Binary files /dev/null and b/60days-6.png differ diff --git a/60days-7.png b/60days-7.png new file mode 100644 index 0000000..5ee3baa Binary files /dev/null and b/60days-7.png differ diff --git a/60days-8.png b/60days-8.png new file mode 100644 index 0000000..a38e020 Binary files /dev/null and b/60days-8.png differ diff --git a/60days-9.png b/60days-9.png new file mode 100644 index 0000000..f79a005 Binary files /dev/null and b/60days-9.png differ diff --git a/README.md b/README.md index c5ebfd2..97cc027 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ -# 60天通过思科认证的网络工程师考试 +60 通过 CCNA +======= + +本书结合了学习技巧,包括阅读、复习、背书、测试以及 hands-on 实验。 diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..41cd7d4 --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,8 @@ +# Summary + +* [introduction](README.md) +* [第一天 -- 网络、线缆、OSI 以及 TCP 模型](chapter1.md) +* [第二天 -- CSMA/CD, 交换和虚拟局域网](2nd_chapter.md) +* [第三天 -- 中继、DTP 及 VLAN 间路由](3rd_day.md) +* [第四天--路由器和交换机安全](chapter04.md) + diff --git a/chapter04.md b/chapter04.md new file mode 100644 index 0000000..6e147c0 --- /dev/null +++ b/chapter04.md @@ -0,0 +1,933 @@ +# 路由器和交换机安全,Router and Switch Security + +## 第四天任务 + +* 阅读今天的课文(接下来的) +* 复习昨天的课文 +* 完成今天的实验 +* 阅读 ICND1 记诵指南 + +购买的交换机和路由器都是没有任何安全配置的。依据业务需求,你需要添加这些配置。令到交换机安全的那些命令和过程,与路由器的是大致一样的。现在我们就要移步到这些防止意外或是恶意登入及重新配置你的路由器,从而确保其安全的操作步骤上来。 + +我在思科公司的第一份工作,是在核心团队。涉及在访问控制列表(access control lists, ACL)、IOS 升级、灾难恢复及相关任务等方面,的客户支持。最初打击到我的事情,就是有那么多的工程师没有采用口令将其路由器进行锁定。而这些人中很多就是用 “password” 或者 “cisco” -- 两个最容易猜到的,作为口令,简直不敢想象。 + +在本书的这一章,我们看看在所有网络上,为了保护你的路由器,你应该做的几个基本步骤。 + +今天你会学到以下几点。 + +* 物理访问的防护, Protecting physical access +* 远程登入防护,Telnet access +* Enable 模式防护,Protecting Enable mode +* 路由器日志记录,Router logging +* 交换机安全加固,Securing the switch + + +本章覆盖以下的 CCNA 大纲要求。 + +* 配置和检查网络设备的以下安全特性 + * 设备口令安全,device password security + * Enable 秘密与 enable, Enable secret versus enable + * 传入,transport + * 关闭 Telnet, disable telnet + * 安全壳, Secure SHell, SSH + * 虚拟终端,VTYs + * 物理安全,Physical security + * 服务口令,service password + +* 描述不同的外部认证方式,describe external authentication methods +* 配置并检查交换机端口安全特性,比如以下这些。 + * MAC 地址绑定,sticky MAC + * MAC 地址限制,MAC address limitation + * 静态/动态,static/dynamic + * 危害模式,violation modes + * 错误关闭,err disable + * 关闭端口,shutdown + * 受限保护,protect restrict + * 关闭未使用端口,shutdown unused ports + * 错误关闭恢复,err disable recovery +* 将未使用端口指派到一个未使用 VLAN 中,assign unused ports to an unused VLAN +* 将原生 VLAN 设置成非 VLAN 1, set native VLAN to something other than VLAN 1 +* 配置并验证 NTP 客户端 + +## 物理访问防护,Protecting Physical Access + +在某个公司因失去网络接入而出现灾难性后果时,你常发现他们的路由器竟然实在某人的办公桌下,这是多么的令人惊奇啊。 + +网络设备应该安放在一间有密码锁的安全房间里,最起码也应该锁起来。思考路由器可是非常贵重的设备,也是小偷炙手可热的目标。网络规模越大,设备就越值钱,同时数据保护与路由器配置文件的保护需求也越高。 + +## 控制台访问 + +控制台接口是设计用于提供到路由器的物理访问的,以__完成路由器的初始设置及灾难恢复__。任何能取得控制台访问的人,都能够完全擦出或是重新配置这些文件,因此,__控制台接口应有一个口令进行保护,可以简单地添加一个口令,也可以为其添加一个本地用户名和口令__,如下面所示。 + +* 只添加一个口令即可 + +``` +Router(config)#line console 0 +Router(config-line)#password cisco +Router(config-line)#login +``` + +* 为控制台添加一个本地用户名和口令组合 + +``` +Router(config)#username paul password cisco +Router(config)#line console 0 +Router(config-line)#login local +``` + +你还可以为控制台(以及虚拟终端)线路创建一个超时值,如此就可以在确定的时间过后断开连接。默认的超时是 5 分钟。 + +``` +Router(config)#line console 0 +Router(config-line)#exec-timeout ? + <0-35791> Timeout in minutes +Router(config-line)#exec-timeout 2 ? + <0-2147483> Timeout in seconds + <cr> +Router(config-line)#exec-timeout 2 30 +Router(config-line)# +``` + +## 远程登陆访问,Telnet Access + +在某人给远程登陆或者说虚拟终端线路添加了口令之前,你实际上是不能远程登陆进一台路由器的。同样,你可以给虚拟终端线路添加一个口令,或是告诉路由器去查找一个本地用户名及口令组合(该组合可以在配置文件中,或是存储在一台 RADIUS/TACACS 服务器上),如下面所示。 + +<pre> +Router(config-line)#line vty 0 15 +Router(config-line)#password cisco +Router(config-line)#login ← or login local +</pre> + +下面的输出是自某台路由器到另一台的远程登陆会话。当你获得远程登陆访问时,你可以看到主机名发生了改变。注意在你输入口令时,它看不到。 + +``` +Router1#telnet 192.168.1.2 +Trying 192.168.1.2 ...Open +User Access Verification +Username: paul +Password: +Router2> +``` + +而如你有一个安全版 IOS 镜像,则可以将路由器配置为仅允许安全壳访问,而不是远程登陆访问。这样做的好处在于所有数据都是加密了的。如你在启用安全壳后,再次使用远程登时,连接将被终止。 + +``` +Router1(config)#line vty 0 15 +Router1(config-line)#transport input ssh +Router2#telnet 192.168.1.2 +Trying 192.168.1.2 ...Open +[Connection to 192.168.1.2 closed by foreign host] +``` + +## 使能模式保护,Protecting Enable Mode + +使能模式(enable mode)取得路由器的配置访问,因此你会想要保护该模式。你可以配置一个__使能秘密(an enable secret)或使能口令(an enable password)__。实际上,使能秘密和使能口令是可以同时有的,但这是一个坏主意。 + +使能口令是未加密的,所以在路由器配置中可以看到。而使能秘密有 5 级加密(level 5 encryption, MD5),难于破解。自 15.0(1)S 后的较新 IOS 版本中,还可以使用比 MD5 加密高级的 4 级加密(level 4 encryption, SHA256), 5 级加密最终会不赞成使用。你可以给使能口令加上命令 `service password-encryption`, 但因为此方式使用 7 级加密(level 7 encryption, 比如,低安全性;思科称其为“背后安全性,over the shoulder security”, 因其仅需某人从你背后偷看并记住一个稍难的词组,便可以用网上的 7 级口令解密工具予以破解),而很容易被破解。下面的输出中可以看到 7 级与 5 级加密文本。 + +<pre> +Router(config)#enable password cisco +Router(config)#exit +Router#show run +<b>enable password cisco</b> +Router(config)#enable password cisco +Router(config)#service password-encryption +Router#show run +<b>enable password 7 0822455D0A16</b> +Router(config)#enable secret cisco +Router(config)#exit +Router#show run +<b>enable secret 5 $1$mERr$hx5rVt7rPNoS4wqbXKX7m0</b> +</pre> + +记住如你忘记了使能口令,你将不得不对路由器或交换机进行一下__口令恢复操作__。请用 Google 搜索你所使用的型号,因为型号不同其口令恢复过程也不一样。对于路由器来说,涉及 + +* 设备重启,以及 +* 在重启过程中按下指定的中断键盘按键 +* 再设置配置寄存器(the configuration register)以跳过启动配置文件(通常将配置寄存器设置为 0x2142) +* 接着要执行一个 `copy start-config running-config` 命令 + +此时,就可以创建新的口令了。 + +而对交换机来说,口令恢复过程会有一点复杂(请再次用 Google 搜索你用到的具体交换机型号),但也可以通过一个小把戏实现口令恢复 -- 在给交换机上电时,按住 MODE 按钮 8 秒钟。交换机将以空白配置启动,而上一次的启动配置(the last startup configuration)将保存在 flash 中的 config.text.renamed 文件里头,所以该文件可复制用于运行配置(running configuration),然后用其它口令对其进行修改。 + +## 用户访问防护,Protecting User Access + +思科 IOS 提供对用户的单独用户名及口令,同时对所能够使用的命令进行清单限制的能力。这在分层次网络支持时是有用的。下列输出中给出了一个示例。 + +``` +RouterA#config term +Enter configuration commands, one per line. End with CNTL/Z. +RouterA(config)#username paul password cisco +RouterA(config)#username stuart password hello +RouterA(config)#username davie password football +RouterA(config)#line vty 0 4 +RouterA(config-line)#login local +RouterA(config-line)#exit +RouterA(config)#exit +``` + +你__可在路由器上指派不同用户帐号的访问级别__。比如,你也许打算那些初级网络团队成员仅能使用一些基本的故障排除命。你还有必要记住思科路由器有口令安全的两种模式(two modes of password security),用户模式(Exec mode)和特权模式(Enable mode)。 + +思科路由器有可供配置的 16 种(0 到 15)不同特权级别,其中 15 级是完全的访问权限,如下所示。 + +<pre> +RouterA#conf t +Enter configuration commands, one per line. End with CNTL/Z. +RouterA(config)#username support privilege 4 password soccer + LINE Initial keywords of the command to modify +RouterA(config)#privilege exec level 4 ping +RouterA(config)#privilege exec level 4 traceroute +RouterA(config)#privilege exec level 4 show ip interface brief +RouterA(config)#line console 0 +RouterA(config-line)#password basketball +RouterA(config-line)#login local <b>← password is needed</b> +RouterA(config-line)#^z +</pre> + +支持那人在登入到路由器并尝试进入配置模式时,此命令及其它命令将不可用且无效,也不能看到。 + +<pre> +RouterA con0 is now available +Press RETURN to get started. +User Access Verification +Username: support +Password: +RouterA#config t <b>← not allowed to use this</b> + ^ +% Invalid input detected at ‘^’ marker. +</pre> + +你可在路由器提示符下查看默认的不同特权级别(the default privilege levels)。 + +``` +Router>show privilege +Current privilege level is 1 +Router>en +Router#show priv +Router#show privilege +Current privilege level is 15 +Router# +``` + +## 更新 IOS, updating the IOS + +公认地,更新 IOS 有时会将漏洞或故障引入你的网络中,因此,如你有与思科公司有个技术支持合同(a TAC contract, Technical Assistance Centre, TAC), 那么最好的做法就是依据思科公司的建议来做。一般来讲,保持 IOS 版本最新是高度推荐的做法。藉由更新 IOS, 你能得到下面这些好处。 + +* 修正已知的软件缺陷,fixed known bugs +* 解决安全隐患,cloese security vulnerabilities +* 提供特性强化及 IOS 能力提升,Offers enhanced features and IOS capabilities + +## 路由器日志记录,Router Logging + +路由器提供事件记录的能力。它们可将日志消息照你的意愿,发送到屏幕或某台服务器。你应该记录路由器消息,而又__有 8 个可用的日志记录严重程度级别__(考试要求你知道这些不同的级别),如下面输出中的粗体字所示。 + +<pre> +logging buffered ? +`<0-7>`Logging severity level +<b>alerts</b>—Immediate action needed (severity=1) +<b>critical</b>—Critical conditions (severity=2) +<b>debugging</b>—Debugging messages (severity=7) +<b>emergencies</b>—System is unusable (severity=0) +<b>errors</b>—Error conditions (severity=3) +<b>informational</b>—Informational messages (severity=6) +<b>notifications</b>—Normal but significant conditions (severity=5) +<b>warnings</b>—Warning conditions (severity=4) +</pre> + +而你有可以将这些日志消息发往几个不同的地方。 + +``` +Router(config)#logging ? + A.B.C.D IP address of the logging host + buffered Set buffered logging parameters + console Set console logging parameters + host Set syslog server IP address and parameters + on Enable logging to all enabled destinations + trap Set syslog server logging level + userinfo Enable logging of user info on privileged mode enabling +``` + +日志消息通常会在你经由控制台进入到路由器时,显示在屏幕上。而这可能会在你敲入配置命令时多少有些烦人。这里就有个在我输入一个命令(加了下划线的那条)时,被一条控制台日志消息(a console logging message)给中断了的例子。 + +<pre> +Router(config)#int f0/1 +Router(config-if)#no shut +Router(config-if)#end +Router# +*Jun 27 02:06:59.951: %SYS-5-CONFIG_I: Configured from console by console <u>show ver</u> +*Jun 27 02:07:01.151: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up +</pre> + +此时你既可以用命令 `no logging console` 关闭日志消息输出,也可以用 `logging synchronous` 命令将它们设置为无中断(not interrupt), `logging synchronous` 命令会重新输入在被日志消息中断之前,你所输入的那行命令。`logging synchronous` 命令在虚拟终端线路上也是可用的。 + +``` +Router(config)#line con 0 +Router(config-line)#logging synchronous +Router(config-line)# +Router(config-line)#exit +Router(config)#int f0/1 +Router(config-if)#shut +Router(config-if)#exit +Router(config)# +*Jun 27 02:12:46.143: %LINK-5-CHANGED: Interface FastEthernet0/1, changed state to +administratively down +Router(config)#exit +``` + +这里值得一提的是,在你经由 Telnet (或 SSH) 进入到路由器时,你是不会看到控制台输的。如你想在此时看到日志消息,__执行 `terminal monitor` 命令__即可。 + +## 简单网络管理协议,Simple Network Management Protocol, SNMP + +__SNMP 是一种可用于远程管理网络的_服务___。它由一台网络管理员维护、运行了 SNMP 管理软件的中心工作站,及包括路由器、交换机及服务器等的,各台网络设备上的小文件(代理,agents)构成。 + +包括 HP、Cisco、IBM 及 SolarWinds 等的几家厂商,都有设计 SNMP 软件。也有很多开发源代码版本的 SNMP 软件可用。这类软件允许你监测设备的带宽及活动情况,比如登陆活动以及端口状态等。 + +运用 SNMP, 你可以远程地配置或是关闭端口和设备。你也可以将其配置在某些条件触发时,诸如出现高带宽或是端口宕掉时,发出警告消息。我们会在第 40 天来讲 SNMP 的细节,因为 SNMP 是 ICND2 大纲的部分。 + +## 加固交换机,Securing the Switch + +### 阻止远程登陆访问,Prevent Telnet Access + +远程登陆流量以明文方式发送口令,这就是说,可轻易地在配置中读取口令,或是有人接到你的网络上,那么就能通过网络嗅探软件查看到口令。 + +默认情况下,远程登陆实际上是关闭的(也就是说,你需要为其设置一个口令,也可选择设置一个用户名,来让其工作)。不过,如你仍想要有对管理端口的远程访问的话,你可使用命令 `transport input ssh`, 开启到交换机的 SSH 通信,这已在前面讨论过了。 + +> Farai 说 -- “所有虚拟终端线路下,命令 `transport input all` 是默认开启的,而其它线路的 `transport input none` 命令是默认开启的。” + +### 开启 SSH, Enable SSH + +尽可能地采用 SSH 而不是 Telnet 及 SNMP 来访问你的交换机。SSH 表示安全壳(secure shell), 令到某网络上的两台设备之间信息的安全交换。SSH 采用公钥加密法(pubic-key cryptography)来认证连接设备。Telnet 及 SNMP 版本 1 和 2 都是未加密的,易受包嗅探(packet sniffing)的影响, SNMP 版本 3 提供了保密性 -- 数据包有加密以防止恶意源窃取数据(snooping by an unauthorised source)。 + +要开启 SSH, 你需要有一个支持加密的 IOS 版本。一种快速找出 IOS 镜像是否支持加密的方法是执 `show version` 命令。查找镜像文件名中有无 `k9` 字样,或者在思科系统公司的安全性声明中查找有关字句。 + +<pre> +Switch#sh version +Cisco IOS Software, C3560 Software (C3560-ADVIPSERVICES K9-M), Version +12.2(35)SE1, RELEASE SOFTWARE (fc1) +Copyright (c) 1986-2006 by Cisco Systems, Inc. +Compiled Tue 19-Dec-06 10:54 by antonio +Image text-base: 0x00003000, data-base: 0x01362CA0 +ROM: Bootstrap program is C3560 boot loader +BOOTLDR: C3560 Boot Loader (C3560-HBOOT-M) Version 12.2(25r)SEC, RELEASE +SOFTWARE (fc4) +Switch uptime is 1 hour, 8 minutes +System returned to ROM by power-on + +System image file is “flash:/c3560-advipservices<b>k9</b>-mz.122-35.SE1.bin” + +<b>This product contains cryptographic features</b> and is subject to United States and local +country laws governing import, export, transfer and use. Delivery of Cisco cryptographic +products does not imply third-party authority to import, export, distribute or use +encryption. Importers, exporters, distributors and users are responsible for compliance +with U.S. and local country laws. By using this product you agree to comply with +applicable laws and regulations. If you are unable to comply with U.S. and local laws, +return this product immediately. A summary of U.S. laws governing Cisco cryptographic +products may be found at: +http://www.cisco.com/wwl/export/crypto/tool/stqrg.html +If you require further assistance please contact us by sending email to export@cisco.com. +--More- +</pre> + +> __注意:__ 如你没有带有安全特性版本的 IOS,你就必须为此付费购买。 + +为建立加密连接,你需要在交换机上创建一对公钥和私钥(a private/public key, 见下面)。在连接时,你这边使用公钥加密数据,交换机将会使用它的私钥来解密数据。而在认证时,使用你所选择的用户名/口令组合。下一个问题是,要设置交换机的主机名和域名(hostname and domain name), 因为在创建公钥/私钥对时,会用到主机名.域名命名法(hostname.domainname nomenclature)。显然,在命名主机名和域名时,将其命名为能够代表系统的有意义名字,是好的做法。 + +首先,你要给交换机一个与默认主机名 Switch 不一样的主机名。接着,添加其域名(该域名通常与 Windows 活动目录的 FQDN 一致)。这时就可以创建用于秘密的密钥(the crypto key)了。系数/模量(the modulus) 是指你所希望使用的密钥的长度,取值范围是 360 到 2048, 后者具有最高的安全性;高于 1024 位的模量就认为是安全的了。此时,交换机上的 SSH 就已经开启了。 + +有一些 SSH 相关的维护命令需要输入。`ip ssh time-out 60` 命令会将任何空闲 60 秒的 SSH 连接置为超时。而命令 `ip ssh authentication-retries 2` 则会在认证失败两次的 SSH 连接重置为初始状态。此设置并不会阻止用户建立新的连接并重试认证。设置过程如下所示。 + +``` +Switch(config)#hostname SwitchOne +SwitchOne(config)#ip domain-name mydomain.com +SwitchOne(config)#crypto key generate rsa +Enter modulus: 1024 +SwitchOne(config)#ip ssh time-out 60 +SwitchOne(config)#ip ssh authentication-retries 2 +``` + +可使用命令 `ip ssh version 2` 开启 SSH 版本 2。让我们看看其中一个密钥。在这个实例中,该密钥是为 HTTPS 生成的。因为其是在开启 HTTPS 时自动生成的,所以其名称也会自动产生。 + +``` +firewall#show crypto key mypubkey rsa +Key name: HTTPS_SS_CERT_KEYPAIR.server +Temporary key +Usage: Encryption Key +Key is not exportable. +Key Data: +306C300D 06092A86 4886F70D 01010105 00035B00 30580251 00C41B63 8EF294A1 +DC0F7378 7EF410F6 6254750F 475DAD71 4E1CD15E 1D9086A8 BD175433 1302F403 +2FD22F82 C311769F 9C75B7D2 1E50D315 EFA0E940 DF44AD5A F717BF17 A3CEDBE1 +A6A2D601 45F313B6 6B020301 0001 +``` + +要验证交换机上的 SSH 开启,输入以下命令。 + +``` +Switch#show ip ssh +SSH Enabled - version 1.99 +Authentication timeout: 120 secs; Authentication retries: 2 +Switch# +``` + +而用一个简单的命令,就可以关闭 HTTP 访问。 + +`Switch(config)#no ip http server` + +查看交换机上 HTTP 服务器的状态。 + +<pre> +Switch#show ip http server status +HTTP server status: <b>Disabled</b> +HTTP server port: 80 +HTTP server authentication method: enable +HTTP server access class: 0 +HTTP server base path: flash:html +Maximum number of concurrent server connections allowed: 16 +Server idle time-out: 180 secondsServer life time-out: 180 seconds +Maximum number of requests allowed on a connection: 25 +HTTP server active session modules: ALL +HTTP secure server capability: Present +HTTP secure server status: Enabled +HTTP secure server port: 443 +HTTP secure server ciphersuite: 3des-ede-cbc-sha des-cbc-sha rc4-128-md5 rc4-12 +HTTP secure server client authentication: Disabled +HTTP secure server trustpoint: +HTTP secure server active session modules: ALL +</pre> + +还可以在 VTY 线路上应用控制列表(an access control list, ACL)。在第 9 天的课程将会讲到。 + +### 设置使能秘密口令,Set an Enable Secret Password + +全局配置模式允许用户对交换机或路由器进行配置,还可以擦除配置,以及重置口令。你务必要设置一个口令或秘密口令来保护此模式,而这实际上是为阻止用户闯过(get past)用户模式。一般口令在路由器配置文件中会显示出来,而 `enable secret` 口令则会进行加密。 + +上面已经提到,你实际上可以在交换机或路由器上同时设置使能口令(a password)和使能秘密口令(enable secret password),但这会带来混乱。所以__请只设置使能秘密口令__就好。下面的配置文件演示了__通过在命令前键入 `do` 关键字,而无需回到特权模式,就可执行该命令__的情形。 + +<pre> +Switch1(config)#enable password cisco +Switch1(config)#do show run +Building configuration... +Current configuration: 1144 bytes +hostname Switch1 +<b>enable password cisco</b> +</pre> + +> Farai 补充道 -- “你可以使用 `service password-encryption` 命令,对使能口令 `enable password` 进行 7 级加密。” + +通过在命令前加上 `no` 关键字后再次执行该命令,可以擦除配置文件中的大多数行。上面 Farai 提到的使用 `service password-encryption` 命令是毫无作用的,因为这个方法仅提供了弱加密(7 级), 而下面的秘密口令(the secret password)则有着强加密(MD5)。 + +<pre> +Switch1(config)#no enable password +Switch1(config)#enable secret cisco +Switch1(config)#do show run +Building configuration... +Current configuration: 1169 bytes +hostname Switch1 +<b>enable secret 5 $1$mERr$hx5rVt7rPNoS4wqbXKX7m0</b> [strong level 5 password] +</pre> + + +### 服务,Services + +你总是应该关闭那些你不会用到的服务。思科已经在关闭那些不安全和很少用到的服务和协议上做得很好了;尽管如此,你可能会要因明确这点而亲自关闭它们。同样也会有一些服务是有帮助的。多数服务可在全局配置模式中的 `service` 命令下找到。 + +``` +Switch(config)# service ? +compress-config Compress the configuration file +config TFTP load config files +counters Control aging of interface counters +dhcp Enable DHCP server and relay agent +disable-ip-fast-frag Disable IP particle-based fast fragmentation +exec-callback Enable EXEC callback +exec-wait Delay EXEC startup on noisy lines +finger Allow responses to finger requests +hide-telnet-addresses Hide destination addresses in telnet command +linenumber enable line number banner for each exec +nagle Enable Nagle’s congestion control algorithm +old-slip-prompts Allow old scripts to operate with slip/ppp +pad Enable PAD commands +password-encryption Encrypt system passwords +password-recovery Disable password recovery +prompt Enable mode specific prompt +pt-vty-logging Log significant VTY-Async events +sequence-numbers Stamp logger messages with a sequence number +slave-log Enable log capability of slave IPs +tcp-keepalives-in Generate keepalives on idle incoming network + connections +tcp-keepalives-out Generate keepalives on idle outgoing network + connections +tcp-small-servers Enable small TCP servers (e.g., ECHO) +telnet-zeroidle Set TCP window 0 when connection is idle +timestamps Timestamp debug/log messages +udp-small-servers Enable small UDP servers (e.g., ECHO) +``` + +一般来讲,有下列的这些最常见的要开启或关闭的服务。其各自的说明在中括号里。 + +* `no service pad` [数据包组装程序/分拆程序,在异步组网中有使用;很少使用到] +* `no service config` [阻止交换机从网络获取其配置文件] +* `no service finger` [关闭 finger 服务器;很少用到] +* `no ip icmp redirect` [组织 ICMP 重定向,而 ICMP 重定向可被用于路由器投毒] +* `no ip finger` [关闭 finger 服务的另一种方式] +* `no ip gratuitous-arps` [关闭此服务以阻止中间人攻击(man-in-the-middle attacks)] +* `no ip source-route` [关闭由用户提供到目的地的逐跳路由(user-provided hop-by-hop routing to destination)] +* `service sequence-numbers` [在每条日志记录中,分配给其一个编号,同时此编号序列增加] +* `service tcp-keepalive-in` [防止路由器将挂起的管理会话一直保持开启,prevents the router from keeping hung management sessions open] +* `service tcp-keepalive-out` [与 `sevice tcp-keepalive-in` 功能一样] +* `no service upp-small-servers` [关闭 `echo, chargen, discard, daytime` 等功能,这些功能很少用到] +* `no service tcp-small-servers` [关闭 `echo, chargen, discard` 等功能,这些功能很少用到] +* `service timestamps debug datetime localtime show-timezone` [在调试模式下(in debug mode), 将每个记录的数据包,使用本地时间,打上日期和时间的时间戳,并显示时区] +* `service timestamps log datetime localtime show-timezone` [在非调试模式下(not in debug mode), 将每个记录的数据包,使用本地时间,打上日期和时间的时间戳,并显示时区 -- 这服务在查看日志文件非常有用,尤其是在时钟设置正确的情况下] + +### 修改原生 VLAN, Change the Native VLAN + +交换机使用原生 VLAN 来承载那些特定的协议流量,诸如思科发现协议(Cisco Discovery Protocol, CDP)、VLAN 中继协议(VLAN Trunking Protocol, VTP)、端口聚合协议(Port Aggregation Protocol, PAgP),以及动态中继协议(Dynamic Trunking Protocol, DTP)等协议信息。默认原生 VLAN 总是 VLAN 1; 但原生 VLAN 是可以手动设置为任何有效 VLAN 编号(除开 0 和 4096, 因为这些 VLAN 编号处于 VLANs 的保留范围)。 + +你可以使用下面输出中演示的命令(在每个接口下执行的),来查看原生 VLAN。 + +<pre> +Switch#show interfaces FastEthernet0/1 switchport +Name: Fa0/1 +Switchport: Enabled +Administrative Mode: trunk +Operational Mode: trunk +Administrative Trunking Encapsulation: dot1q +Operational Trunking Encapsulation: dot1q +Negotiation of Trunking: On +Access Mode VLAN: 1 (default) +<b>Trunking Native Mode VLAN: 1 (default)</b> +Voice VLAN: none +</pre> + +__将端口放入 VLAN 1 被认为是一种安全漏洞(a security vulnerability)__, 允许黑客取得网络资源的访问。为减轻此问题,避免任何主机放入 VLAN 1 是一种明智可取的做法。同时也可将所有中继接口上的原生 VLAN 修改为某个未使用的 VLAN。 + +`Switch(config-if)#switchport trunk native vlan 888` + +> __注意:__这是 CCNA 大纲中的一个关键目标(one of the key objectives), 所以务必牢记。 + +你还可以用下面的命令,来阻止原生 VLAN 上的数据通过中继链路。 + +`Switch(config-if)#switchport trunk allowed vlan remove 888` + + +### 修改管理 VLAN, Change the Management VLAN + + +给交换机配置一个 IP 地址,以实现为管理目的而远程登陆到其上,也是可以的。这又叫做交换机虚拟接口(Switch Virtual Interface, SVI)。将该管理访问做到除 VLAN 1 之外的其它 VLAN 上,是一种明智的预防措施,如下面的输出所示。 + +``` +Switch(config)#vlan 3 +Switch(config-vlan)#interface vlan3 +%LINK-5-CHANGED: Interface Vlan3, changed state to up +Switch(config-if)#ip address 192.168.1.1 255.255.255.0 +``` + +### 关闭 CDP, Turn Off CDP + +后面会讲到思科发现协议(Cisco Discovery Protocol, CDP), 但在这里,你要知道,在大多数的路由器和交换机上的每个接口下,该协议都是打开的,这也是通行的做法,其功能是发现路由器或交换机上连接的思科设备。你可能不打算让其它思科设备看到你的网络设备的信息,那么就可以关掉这个服务,至少应该在那些你的网络边缘上的,连接其它公司或者 ISP 的那些设备上关闭 CDP。 + +> Farai 指出 -- “CDP 在比如 ASR 路由器的所有平台上默认都未开启。” + +在下面的输出中,你能看到一台连接我的交换机的路由器,在我执行 `show cdp neighbor detail` 命令时,其能看见哪些基本信息。 + +``` +Router#show cdp neighbor detail +Device ID: Switch1 +Entry address(es): +Platform: Cisco 2960, Capabilities: Switch +Interface: FastEthernet0/0, Port ID (outgoing port): FastEthernet0/2 +Holdtime: 176 +Version : +Cisco Internetwork Operating System Software +IOS (tm) C2960 Software (C2960-I6Q4L2-M), Version 12.1(22)EA4, RELEASE SOFTWARE(fc1) +Copyright (c) 1986-2005 by Cisco Systems, Inc. +Compiled Wed 18-May-05 22:31 by jharirba +advertisement version: 2 +Duplex: full +Router# +``` + +下面的命令将对整个设备关闭 CDP。 + +`Switch1(config)#no cdp run` + +而要对某个特定接口关闭 CDP, 执行以下命令。 + +``` +Switch1(config)#int FastEthernet0/2 +Switch1(config-if)#no cdp enable +``` + +### 添加横幅消息,Add a Banner Message + +横幅消息将于某用户登入路由器或交换机时显示出来。其并不会提供任何实质性的安全,但会显示你设置的警告信息。在下面的配置中,我选择的是 “Y” 字母作为界定符(delimiting character), 界定符用以告诉路由器,我已输完消息文字。 + +``` +Switch1(config)#banner motd Y +Enter TEXT message. End with the character ‘Y’. +KEEP OUT OR YOU WILL REGRET IT Y +Switch1(config)# +``` + +在我从交换机登入到路由器时,我能看到横幅消息。错在选择了 “Y” 作为界定符,因为它割除了我的消息文字。 + +``` +Router#telnet 192.168.1.3 +Trying 192.168.1.3 ...Open +KEEP OUT OR +``` + +横幅消息可以是以下这些。 + +* 在用户看到登陆提示符之前显示出来 -- MOTD(message of the day) +* 在用户看到登陆提示符之前显示出来 -- Login +* 在登陆提示符之后显示给用户 -- Exec (在你打算对未授权用户隐藏的信息) + +在本书中,横幅消息作为一些实验的组成部分。我建议你掌握全部三种类型横幅消息,并以登入路由器的方式来测试它们。依据你所用的平台和 IOS,会有不同的选择。 + +``` +Router(config)#banner ? + LINE c banner-text c, where ‘c’ is a delimiting character + exec Set EXEC process creation banner + incoming Set incoming terminal line banner + login Set login banner + motd Set Message of the Day banner + prompt-timeout Set Message for login authentication timeout + slip-ppp Set Message for SLIP/PPP +``` + +### 设置 VTP 口令, Set a VTP Password + +VTP 确保网络上交换机之间传输的是精确的 VLAN 信息。而为了保护 VLAN 信息的更新,你应该在交换机上加入 VTP 口令(该 VTP 域中所有交换机上的 VTP 口令都应一致), 如下面输出演示的那样。 + +``` +Switch1(config)#vtp domain 60days +Changing VTP domain name from NULL to 60days +Switch1(config)#vtp password cisco +Setting device VLAN database password to cisco +Switch1(config)# +``` + +### 限定 VLAN 信息, Restrict VLAN Infaomation + +默认下的交换机允许所有 VLANs 通过中继链路。你将其修改为指定 VLANs 才能通过中继链路。如下面的输出所示。 + +<pre> +Switch1(config)#int FastEthernet0/4 +Switch1(config-if)#switchport mode trunk +Switch1(config-if)#switchport trunk allowed vlan ? + WORD VLAN IDs of the allowed VLANs when this port is in trunking mode + add add VLANs to the current list + all all VLANs + except all VLANs except the following + none no VLANs + remove remove VLANs from the current list +Switch1(config-if)#switchport trunk allowed vlan 7-12 +Switch1#show interface trunk +Port Mode Encapsulation Status Native vlan +Fa0/4 on 802.1q trunking 1 +Port Vlans allowed on trunk +<b>Fa0/4 7-12</b> +</pre> + +### 端口因出错关闭后的恢复功能,Error Disable Recovery + +由一系列的事件导致的,思科交换机将其端口置为一种特别的关闭模式(a special diabled mode), 叫做出错关闭(err-disabled)。此特性简单来讲,由于在某个特定端口上发生某种错误后,该端口就被关闭了。错误可能有多种原因,之最常见的就是出现触发了某项端口安全策略(a port security policy)。在某个未授权用户尝试连接到某个交换机端口时,这是通常的做法,它阻止那些违规设备访问网络。 + +出错关闭端口(an err-disabled port)看起来会是这样的。 + +<pre> +Switch# show interface f0/1 +FastEthernet0/1 is down, line protocol is down <b>[err-disabled]</b> +..... +</pre> + + +而为了重新使用(re-activate)某个出错关闭接口,以在该接口上执行 `shutdown` 及 `no shutdown` 命令的人工干预是必要的, 网络工程师们俗称此操作为端口弹跳(a bouncing the port)。但是,某些情形要求从原端口状态自动恢复过来,而不是等到管理员手动开启该端口。此出错关闭回复模式,通过将交换机配置为在依引发通信失败事件的不同,而不同的一段时间后,自动重新打开出错关闭端口的方式,来发挥作用。区分通信失败事件,提供了出错关闭恢复功能所监测事件上的粒度(granularity)控制。 + +完成该功能设置的命令是 `errdisable recovery cause`, 在全局路由器配置模式下输入。 + +``` +Switch(config)#errdisable recovery cause ? + all Enable timer to recover from all causes + bpduguard Enable timer to recover from bpdu-guard error disable state + dtp-flap Enable timer to recover from dtp-flap error disable state + link-flap Enable timer to recover from link-flap error disable state + pagp-flap Enable timer to recover from pagp-flap error disable state + rootguard Enable timer to recover from root-guard error disable state + udld Enable timer to recover from udld error disable state +...... +``` + +`errdisable recovery cause` 命令依设备型号会有所不同,但最常见的参数有这些。 + +* all +* arp-inspection +* bpduguard +* dhcp-rate-limit +* link-flap +* psecure-violation +* security-violation +* storm-control +* udld + +多数平台上端口自动恢复的默认时间是 300 秒,此时间可以用全局配置命令 `errdisable recovery interval` 手动修改。 + +``` +Switch(config)#errdisable recovery interval ? + <30-86400> timer-interval(sec) +``` + +而命令 `show errdisable recovery` 命令则会提供有关出错关闭恢复功能(the err-disable recovery function)激活了的那些特性的细节信息,以及受到监测的接口,并包含了接口重新开启剩余时间。 + +<pre> +Switch#show errdisable recovery +ErrDisable Reason Timer Status +----------------- -------------- +arp-inspection Disabled +bpduguard Disabled +channel-misconfig Disabled +dhcp-rate-limit Disabled +dtp-flap Disabled +gbic-invalid Disabled +inline-power Disabled +l2ptguard Disabled +link-flap Disabled +mac-limit Disabled +link-monitor-failure Disabled +loopback Disabled +oam-remote-failure Disabled +pagp-flap Disabled +port-mode-failure Disabled +psecure-violation <b>Enabled</b> +security-violation Disabled +sfp-config-mismatch Disabled +storm-control Disabled +udld Disabled +unicast-flood Disabled +vmps Disabled +Timer interval: 300 seconds +Interfaces that will be enabled at the next timeout: +Interface Errdisable reason Time left(sec) +--------- ----------------- -------------- +Fa0/0 psecure-violation <b>193</b> +</pre> + +### 外部认证方式,External Authentication Methods + +与本地存储不同,你可以采用一台通常运行了 AAA 或 TACACS+ 的服务器来存储用户名和口令。这么做的优势在于,你无需在每台路由器和交换机上都手动输入用户名和口令。而是将其存储在服务器的数据库中。 + +TACACS+ 表示“加强版终端访问控制器访问控制系统(Terminal Access Controller Access Control System Plus, TACACS+)”。它是一个思科专有协议,使用 TCP 49 号端口。__TACACS+ 提供了经由一台或多台 TACACS+ 中心服务器,对包含路由器及网络介入服务器等网络设备的访问控制__。 + +__拨入用户远端认证服务(Remote Authentication Dial-In User Service, RADIUS)__, 是一套__分布式网络安全系统__,用以确保网络远程访问的安全性,同时它又__是一个使用 UDP 的客户端/服务器协议(a client/server protocol)。RADIUS 是开放标准__。 + +如你拥有 TACACS+ 或者 RADIUS,那么你可能希望开启认证、授权和记账(Authentication, Authorization, and Accounting, AAA)。AAA 是安装在一台服务器上的,它监测着网络的一个用户帐号数据库。用户访问、协议、连接,以及断开原因,及其它很多特性都能被监测到。 + +路由器和交换机可被设置为在某用户尝试登入时查询服务器。服务器此时来验证用户。__CCNA 考试不要求你去配置这些协议__。 + + +### 路由器时钟及 NTP, Router Clock and NTP + +交换机上的时间经常被忽略;但它却是重要的。在你遇到安全入侵(security violations)、SNMP 问题(SNMP traps), 或者事件记录时,会用到时间戳。如交换机上的时间不正确,就会难于找出时间发生的时间。举个例子,让我们看看下面的交换机,并检查一下它的时间。 + +``` +Switch#show clock +*23:09:45.773 UTC Tue Mar 2 1993 +``` + +该时间是不准确的,所以我们要修改一下。但首先,我们要设置一些属性值。 + +``` +clock timezone CST -6 +clock summer-time CDT recurring +clock summer-time CST recurring 2 Sun Mar 2:00 1 Sun Nov 2:00 +``` + +首先,我们设置时区(the time zone)。我是位于中部时区(the Central time zone), 比 GMT 要早 6 个小时。接着告诉交换机夏令时(时间变化,the time change)是循环的。最后设置夏令时具体是什么。此时,我们就可以设置时间和日期了。 + +``` +Switch#clock set 14:55:05 June 19 2007 +Switch# +1d23h: %SYS-6-CLOCKUPDATE: System clock has been updated from 17:26:01 CST +Tue Mar 2 1993 to 14:55:05 CST Tue Jun 19 2007, configured from console by console. +Switch#show clock +14:55:13.858 CST Tue Jun 19 2007 +``` + +请注意,__时钟设置实在使能模式(Enable mode),而不是配置模式下__。除了手动设置时钟外,你可以使用网络时间协议(Network Time Protocol, NTP)。它让你可将交换机的时钟与某台原子钟(an atomic clock)同步,保证非常精确的时间。 + +``` +Switch(config)#ntp server 134.84.84.84 prefer +Switch(config)#ntp server 209.184.112.199 +``` + +使用下面的两个命令,你可以查看时钟是否已经和 NTP 源保持同步。 + +``` +Switch#show ntp associations +Switch#show ntp status +``` + +在第 40 天中,我们会涉及更多有关 NTP 的内容。 + +## 关闭未用到的那些端口,Shut Down Unused Ports + +未使用的,或者说“空起的”那些没有任何网络设备的端口,因为某人会插入一条网线并将未授权设备连接到网络,而引发安全威胁。这会导致一些安全问题,包括。 + +* 网络未能如同与其的那样运作 +* 网络信息暴露于外部人员 + +这就是为何你要关闭路由器、交换机及其它网络设备上,所有未使用端口的原因。依据具体设备,关闭状态可能是端口默认的状态,但你仍要对此进行验证。 + +而关闭端口是通过在__接口配置模式__下使用 `shutdown` 命令完成的。 + +``` +Switch#conf t +Switch(config)#int fa0/0 +Switch(config-if)#shutdown +``` + +验证某端口处于关闭状态有多种方法,其一就是使用 `show ip interface brief` 命令。 + +<pre> +Router(config-if)#do show ip interface brief +Interface IP-Address OK? Method Status Protocol +FastEthernet0/0 unassigned YES unset <b>administratively down</b> down +FastEthernet0/1 unassigned YES unset administratively down down +</pre> + +请注意,__管理性关闭__状态就是说该端口是手工关闭的。验证关闭状态的另一方法是使用 `show interface` 命令。 + +<pre> +Router#show interface fa0/0 +FastEthernet0/0 is <b>administratively down</b>, line protocol is down + Hardware is Gt96k FE, address is c200.27c8.0000 (bia c200.27c8.0000) + MTU 1500 bytes, BW 10000 Kbit/sec, DLY 1000 usec, +...... +</pre> + +## 思科发现协议, Cisco Discovery Protocol, CDP + +现在来讨论思科发现协议正是时候。 + +CDP 因为其在做出任何配置之前,就提供了一种发现有关网络设备信息的方法,而是__一个热门的考试考点__。它是一直非常有用的故障排除工具;但它又带来了安全威胁。 + +CDP 是一个思科专有协议,也就是说它只运行在思科设备上。它是__一种二层服务__, 设备用它来通告和接收那些直接连接设备的基本信息。IEEE 版本的 CDP 叫做__链路层发现协议(Link Layer Discovery Protocol, LLDP)__, CCNA 大纲并不包含此内容。 + +因为 CDP 是一种二层服务,所以它__并不需要配置有 IP 地址来交换信息__。只需开启接口就行。如有配置 IP 地址,该 IP 地址也会包含进 CDP 消息中。 + +CDP 作为非常强大的故障排除工具,考试中要求你掌握如何来使用它。图 4.1 展示了 Router 0 的 CDP 输出。请设想一下在没有拓扑图(topology diagram)的情况下,你要对此网络进行故障排除的情形。 + + +图 4.1 -- Router 0 的 CDP 输出 + +下列配置输入,正是图 4.1 中的。 + +``` +Router0#show cdp neighbors +Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge, S - Switch, H - +Host, I - IGMP, r - Repeater, P - Phone +Device ID Local Interface Holdtime Capability Platform Port +Switch Fas 0/0 165 S 2960 Fas 0/1 +Router Fas 0/1 169 R C1841 Fas 0/0 +Router0# +``` + +在上述命令的后面加上 `detail` 命令,你可以看到更多信息。 + +``` +Router0#show cdp neighbors detail +Device ID: Switch +Entry address(es): +Platform: cisco 2960, Capabilities: Switch +Interface: FastEthernet0/0, Port ID (outgoing port): FastEthernet0/1 +Holdtime: 178 +Version : +Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(25)FX, RELEASE +SOFTWARE (fc1) +Copyright (c) 1986-2005 by Cisco Systems, Inc. +Compiled Wed 12-Oct-05 22:05 by pt_team +advertisement version: 2 +Duplex: full +--------------------------- +Device ID: Router +Entry address(es): + IP address : 192.168.1.2 +Platform: cisco C1841, Capabilities: Router +Interface: FastEthernet0/1, Port ID (outgoing port): FastEthernet0/0 +Holdtime: 122 +Version : +Cisco IOS Software, 1841 Software (C1841-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE +SOFTWARE (fc2) +Technical Support: http://www.cisco.com/techsupport +Copyright (c) 1986-2007 by Cisco Systems, Inc. +Compiled Wed 18-Jul-07 04:52 by pt_team +advertisement version: 2 +Duplex: full +``` + +现在你可以看到 IOS 版本、型号、IP 地址以及其它信息。记住现在你仍未在 Router 0 上配置 IP 地址。 + +前面我们已经讲过怎样在整台设备或仅在某个接口上关闭 CDP 了。而另两个有关命令是显示设备有关 CDP 的协议信息的 `show cdp` 命令,以及通过输入设备名称来查看某台具设备信息的 `show cdp entry <Router>` 命令。建议在今天要配置的实验中花些时间,来查看 CDP 的众多输出。 + +``` +Router0#show cdp +Global CDP information: + Sending CDP packets every 60 seconds + Sending a holdtime value of 180 seconds + Sending CDPv2 advertisements is enabled +Router0#show cdp ? + entry Information for specific neighbor entry + interface CDP interface status and configuration + neighbors CDP neighbor entries + traffic CDP statistics + | Output modifiers + <cr> +``` + +## 交换机端口安全,Switch Port Security + +端口安全特性,是通过限制某个特定端口或是接口能够学习到的 MAC 地址数目,来保护交换机端口安全,并最终确保 CAM 表的安全的一项,Catalyst 交换机的有力特性。具备了端安全特性,交换机就能够维护一张用于明确哪个 MAC 地址(或哪些地址),可以接入哪些本地交换机端口的表格。此外,交换机同样可以配置为仅允许在任何给定的端口上学习到指定数量的 MAC 地址。端口安全如图 4.2 所示。 + + +图 4.2 -- 端口安全的运作 + +图 4.2 展示了在某台 Catalyst 交换机上,通过端口安全特性配置的 4 个端口,它们都只允许单一 MAC 地址接入。从 1 号到 3 号端口连接的 MAC 地址与端口安全所允许的地址匹配。在没有其它过滤的情况下,这些主机就能够经由其各自交换机端口转发流量。而端口 4 上所配置的是允许 AAAA.0000.0004 MAC 地址,但所接入的 MAC 地址却是 BBBB.0000.0001。因为主机 MAC 地址与所允许的 MAC 不一样,端口安全(port security)将在端口上做出如同管理员所设定的适当动作。这些有效端口安全动(the valid port security actions)作将在接下来的部分详细说明。 + +__端口安全特性__设计用于保护交换局域网(the switched LAN)免受两种主要的攻击方式。这两种方式在下的小节讲到。 + +* CAM 表溢出攻击, CAM table overflow attacks +* MAC 欺骗攻击, MAC spoofing attacks + +### CAM 表溢出攻击 + +交换机的 CAM 表是一些存储位置,这些存储位置包含了物理端口上的那些 MAC 地址,及其 VLAN 参数。交换机 CAM 表中动态学习到的内容,或者说 MAC 地址表,可通过命令 `show mac-address-table dynamic` 查看到,如下面的输出所示。 + +``` +VTP-Server-1#show mac-address-table dynamic + Mac Address Table +------------------------------------------- +Vlan Mac Address Type Ports +---- ----------- -------- ----- + 2 000c.cea7.f3a0 DYNAMIC Fa0/1 + 2 0013.1986.0a20 DYNAMIC Fa0/2 + 6 0004.c16f.8741 DYNAMIC Fa0/3 + 6 0030.803f.ea81 DYNAMIC Fa0/4 + 8 0004.c16f.8742 DYNAMIC Fa0/5 + 8 0030.803f.ea82 DYNAMIC Fa0/6 +Total Mac Addresses for this criterion: 6 +``` + +如同所有的计算装置一样,交换机的存储资源也是有限的。这就意味着 __CAM 表的存储空间是固定的,已分配好的__。 + + + + + + + + + + + diff --git a/chapter1.md b/chapter1.md new file mode 100644 index 0000000..ac14f9b --- /dev/null +++ b/chapter1.md @@ -0,0 +1,1754 @@ +# 第一天 -- 网络、线缆、OSI 以及 TCP 模型 + +## 第一天的任务 + +* 阅读今天的课程内容 +* 阅读 ICND1 cram 指南 + + +今天你将学到以下内容: + +* 各种网络设备及网络图表 +* OSI 和 TCP 模型 +* 各种线缆和传输介质 +* 连接到一台路由器 + + +此模块覆盖了 ICND1 大纲要求的以下内容: + +* 了解各种不同网络设备,如路由器、交换机、网桥及集线器等的用途和功能 +* 选出需要的部件来满足指定规格网络的需求 +* 区分常见的不同应用,以及它们对网络的影响 +* 描述 OSI 和 TCP 模型中众多协议的目的及其运作过程 +* 预测网络上两台主机之间数据流的走向 +* 找出合适的传输媒介、线缆、接口以及连接器以将思科网络设备连接到局域网上的其它网络设备和主机 + +## 网络设备 + +作为一名网络工程师,你将用到很多网络线缆及其它传输媒介。你需要知道哪些线缆能够与 WAN、LAN 上的设备和接口,以及管理端口工作起来。如果你之前曾学过 CompTIA Network+, 那么这些知识将会是对其的复习。 + +### 常见的网络设备 + +__网络交换机__ + +就在几年前,网络仍是相当小型的。这就意味着你只需简单地将所有设备查到一台或几台集线器上就够了。集线器的作用是在需要对信号放大时对其放大,然后传至所有其它插上集线器的设备。问题在于,一条只希望传给某台特定主机的消息,被传给了成百上千台网络上的主机。 + +网络交换机是更为智能版的集线器。交换机使用内容可寻址存储器(Content Addressable Memory, CAM), 因此可以记住设备所插入的端口。思科公司生产的交换机被设计可用于从小型机构到有数千台设备的大型企业网络。 + +交换机的基本功能是利用设备的 MAC 地址(第二层)和 IP 地址(第三层)来运行,它们也能完成更为复杂的一些工作,比如包括基于 permit/deny、协议及端口号(第四层),还有综合各层及其它方面的策略和规则的处理列表(porcessing lists)。 + +早期版本的交换机又被叫做网桥。网桥查看数据帧的源端口和 MAC 地址,以建立一个表并做出转发决定。在网桥上,有相应软件来访问这个表,在交换机上,则是由硬件(专用集成电路, Application Specific Integreated Chips, ASIC)去访问 CAM 表。因此交换机可以看成是一台多端口网桥。 + +采行交换机可以将你的网络划分成更小的、更可管理的部分(就是网段,segments)。进而允许单位内部的不同部门,比如人力资源、财务、法务等等,得以同时在各自的网段上工作,这是十分有用的,因为同一部门的设备大部分时间都是用于各自之间的通信。 + + +图一、思科 2960 交换机 + +每台设备都连接到交换机的一个接口上,这样的接口被称为“端口(port)”。常见的接口速度为 100Mbps 或 1000Mbps(又叫做 1Gbps)。通常有用于连接到另一交换机的光纤端口。每台交换机又有各自的管理端口,用于连接计算机,完成初始配置并获得通过网络进行维护的访问能力。 + +图二展示的是一台思科 2960 交换机的近景。2960 系列有多个型号,以满足从小型到中型企业的需求。 + + +图二、交换机接口类型 + +通过交换机,你还可以更好地使用 IP 电话,因为交换机端口能够通过端口为其供电(使用 PoE 接口)。基本的网络交换机用于: + +- 连接诸如打印机和 PC 这样的网络设备 +- 赋予网络服务器和路由器网络访问 +- 使用 VLAN 对网络进行划分 + +VLAN 就是虚拟局域网。 + +__路由器__ + +作为一名思科工程师,你将耗费大量时间来对路由器进行安装、配置以及故障排除。为此,CCNA 大纲超过半数的内容都是用于学习路由器配置的。 + +路由器(如图三所示)是用于建立网络的设备。与负责同一网络上的设备相互通信的交换机不同,路由器实现不同网络上的设备之间的通信。老旧型号的路由器上只有端口,这些端口都是物理内建与其中,固定在主板上的。这样的路由器仍然时不时的可以见到,但现代网络需要路由器具备 IP 电话、交换及安全以及能够连接到不同类型电讯公司的功能。因此,路由器是模块化的了,这就是说你有路由器机架和一些空着的插槽,能够连接大量的路由或交换模块。 + + +图三、一台模块化路由器,右边有一个空着的插槽 + +__怎样在图表中表示网络__ + +所有网络工程师都需要一种通用的方法来进行沟通,尽管在不同企业和电讯公司会用到不同的方法。如果我必须要就我的网络拓扑向你征询设计或安全方面的建议,比起我随手画出的来,如有某种一致认可的格式,肯定会来得更好。CCDA(Cisco Certified Design Associate, 思科认证的设计助理) 考试中有更多关于网络拓扑方面的知识。 + +下面是一些在你作为网络工程师将会遇到的那些网络设备的符号。 + + + + +路由器,routers + + +交换机,switch + + +有防火墙的路由器 + + +无线路由器 + + +多层交换机 + + +云--电讯端设备 + + +终端设备 -- 一台 PC/串行线/以太网连接 + + +IP 电话 + + +防火墙 + +### 局域网和广域网拓扑 + +拓扑是指设备以何种方式进行安排,以实现通信。会因设备使用的通信协议、造价、地理分布及诸如考虑主要线路的失效所需的冗余需求等其它因素,而确定拓扑。 + +你也会注意到,物理拓扑和逻辑拓扑通常会有不同。物理拓扑是你所看到的网络的样子,逻辑拓扑是网络自身的样子。下面是最为常见的拓扑类型。 + +__点对点(point-to-point)__ + +此种拓扑主要用在广域网中。一条点对点链路即是简单的一台设备到另一设备的连接。你可以在两台设备之间再增加一条连接,但如果设备本身失效的话,你仍将失去连通性。 + + +图1.4 点对点拓扑 + +__总线拓扑__ + +伴随初代以太网的建立,诞生了此种拓扑,所有设备都必须连接到一条粗同轴线(a thick cable),这条粗同轴线被称为主干(the backbone)。如主干失效,则网络就会失效。如一条连接设备主干的同轴线失效,则只有该设备将失去连接。 + + +图1.5 总线拓扑 + +__星形拓扑__ + +这或许是你将遇到的最为常见的拓扑。每台网络设备都被连接到一台中心集线器或交换机。如果其中一台设备的线缆失效,则只有该设备会失去连接。 + + +图1.6 星形拓扑 + +__环形拓扑__ + +令牌环网络(token ring networks)和光纤分布式数据接口网络(Fiber Distributed Data Interface, FDDI)网络使用此种拓扑,而两种网络在多年前就已被弃用了。 + +图1.7 令牌环拓扑 + +FDDI 网络中会用到双环连接的环形拓扑,以提供在一个环失效时的冗余。 + + +图1.8 双环拓扑 + +__网状拓扑__ + +在不容许出现故障时间(downtime)时,就要考虑使用此种拓扑。完全的网状网络中每台设备都有一条到其它设备的连接。这种方案一般用在广域连接上。 + + +图1.9 完全的网状拓 + +通常这样的方案是非常费钱的。为此,会考虑采用部分网状拓扑。此时,一台设备到其它设备之间将会有一跳(hops)或几跳,它们之间会有一台以上的路由器。 + + +图1.10 部分网状拓扑 + +__辐射状拓扑(Hub-and-Spoke)__ + +因为设备造价、广域网连接和带宽租用成本两原因,商业公司通常采用这种拓扑。一台性能强大的路由器通常会安放到位于公司综合的中心(hub)。而分支(spokes)代表公司的各分支机构,只需不那么强大的路由器。这种拓扑显然有着一些问题;但仍是广泛使用的拓扑。在帧中继(Frame Relay)内部分,我们会相信讨论这种拓扑,因为由它所引出的路由问题,占了 CCNA 考试大纲很很大篇章。 + + +图1.11 辐射状拓扑(Hub-and-Spoke Topology) + +__物理和逻辑拓扑的关系__ + +在你能看到网络设备时,你看到的就是物理拓扑。这会产生误导,比如明明看起来网络是以星形样式布线的,实际上确是以环形逻辑方式运行。环形网络就是一个极好的例子。尽管流量沿在流转,所有设备却是插入的一台集线器。在令牌环集线器中实际上有个环,只是你不能从外面看到,就如同下图 1.12 所示。 + + +图1.12 环是在集线器内部 + +考试中你可能会要求从物理上和逻辑上去区分不同的网络。记住物理拓扑是你看到的网络,而逻辑拓扑是网络本身所见到的网络。表 1.1 对其进行了总结。 + +表 1.1 -- 物理和逻辑拓扑 + +<table style="width: 100%"> +<tr> +<th>拓扑</th><th>物理</th><th>逻辑</th> +</tr> +<tr> +<td>总线</td><td>总线</td><td>总线</td> +</tr> +<tr> +<td>星形</td><td>星形</td><td>总线</td> +</tr> +<tr> +<td>令牌环</td><td>星形</td><td>环形</td> +</tr> +<tr> +<td>点对点</td><td>总线</td><td>总线</td> +</tr> +<tr> +<td>FDDI</td><td>环形</td><td>环形</td> +</tr> +</table> + +## OSI 和 TCP 模型 + +开放标准互连(Open Standards Interconnection, OSI)是有国际标准化组织创建的。伴随技术喷发,网络设备和网络软件行业兴起了几家巨头,包括思科、微软、Novell、IBM、惠普、苹果以及其它几家公司。每家都有自己的线缆和端口类型,允许各自的商业性协议。此时,如你从一家买路由器、另一家买交换机,又从别家买服务器,就会出现兼容性问题。 + +有一些处理这些问题的通容办法,比如在网络上部署网关来转换不同的协议,这会导致性能上的瓶颈(比如网络慢速部分)并会令到故障排除十分困难和费时。最终,厂商们不得不达成一个在各自产品上都能工作的通用标准,一套叫做 TCP/IP 的免费协议包。最后,那些未能采行 TCP/IP 的厂商失去市场份额,走向破产。 + +ISO 创建出 OSI 模型,以助力于各厂商就通用标准达成一致,实现厂商之间的兼容。此模型包括了将总多网络功能分解为一套逻辑分层,或通俗地称为层的东西。各层只需完成其特定的一些功能,比如说你的公司专注于防火墙,那么这些防火墙将自然地与其它厂商的设备一起工作。 + +此模型的优势在于每件设备设计用来出色完成一个角色,而非不充分地完成多个角色。客户可以根据其解决方案选出最好的设备,而不用死栓在一家厂商那里。同时故障排除也变得更为容易,因为确定的出错可被追踪到具体的某层。 + +OSI 模型将所有网络功能划分为七个不同的层。该层次化模型从第七层一路去往第一层。那些离用户更近、更为复杂的功能,在顶部,一直到处于底层的网络线缆规格,如同表 1.2 所示。 + +表 1.2 OSI 模型 +<table> +<tr> +<th>层 #</th><th>层名</th> +</tr> +<tr><td>7</td><td>应用层,Application</td></tr> +<tr><td>6</td><td>表示层, Presentation</td></tr> +<tr><td>5</td><td>会话层, Session</td></tr> +<tr><td>4</td><td>传输层, Transport</td></tr> +<tr><td>3</td><td>网络层, Network</td></tr> +<tr><td>2</td><td>数据链路层, Data Link</td></tr> +<tr><td>1</td><td>物理层, Physical</td></tr> +</table> + +"**A**ll **P**eople **S**eem **T**o **N**eed **D**ata **P**rocessing" + +在数据为通过物理网络介质传输而自顶层传至底层时,数据被放入不同的逻辑数据套盒子。尽管我们常把这些数据盒子称作“包(packets)”, 实际上根据其处于 OSI 不同的层而有不同的名称(如图 1.13 所示)。从 OSI 模型往下的数据处理,叫做封装(见图 1.13)。而往上的处理中从盒子里取出数据的过程,叫做解封装。 + + +图 1.13 -- 封装 + +CCNA 考试要求你理解 OSI 模型,以及各层有哪些应用和协议。同时也要求你能够运用 OSI 层次化方法到故障排除中。 + +__第七层 -- 应用层__ + +这是到你我这些终端用户最近的层。应用层并非操作系统,但它通常提供了诸如 e-mail(SNMP 以及 POP3)、web 浏览(使用 HTTP)、以及文件传输服务(使用 FTP)。应用层决定了资源的可用性。 + +__表示层__ + +表示层将数据提供给应用层。多媒体技术工作在这一层,你可以想到 MP4、JPEG、GIF 等等。而加密、解密以及数据压缩都发生在这一层。 + +__会话层__ + +会话层的角色是建立、管理及中断设备之间的会话。这些动作发生在逻辑链路上,而真正干的事情是将两个软件应用程序连接起来。SQL、RPC 以及 NFS 都工作于会话层。 + +__传输层__ + +传输层的角色是将来自更高层的数据分拆成被称为数据段(segments)的更小片。虚电路(virtual circuits)在这里建立,在设备之间能够通信之间有赖于虚电路的建立。 + +在数据得以跨网络传输前,传输层需要确认多少数据能发往远端设备。这取决于端到端链路的速率和可靠性。如你有一条高速链路,而终端用户只有一条低速链路,数据仍然需要以较小数据块进行发送。 + +以下是三种控制数据流的方法: +* 流控 flow control +* 窗口机制 windowing +* 通告机制 acknowledgements + +**流控** + +如发往接收系统的信息多于它所能处理的量时,它将请求发送系统暂停一段时间。这一般发生在一段使用宽带而另一端使用拨号上网的时候。这个用于通知其它设备停止的包叫做源抑制消息(a source quench message)。 + + +图 1.14 -- 流控 + +**窗口机制** + +窗口机制下,每个系统就能在收到应答(acknowledgement)前发送多少数据达成一致。"窗口"随着数据的传输时开时合,以维持一个持续的数据流。 + + +图 1.15 -- 窗口机制 + +**通告机制** + +在收到一定数量的数据段后,接收端需要就这些数据段的安全抵达和顺序正确,通告发送端。 + + +图 1.16 -- 通告机制 + +这些都是在一个叫做三次握手(a three-way handshake)的过程中达成一致(见图 1.17)。你要发出一个包来建立会话。第一个包叫做同步(synchronise, SYN)包。远端设备以同步应(a synchronise acknowledgement, SYN-ACK)包予以回应。第三步的应答包(acknowledgement, ACK)的发出标志着会话的建立。这都是通过 TCP 业务完成的。 + + +图 1.17 -- 三次握手 + +传输层包含了好几个协议,其中最熟知的是传输控制协议(Tranmission Control Protocol, TCP)和用户数据报协议(User Datagram Protocol, UDP), 它们都是 TCP/IP 协议包的组成部分。这个协议包因为是互联网所使用的标准而相当出名。**TCP 是面向连接的协议**。它使用了三次握手、窗口机制以及其它技巧来保证数据安全地到达其目的地。有许多协议都使用了 TCP, 比如 Telnet、HTTPS 以及 FTP(尽管 FTP 位于应用层,它确实使用了 TCP)。 + +**UDP 是一个无连接协议(a connectionless protocol)**。它在对数据包进行编号后就发往目的地了。它绝不会管这些数据包是否安全抵达,也绝不会在发送数据包前建立一条连接。在数据不是那么重要,应用开发者觉得信息总是可以在未能到达目的地时重新发送时,往往采用 UDP。 + +那么为什么要用到 UDP 呢? TCP 协议本身会消耗许多网络的带宽,甚至在数据还没发送时,为建立其连接,也要往复发送很多流量。这都会耗去一些宝贵的时间和网络资源。UDP 数据包比起 TCP 包要小很多,在无需真正可靠连接时,它是是否有用的。使用到 UDP 的协议有 TFTP 等。 + +__第三层 -- 网络层__ + +网络层接手来自传输层的数据段,将其拆分为叫做数据包的更小单位。许多网络工程师不管在 OSI 的哪层,都把数据叫做包,这也是可以的。但是,请记住,技术上说只有在网络层,才可以叫包。 + +**网络层必须确定从一个网络到另一网络的最有路径**;为此,路由器工作在该层。路由器在此采用逻辑寻址,而 TCP/IP 的寻址方式是 IP 寻址,稍后会讲到。 + +__数据链路层__ + +数据链路层将数据包拆分成帧这种更小的单位。二层交换机工作在这层,使用硬件地址,或是 MAC 地址,它们之所以能够更快地交换流量,是因为无需查看 IP 地址和路由表。广域网协议工作在第二层,包括 HDLC、ISDN 以及 PPP。以太网也是第二层的。 + +为了向其上下两层提供接口,数据链路层又分了两个子层,分别是逻辑链路控制子层(the Logical Link Control, LLC), 以及介质访问控制子层( the Media Access Control, MAC)。逻辑链路控制子层与网络层交互,介质访问控制子层与物理层交互。 + +__物理层__ + +在这层上,帧被转换为位,以将其放到线路上。这些位是由电脉冲构成,读作“开”“关”位,或是二进制的 1 和 0。集线器工作于此层,在这里你会找到线缆规格,比如 RJ45。 + +### OSI 故障排除 + +在对你的网络进行故障排除时,采用层次化方法是十分有效的。至此,你唯一要明确的是从哪个方向上运用 OSI 协议栈,是自顶向下呢,还是自底往上,抑或采用分而治之、各个击破方法,这又涉及到聚焦网络的那些部分。 + +我建议在初期采用自底向上的方法,这在通常问题处在较低的层上,比如因为线缆松掉或破损、或者不正确的 IP 地址时,你无需浪费时间在检查应用上。在你有更多经验后,在处理某些故障现象时采用各个击破方法会更为快速。在从底层往上处理问题时,你大概会做下面这些事情: + +第一层 -- 所有线缆都恰当地插入到端口了吗? 还是有的松掉了? 网线头已经弯掉或是掉来了吗?如果网线有问题,设备上的指示灯会呈琥珀色,而非正常的绿色。是有人没有往接口上添加正确的速率吗?以太网端口速率又被设置正确吗?接口有给网络管理员放开吗? + +第二层 -- 接口有采用正确的协议,比如 Ethernet/PPP/HDLC, 以便能够与另一端保持一致吗? + +第三层 -- 接口有使用正确的 IP 地址以及子网掩码? + +第四层 -- 有使用正确的路由协议吗?从路由器通告的网络是正确的吗? + +在完成本书的实验过程中,你会见识到如何采行这些步骤。专家们会认为一些第四层问题是在第三层,而第二层问题实际上是在第一层,如此等等。我个人偏好于聚焦于使用层次化故障排除这一方法本身,而不是就问题所在的层去探讨。 + +### TCP/IP、DoD 模型 + +TCP/IP 模型是另一个框架,作为 OSI 模型的替代。它是由 先进防务研究计划署(the Defense Advanced Research Projects Agency,DARPA)创建的四层或五层模型。它就是为人熟知的国防部模型。自顶向下的四层分别是: + +4 - 应用, Application [Telnet/FTP/DNS/RIP] +3 - 传输/主机到主机,Transport/Host-to-Host [UDP/TCP/ICMP] +2 - 互联网/网际网络, Internet or Internetwork [IPSec/IP] +1 - 链路/网络接口,Link/Network Interface [Frame Relay/Ethernet/ATM] + +TCP/IP 模型已由四层更新为五层,所以你会在考试中被问到有关五层 TCP 模型(a five-layered TCP model)的问题。较高的层离用户较近,而较低的层描述了其它系统交互时所采用的技术或协议。五层 TCP 模型如下所示: + +5 - 应用, Application [Telnet/FTP/DNS/RIP] +4 - 传输/主机到主机,Transport/Host-to-Host [UDP/TCP/ICMP] +3 - 网络层,Network [IPSec/IP] +2 - 数据链路层,Data Link [Ethernet/Frame Relay/PPP] +1 - 链路/网络接口/物理,Link/Network Interface/Physical [Bits on the wire] + +五层的 TCP 模型具有更细的粒度,能更精确地表示数据放在线路之前所发生的事情。比如在第二层处,进行了数据封装以及寻址(如数据链路寻址)。考试中思科偏向选择五层模型。 + +数据会如同上述的 OSI 模型那样在自应用层往物理层的途中进行封装,如表 1.3 所示: + +表 1.3 五层的 TCP 模型 +<table> +<tr> +<th>应用,Application</th> +<td>仍未封装的数据,</td> +<td></td> +</tr> +<tr> +<th>传输,Transport</th> +<td>将 TCP 头部添加到数据上,TCP header added to the data</td> +<td><b>段</b>,Segment</td> +</tr> +<tr> +<th>网络,Network</th> +<td>IP 头部被添加上去(包括 IP 地址), IP header added(including IP address)</td> +<td><b>包</b>,Packet</td> +</tr> +<tr> +<th>数据链路,Data Link</th> +<td>添加数据链路头部(数据链路地址), Data Link header added(Data Link address)</td> +<td><b>帧</b>,Frame</td> +</tr> +<tr> +<th>物理,Physical</th> +<td>转变成电信号, Turned into electrical signals</td> +<td>线路上的<b>位</b>,Bits on the wire</td> +</tr> +</table> + +你可能会被问及 TCP/IP 模型与 OSI 模型的对应关系。如表 1.4 所示: + +表 1.4 -- TCP/IP 模型到 OSI 模型的对应关系 + +<table> +<tr> +<th>层号,Layer #</th> +<th>OSI 模型</th> +<th>TCP 模型</th> +</tr> +<tr> +<td>7</td> +<td>应用, Application</td> +<td rowspan="3">应用, Application</td> +</tr> +<tr> +<td>6</td> +<td>表示, Presentation</td> +</tr> +<tr> +<td>5</td> +<td>会话, Session</td> +</tr> +<tr> +<td>4</td> +<td>传输, Transport</td> +<td>主机到主机, Host to Host</td> +</tr> +<tr> +<td>3</td> +<td>网络, Network</td> +<td>网际网络, Internetwork</td> +</tr> +<tr> +<td>2</td> +<td>数据链路, Data Link</td> +<td rowspan="2">网络接口, Network Interface</td> +</tr> +<tr> +<td>1</td> +<td>物理, Physical</td> +</tr> +</table> + +思科选择了新的 TCP 模型而不再是 OSI 模型作为网络框架,但仍要求你理解 OSI 模型,所以在大纲中保留了 OSI 模型。 + +表 1.5 新旧 TCP 模型对比 +<table> +<tr> +<th>旧 TCP 模型, Old TCP Model</th> +<th>层, Layer</th> +<th>新 TCP 模型, New TCP Model</th> +</tr> +<tr> +<td>应用, Application</td> +<td>5</td> +<td>应用, Application</td> +</tr> +<tr> +<td>传输, Transport</td> +<td>4</td> +<td>传输, Transport</td> +</tr> +<tr> +<td>互联网, Internet</td> +<td>3</td> +<td>网络, Network</td> +</tr> +<tr> +<td rowspan="2">链路/网络接口, Link/Network Interface</td> +<td>2</td> +<td>数据链路, Data Link</td> +</tr> +<tr> +<td>1</td> +<td>物理, Phycial</td> +</tr> +</table> + +## TCP/IP + +TCP/IP 是一套完整的,可以实现通过网络通信的协议和服务套件。诸如 IPX/SPX 这样的 TCP/IP 早期竞争者也是完整的,却由于它们的应用量极少且缺乏后续演进,而消亡了。 + +TCP/IP 是由互联网工程任务组(the Internet Engineering Task Force, IETF)所维护的一套可自由获取和免费使用的标准,用于端端设备连通性的建立(it is used for end-to-end device connectivity)。通过请求评议(Request fo Comments, RFCs)的提交方式,它得以开发和改进。请求评议是众多工程师提交的,用于将一些新点子传送给其他成员审核的一系列文档。2663 号请求评议(RFC 2663)就是一个关于网络地转换(Network Address Translation, NAT)的实例。IETF 采纳了这些请求评议作为互联网的标准。你可以在这里了解更多的 IETF 和 RFCs 的知识: + +[www.ietf.org/rfc.html](http://www.ietf.org/rfc.html) + +TCP/IP 提供了很多业务,那些不包含在 CCNA 大纲中的在本书不会涉及。也会忽略那些其它部分如 DNS 和 DHCP 中的内容。以下部分是 TCP/IP 中的基础部分。因为 CCNA 并是一个基础的网络考试,所以它要求你已经对 CompTIA 的 Network+ 考试内容有很好的掌握。 + +### 传输控制协议,Transmission Control Protocol, TCP + +TCP 运行于 OSI 模型的传输层。提供了一种用于网络设备间**可靠数据传输的面向连接**服务。TCP 提供流控、队列(sequencing)、窗口机制以及错误侦测。它将一个 32 位的头部附加到应用层数据,接着就封装到 IP 头部。RFC 793 描述了 TCP。常见的 TCP 端口如下所示: + +* FTP 数据 -- 20 +* FTP 控制 -- 21 +* SSH -- 22 +* Telnet -- 23 +* SMTP -- 25 +* DNS -- 53(也使用 UDP) +* HTTP -- 80 +* POP3 -- 110 +* NNTP -- 119 +* NTP -- 123 +* TLS/SSL -- 443 + +### 互联网协议,Internet Protocol, IP + +IP 协议工作于 OSI 模型的网络层。它是**无连接**的,负责将数据进行跨网络传输。IP 寻址是互联网协议的一项功能。IP 检查每个数据包的网络层地址,以此确定该数据包到达目的地的最优路径。RFC 791 对 IP 进行了讨论。 + +### 用户数据报协议,User Datagram Protocol, UDP + +UDP 也是工作于 OSI 模型的网络层。它不像 TCP 那样事先建立起连接,在网络设备之间传输信息。UDP 是**无连接的**,只是尽力投送,不保证数据抵达目的地。UDP 像是发出一封没有退回地址的信件。你只知道数据发送出去了,而永远不知道是否送到。 + +比起 TCP,UDP 消耗更少的带宽,适合用于相比可靠性和有保证来说,低延迟更为重要的应用。TCP 和 UDP 都是由 IP 承载的。RFC 768 对 UDP 进行了叙述。常见的 UDP 端口号有以下这些: + +* DNS -- 53 +* TFTP -- 69 +* SNMP -- 161/162 + + +### 文件传输协议,File Transfer Protocol, FTP + +文件传输协议工作于应用层,负责透过一条远程链路**可靠地**传数据。因为它是可靠的,所以使了 TCP 来传输数据。 + +你可以使用```debug ip ftp```命令来对 FTP 流量进行调试。 + +FTP 使用了 ```20``` 和 ```21``` 号端口。通常,自客户端发起的到 FTP 服务器的第一次连接是在 ```21```号端口上。随后的数据连接可以是从 FTP 服务器的 ```20```号端口上离开,或者从客户端的随机端口到 FTP 服务器的 ```20``` 端口的连接建立。关于主动(active)和被动(passive)FTP 的内容,CCNA 考试不要求。 + +### 简单的文件传输协议, Trivial File Transfer Protocol, TFTP + +如需不那么可靠的数据传输时,TFTP 提供了一种好的替代。TFTP 使用 UDP 端口 69, 提供了一种**无连接的**数据传输方法。TFTP 可能会因为需要指定文件的位置而难于使用。 + +你需要有一个客户端(这里的路由器)以及 TFTP 服务器,这可以是一台路由器或者 PC,或者是网络上的服务器(最好是在同一子网上),来使用 TFTP。在服务器上要有 TFTP 软件,这样文件才能拉出来并转发给客户端。 + +> <b>真实世界:</b>将启动配置(startup configuration)以及 IOS 备份到网络上的一台服务器上,是一个非常好的主意。 + +TFTP 在思科路由器上用到很多,用来备份配置以及升级路由器。下面的命令执行这些功能: + +`Router#copy tftp flash:` + +会提示你输入新的 flash 文件所在的其它主机的 IP 地址: + +`Address or name of remote host []? 10.10.10.1` + +然后你必须输入其它路由器上的 flash 镜像的文件名: + +``` +Source filename []? / c2500-js-1.121-17.bin +Destination filename [c2500-js-1.121-17.bin]? +``` + +如你有一个旧版本的 IOS, 你会收到是否要在拷贝前擦除路由器 flash 的提示,之后文件将被传输。当路由器再次启动是,你的新 flash 镜像就可使用了。 + +其它可选命令有在保存备份时用到的 `copy flash tftp` 或者在备份当前配置文件时用的 `copy running-config tftp`。 + +你可以使用`debug tftp` 命令来调试 TFTP 流量。 + +### 简单邮件传输协议,Simple Mail Transfer Protocol, SMTP + +SMTP 定义了邮件怎样从客户端发往邮件服务器。使用 TCP 来确保一条可靠的连接。SMTP 邮件以三种不同方式从 SMTP 服务器上拉出,多数网络都将 SMTP 作为一种邮件投递服务。POP3 是另一种流行的方式。POP3 是一个将邮件从服务器传至客户端的协议。SMTP 使用 TCP 端口 25。 + +### 超文本传输协议,Hyper Text Transfer Protocol, HTTP + +HTTP 使用 TCP (80 端口)来将文本、图形以及其它多媒体文件从网页服务器发往客户端。此协议让你可以查看网页,位于 OSI 模型的应用层。HTTPS 是 HTTP 的安全版本,使用了安全的套接字层技术(Secure Socket Layer, SSL),或者传输层安全技术(Transport Layer Security, TLS)来在发送前加密数据。 + +你可以用`debug ip http`命令对 HTTP 流量进行调试。 + +### 远程登陆 Telnet + +Telnet 使用 TCP (端口 23)来允许建立一条到某台网络设备的远程连接。在后续实验中你将对其了解更多。因为 Telnet 是不安全的,所以现今很多管理员都使用 SSH, SSH 使用 TCP 端口 22, 作为一个确保安全连接的替代。 Telnet 是唯一一个能够对 OSI 模型全部七层进行检查的工具,如你能够 Telnet 到某个地址,那么所有七层都是正确工作的。如你不能 Telnet 到另一设备,则并不能说明存在网络问题。那有可是存在一台防火墙,或是有访问控制列表(an access control list)特意阻止了连接,或是设备的 Telnet 没有打开。 + +需要事先设置好 VTY 线路的认证方式,方能远程连接到这台交换机或路由器上。如你不能连接上某台设备,你可以输入 `Ctrl+Shift+6` 然后输入`X`来退出。要退出一个活动的 Telnet 会话,你可以输入 `exit` 或者 `disconnect`。 + +用`debug telnet`命令来调试 Telnet。 + +### 互联网控制消息协议,Internet Control Message Protocol, ICMP + +ICMP 是一个在某网络上用 IP 数据包(或数据报)来报告问题或故障的协议。ICMP 是那些任何要在其网络上采用 IP 技术的企业所需要的。在一个 IP 数据包发生问题时,此数据包将被销毁,同时生成一条 ICMP 消息并发送给发出该数据包的主机。 + +如同 RFC 792 所定义的那样,ICMP 在 IP 数据包内部投递消息。ICMP 最流行的使用是发出一个 `ping` 数据包来测试远端主机的连通性。在一台网络设备上运行`ping`命令时,便生成一个请求回应的数据包(a echo request packet), 发往目的设备。目的设备收到该请求回应后,生成一条回应应答。 + +因为这些 ping 包有一个生存时间的字段(a Time to Live, TTL), 它们提供了一个很好的网络延迟数据。下面的 ping 输出来自一台桌面 PC: + +``` +C:\ping cisco.com + +Pinging cisco.com [198.133.219.25] with 32 bytes of data: + +Reply from 198.133.219.25: bytes=32 time=460ms TTL=237 +Reply from 198.133.219.25: bytes=32 time=160ms TTL=237 +Reply from 198.133.219.25: bytes=32 time=160ms TTL=237 +Reply from 198.133.219.25: bytes=32 time=160ms TTL=237 + +Ping staticstics for 192.133.219.25: + Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), +Approximate round trip times in milli-seconds: +Minimum = 160ms, Maximun = 460ms, Average = 240ms +``` + +在上述输出中,ping 数据包是 32 字节长,时间字段报告响应耗时的毫秒数,TTL 是存活时间字段(数据包在多少毫秒后过期)。 + +思科路由器的 ping 命令有着复杂的参数,提供了更细的粒度,你可以指定指定 ping 发出的源地址,发出多少次 ping,ping 数据包的大小,以及其它参数。此特性在测试中是很有用的,在后面的实验部分用到很多次,如下面的输出所示: + +``` +Router#ping <- press Enter here +Protocol [ip]: +Target IP address: 172.16.1.5 +Repeat count [5]: +Datagram size [100]: 1200 +Timeout in Seconds [2]: +Extended commands [n]: yes +Source address: <- you can specify a source address or interface here +Type of service [0]: +Set DF bit in IP header? [no]: yes +Data pattern [0xABCD]: +Loose, Strict, Record, Timestamp, Verbose [none]: +Type escape sequence to abort. +Sending 5, 1000-byte, ICMP Echos to 131.108.2.27, timeout is 2 seconds: +U U U U U +Success rate is 0% percent, round-trip min/avg/max = 4/6/12 ms +``` + +下面是其它几个表示回应 ping 数据包的符号所表示的意义: + +* ! -- 每个回应有一个感叹号 +* . -- 一次超时一个句点 +* U -- 目的主机不可达 +* N -- 网络不可达消息 +* P -- 协议不可达消息 +* Q -- 源抑制消息 +* M -- 无法分片 +* ? -- 未知数据包类型 + +通过 `Ctrl+Shift+6` 并输入`X`来终止一个 ping 会话。 + +RFC 1700 中定义了 ICMP 数据包。CCNA 大纲不包括所有代码和名称的内容。 + +在故障排除时,许多初级网络工程师会误用 ping 工具。ping 失败可以说明网络有问题,也可能是由于 ICMP 流量在网络上被阻止了。应为 ping 常会成为一种网络攻击的方法,ICMP 通常会被阻止。 + +### 追踪路由,Traceroute + +Traceroute 可以用来测试网络的连通性,是一个广泛使用的工具,它又被用来做测量和管理。Traceroute 通过发出一些带有小的 TTL 字段 UDP 数据包,然后等待 ICMP 超时回应,以此来跟随目的 IP 的数据包。在 Traceroute 数据包的进行过程中,记录就会一跳接一跳地显示出来。每跳会测试 3 次。一个星号(*)表明该跳超出了时间限制。 + +思科路由器的命令是`traceroute`, Windows 计算机是`tracert`。如下所示: + + + +``` +C:\Documents and Settings\pc>tracert hello.com +Tracing route to hello.com [63.146.123.17] +over a maximum of 30 hops: +1 81 ms 70 ms 80 ms imsnet-cl10-hg2-berks.ba.net [213.140.212.45] +2 70 ms 80 ms 70 ms 192.168.254.61 +3 70 ms 70 ms 80 ms 172.16.93.29 +4 60 ms 81 ms 70 ms 213.120.62.177 +5 70 ms 70 ms 80 ms core1-pos4-2.berks.ukore.ba.net [65.6.197.133] +6 70 ms 80 ms 80 ms core1-pos13-0.ealng.core.ba.net [65.6.196.245] +7 70 ms 70 ms 80 ms transit2-pos3-0.eang.ore.ba.net [194.72.17.82] +8 70 ms 80 ms 70 ms t2c2-p8-0.uk-eal.eu.ba.net [165.49.168.33] +9 151 ms 150 ms 150 ms t2c2-p5-0.us-ash.ba.net [165.49.164.22] +10 151 ms 150 ms 150 ms dcp-brdr-01.inet.qwest.net [205.171.1.37] +11 140 ms 140 ms 150 ms 205.171.251.25 +12 150 ms 160 ms 150 ms dca-core-02.inet.qwest.net [205.171.8.221] +13 190 ms 191 ms 190 ms atl-core-02.inet.qwest.net [205.171.8.153] +14 191 ms 180 ms 200 ms atl-core-01.inet.net [205.171.21.149] +15 220 ms 230 ms 231 ms iah-core-03.inet.net [205.171.8.145] +16 210 ms 211 ms 210 ms iah-core-02.inet.net [205.171.31.41] +17 261 ms 250 ms 261 ms bur-core-01.inet.net [205.171.205.25] +18 230 ms 231 ms 230 ms bur-core-02.inet.net [205.171.13.2] +19 211 ms 220 ms 220 ms buc-cntr-01.inet.net [205.171.13.158] +20 220 ms 221 ms 220 ms msfc-24.buc.qwest.net [66.77.125.66] +21 221 ms 230 ms 220 ms www.hello.com [63.146.123.17] +Trace complete. +``` + +Traceroute 的输出字段有如下定义: + +* ... -- 超时 +* U -- 端口不可达消息 +* H -- 主机不可达消息 +* P -- 协议不可达消息 +* N -- 网络不可达消息 +* ? -- 未知包类型 +* Q -- 收到源抑制(source quench received) + +在你想要对网络连通性进行故障排除时,Traceroute 是一个非常有用的命令。尽管有超出 CCNA 大纲,下面还是对此有更多的说明。 + +Traceroute 以逐步增加 UDP 数据包的 TTL 字段数值方式工作(仅在思科和 Linux 是这样的;微软 Windows 的 tracert 命令使用 ICMP 请求回应数据报,而不是 UDP 数据报来探测), 这些 UDP 数据包将某台主机作为其目的地,并记录下收到的二者之间的那些路由器的回应。 + +每个数据包都有一个 TTL 值,当数据包到达一台路由器时,其 TTL 减 1。第一个数据包的 TTL 值为 1, 当该数据包到第一台路由器时,TTL 降为 0, 此时该路由器将发出一条错误消息(TTL 超时)。此时发出第二个数据包,TTL 设置为 2。当该数据包到达第二台路由器时,就会发出第一台路由器那的错误消息。这个过程持续下去,直到到达目的主机。 + +除了最后一跳外,所有的跳数都将返回一条“TTL 超时”的消息,最后一跳发回的消息将是“目的不可达/端口不可达”,表明它不能处理收到的流量(UDP Traceroute 数据包会将地址设置为一个不存在的端口号,终端主机一般不会去理会)。 + +### 地址解析协议,Address Resolution Protocol, ARP + +有两种寻址方式来鉴别网络主机 -- **IP (或三层) 地址**以及**本地(或数据链路层)地址**。数据链路层地址又叫做 MAC 地址。RFC 826 中定义的地址解析,是指 IOS 从 网络层(或 IP)地址得到数据链路层地址的过程。 + +ARP 将一个已知的 IP 地址解析为 MAC 地址。当主机需要在其网络上传输数据时,它需要知道另一主机的 MAC 地址。主机会检查它的 ARP 缓存,如果没有需要的 MAC 地址,你就发出一条 ARP 广播消息来找到该主机,如图 1.18 所示。 + + +图 1.18 -- 一台主机为找到另一主机 MAC 地址而发出的广播 + +你可以用`debug arp`命令来调试 ARP。 + +为在网络上通信,一条 ARP 条目是需要的。你会看到,在没有需要的 ARP 条目时,就会产生一条广播。理解到路由器和交换机上的 ARP 表在一段时间后(默认 4 小时)就会刷新,是重要的,这是为了节约资源以及防止过时条目的留存。 + +在下面的路由器中,只有一条它自己的快以太网接口 ARP 条目,知道它邻居对其进行了 ping 操作后,因此,头 5 个 ping 数据包(ICMP)将会失败,就像下面的句点后有 4 个感叹号: + +``` +Router#show arp +Protocol Address Age (min) Hardware Addr Type Interface +Internet 192.168.1.1 - 0002.4A4C.6801 ARPA FastEthernet0/0 +- +Router#ping 192.168.1.2 +Type escape sequence to abort. +Hardware Addr Type Interface +Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds: +.!!!! ← first packet fails due to ARP request +Success rate is 80 percent(4/5),round-trip min/avg/max = 31/31/31 ms +Router#show arp +Protocol Address Age (min) Hardware Addr Type Interface +Internet 192.168.1.1 0002.4A4C.6801 ARPA FastEthernet0/0 +Internet 192.168.1.2 0 0001.97BC.1601 ARPA FastEthernet0/0 +Router# +``` + +### 代理 ARP + +代理 ARP(见图 1.19)是在 RFC 1027 中定义的。代理 ARP 令到位于一个以太网络上的主机,在无需知道路由的情况下,能够与其它子网或网络的主机进行通信。 + +路由器默认不会转发 ARP 广播。路由器不转发广播,但如果它知道怎样去找到该主机(比如它们有一条到该主机的路由)的话,它们将会把自己的 MAC 地址发给广播主机。这个过程就叫做代理 ARP,此技术让像是直接到达远端主那样发送数据。路由器将 MAC 进行 替换后,将数据包转发给恰当的下一跳。 + +`ip proxy-arp`命令在思科路由器上是默认开启的。 + + +图 1.19 -- 路由器采用代理 ARP 技术以允许主机能够连接 + +对上述知识点进行拓展,考试要求理解数据包来回过程中寻址的改变。在数据包在网络上来回穿越的时候,两台终端设备都需要有某种方法来进行通信,其间的那些设备也要能交换数据包的下一跳地址才行。代理 ARP 当然给出了解决办法。数据包的 IP 地址始终保持不变,但为了让数据包能够传到下一跳,帧的 MAC 地址在设备之间发生了改变。 + +在下面的图 1.20 中,数据帧将离开 HOST A, 它的 IP 地址是 192.168.1.1, 目的 IP 地址是 172.16.1.2, 源 MAC 地址为 AAAA:AAAA:AAAA, 目的 MAC 地址是 AAAA:AAAA:BBBB。路由器 R1 将保留 IP 地址,而将源地址修改为 AAAA:AAAA:CCCC。而在数据包离开路由器 R2 前往 HOST B 之前,IP 地址仍然不会改变,源地址将是 AAAA:AAAA:DDDD, 同时目的地址为 AAAA:AAAA:EEEE。 + + +图 1.20 -- 数据包在设备间往复时,MAC 地址的改变 + +### 反向地址解析协议,Reverse Address Resolution Protocol, RARP + +RARP 将一个已知的 MAC 地址映射到一个 IP 地址。像是无盘工作站(又叫做瘦客户机)那样的主机,在它们启动时知道自己的 MAC 地址。它们就会使用 RARP 来网络上的服务器那里发现自己的 IP 地址。 + +### 无故 ARP, Gratuitous Address Resolution Protocol, GARP + +GARP 是一类特殊的 ARP 数据包。普通主机通常会在链路建立起来时或网络接口开启时发出一个 GARP 请求。这里的“无故(Gratuitous)”是指一种无需 ARP 的 RFC 通过 ,但仍可在某些场合使用的请求/回应。一次无故 ARP 请求就是一个将其 源 MAC 地址、源 IP 以及目的 IP 地址都设置为发出该数据包的机器的 IP 地址的 ARP 数据包。目的 MAC 地址为广播地址 FFFF:FFFF:FFFF。通常,不会回应数据包产生。 + +而一个 GARP 回应是一个没有请求的回应(如你看到一个 GARP 回应, 那就意味着网络上的另一计算机和你的计算机用了相同的 IP 地址)。当 FHRP 协议(比如 HSRP)中出现状态改变时,会用到 GARP,为达到更新第二层 CAM 表的目的。IPv6 章节也会讨论到 GARP。 + +### 简单网络管理协议,Simple Network Management Protocol, SNMP + +SNMP 为众多网络管理业务所使用。一套 SNMP 管理系统中,网络设备将名为陷阱(traps)的消息发送给管理工作站。这会想网络管理员报告任何的网络故障(比如接口故障),或是服务器上 CPU 使用等情况。 + +使用`debug snmp`命令对 SNMP 流量进行调试。SNMP 使用 UDP 端口 161 及 162。 + +### 安全版超文本传输协议,Hyper Text Transfer Protocol Secure, HTTPS + +TLS,以及旧版的 SSL,被用到加固互联网上的通信,是通过采用各种加密方法实的。在电子邮件以及 VoIP,以及访问那些以 http:// 开头的站点时,你会发现这些加密方法。带有 TLS/SSL 的 HTTP(HTTPS)使用 443 端口。 + +__IP 配置命令,IP Configuration Command__ + +这不是一件属于思科的工具,但它你的故障排除工具包中的一部分。命令`ipconfig`是在Windows命令提示符下运行的命令,你可以用到数个命令开关,但可能用得最多的就是 `ipconfig /all` 命令,如下面的屏幕截图那样。 + + +图 1.21 -- ipconfig /all 命令的输出 + +## 线缆和介质,Cables and Media + +作为网络工程师的你,布线及线缆相关的事情将成为日常工作的一部分。你需要知道哪些线应该插入哪些设备,诸多工业限制,以及怎样将设备配置起来使用这些线缆。 + +### 局域网的线缆,LAN Cables + +__以太网线__ + +因为局域网上有着为数众多的线缆和连接头,同时又存在因设备迁移及测试带来的线缆频繁插拔,大多数线缆有关的网络问题都是发生在局域网上,而不会是广域网。 + +以太网线用于将工作站连接至交换机,交换机之间以及交换机与路由器的连接。其规格和速率在近年来有多次修订和提升,这就是说你可以很快用到将今天的标准速率甩得老远的速率,到你的桌面的高速链路也会很快到来。目前的标准以太网线仍然使用 8 条、4 对缠绕的电线,以消除电干扰(electromagnetic interference, EMI),也就是串扰(crosstalk)这种会蔓延到相邻线路上的信号。 + +ANSI/TIA/EIA-568-A 标准中对以太网线的类别进行了定义,有 3 类、5 类、5e 类以及 6 类共 4 个类别。每个类别都有其相应标准、规格以及在限定距离范围内能够达到的数据吞吐速率。3 类以太网线布线可以最高 10Mbps 速率传输数据。5 类布线主要用于快速以太网络,100BASE-TX 以及 1000BASE-T 都是 5 类网线。5e 类布线使用了增强的 100-MHz (100-Mhz-enhanced) 双绞线来组建千兆以太网(GigabitEthernet), 就是 1000Base-T。最后的 6 类布线,每对电线以 250MHz 运作,以提供出改进了的 1000Base-T 的性能。(“1000”表示数据传输速度有多少 Mbps,“Base”代表基带传输--baseband,而“T”则是指双绞线 -- twisted pair)。表 1.6 给出了你所熟悉的一些常见的以太网标准。 + +表 1.6 常见以太网标准 +<table> +<tr> +<th>速率</th> +<th>名称</th> +<th>IEEE 名称</th> +<th>IEEE 标准</th> +<th>线缆类型/长度</th> +</tr> +<tr> +<td>10Mbps</td> +<td>以太网,Ethernet</td> +<td>10BASE-T</td> +<td>802.3</td> +<td>铜线/100米</td> +</tr> +<tr> +<td>100Mbps</td> +<td>快速以太网,FastEthernet</td> +<td>100BASE-T</td> +<td>802.3u</td> +<td>铜线/100米, Copper/100m</td> +</tr> +<tr> +<td>1000Mbps</td> +<td>千兆以太网,GigabitEthernet</td> +<td>1000BASE-LX</td> +<td>802.3z</td> +<td>光纤/5000米,Fibre/5000m</td> +</tr> +<tr> +<td>1000Mbps</td> +<td>千兆以太网</td> +<td>1000BASE-T</td> +<td>802.3ab</td> +<td>铜线/100米, Copper/100m</td> +</tr> +<tr> +<td>10Gbps</td> +<td>万兆以太网,TenGigabitEthernet</td> +<td>10GBASE-T</td> +<td>802.3an</td> +<td>铜线/100米, Copper/100m</td> +</tr> +</table> + +思科喜欢将线缆规格有关的问题偷偷摸摸地放到考试中去,**所以务必要记住这个表格**。 + +__双工, Duplex__ + +在以太网投入使用的早期阶段,同一时间数据只能在一个方向上传输。这是因为那个时候所使用线缆的限制造成的。发送设备在线缆上发送数据前必须等待直到线缆可用,否则将会发生冲突(collision)。因为后来有了不同组别的电线负责发送和接收信号,这就不成问题了。 + +半双工(half duplex)是指数据只能在一个方向上传输,全双工则是数据能够在两个方向上同时传输(见图 1.22)。这是通过使用以太网线内部的外加电线实现的。现在的所有设备都以全双工方式运行,除非是设置为半双工。 + + +图 1.22 -- 双工拓扑,Duplex Topology + +考试中仍然要求你能理解并排除全双工方面的故障;本书后面的第一层和第二层故障排除部分将详细介绍。使用`show interface X`命令就可以轻易地检查接口的双工设置。 + +``` +Switch#show interface FastEthernet0/1 +FastEthernet0/1 is down, line protocol is down (disabled) + Hardware is Lance, address is 0030.a388.8401 (bia 0030.a388.8401) +BW 100000 Kbit, DLY 1000 usec, + reliability 255/255, txload 1/255, rxload 1/255 + Encapsulation ARPA, Loopback not set + Keepalive set (10 sec) + Half-duplex, 100Mb/s +``` + +如果此接口与某台全双工设备连接起来,你将立即看到有错误发生,同时链路流量将极为慢速。你可以在一台真实交换机上执行`show interfaces status`命令,但考试中这条命令可能不会工作,因为像 Packet Tracer 这样的路由器模拟软件仅能运行有限的一些命令。在下面的输出中,你会发现接口 FastEthernet 1/0/2 存在一些问题。 + +``` +Switch#show interfaces status +Port Name Status Vlan Duplex Speed Type +Fa1/0/1 notconnect 1 auto auto 10/100BaseTX +Fa1/0/2 notconnect 1 half 10 10/100BaseTX +Fa1/0/3 notconnect 1 auto auto 10/100BaseTX +Fa1/0/4 notconnect 1 auto auto 10/100BaseTX +Fa1/0/5 notconnect 1 auto auto 10/100BaseTX +``` + +当然要修复这个问题也是十分容易的,像下面这样: + +``` +Switch(config)#int f1/0/2 +Switch(config-if)#duplex ? + auto Enable AUTO duplex configuration + full Force full duplex operation + half Force half-duplex operation +Switch(config-if)#duplex full +``` + +请务必要在真实思科设备上, 或 GNS3 中,或最新版的 Packet Tracer 中去试试这些命令,来记住它们! + +__速率,speed__ + +你可将路由器或交换机的速率保留成自动协商(auto-negotiate), 或者硬性设置为 10Mbps、100Mbps 或者 1000Mbps。 + +像下面这样就可以手动设置速率: + +``` +Router#config t +Router(config)#interface GigabitEthernet 0/0 +Router(config-if)#speed ? + 10 Force 10 Mbps operation + 100 Force 100 Mbps operation + 1000 Force 1000 Mbps operation + auto Enable AUTO speed configuration +``` + +下面的命令是要查看以太网接口的设置: + +``` +Router#show interface FastEthernet0 +FastEthernet0 is up, line protocol is up + Hardware is DEC21140AD, address is 00e0.1e3e.c179 (bia 00e0.1e3e.c179) + Internet address is 1.17.30.4/16 + MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, rely 255/255, load 1/255 + Encapsulation ARPA, Loopback not set, keepalive set (10 sec) + Half-duplex, 10Mb/s, 100BaseTX/FX +``` + +EIA/TIA 的以太网线规格要求网线的末端务必是 RJ45 公头(见图 1.23; 图 1.24 展示了其母头),你可以将网插入路由器/交换机/PC的端口上。 + +图 1.23 -- RJ45 公头 + + +图 1.24 -- RJ45 母头 + +__直通线__ + +以太网线有 8 根,每根都与水晶头上一个针脚连接起来。而每条线与这些针教位置的接法,确定做出来的网线的用途。如果网线两端的接法完全相同,则做出来的网线就叫直通线。这种线用于将**终端设备连接交换机**,或者**连接交换机和路由器**。将网线的两端放在一起对比一看,就知道它们是否是一样的接法。如图 1.25 和 1.26 所示。 + + +图 1.25 -- 对比网线两端 + + +图 1.26 -- 网线两端是一样的 + +__交叉线,crossover cables__ + +通过将网线的两对电线的位置交换一下,就可以用来在无需交换机、集线器的情况下,连接两台 PC 或是两台交换机(较新的网卡的 Auto-MDIX 功能能够自动侦测连接是否需要交叉连接,选择 MDI 或是 MDIX 配置来与链路的另一端恰当匹配)。一端的针脚 1 需要连接到另一端的针脚 3,针脚 2 要连接到针脚 6(见图 1.27)。 + + +图 1.27 -- 针脚 1 到 针脚 3,针脚 2 到针脚 6 + +__翻转线/控制台线, Rollover/Console Cables__ + +所有的思科路由器和交换机都有用于初始设置以及灾难恢复和访问的几个物理端口。这些端口叫做控制台端口,作为思科工程师,你肯定会用到这些端口。你需要一种叫做**翻转线或者控制台线**的特殊类型线缆来连接这个端口(见图 1.28)。有时又称其为扁线(a flat cable), 因为它与一般圆形的网线不同,它是扁的。 + + + +图 1.28 -- 一条典型的翻转线 + + +图 1.29 -- 所有针脚都交换了位置 + +翻转线通常一端有一个 RJ45 接头,另一端是一个 9 针 D 形连接器,设计用于连接 PC 或笔记本电脑的 COM 端口。问题是现今的设备通常有不再有 COM 端口了,因为 COM 端口用得很少很少。不过你可以从电子商店或网上买到 DB9-to-USB 转换器(如图 1.30)。它们带有驱动程序,允许你通过如 PuTTY 或 HyperTerminal 等终端程序,连接到 PC 的**逻辑** COM 端口( a logical COM port)。 + +思科已经开始在他们的设备上放 mini-USB 端口,作为 RJ45 端口的补充,可以通过 USB A 型(Type A)至 5 针 B 型(5-pin Type B)插头线, 获得对控制台的访问。如同时插入两种控制台线,那么 mini-USB 优先。图 1.31 及 1.32 是不同的连接类型。 + + +图 1.30 -- 一条 COM 到 USB 的转换线 + + +图 1.31 -- 将串行线连接到笔记本电脑的串行端口 + + +图 1.32 -- 将串行线连接到路由器或交换机的控制台端口 + +### 广域网线缆,WAN Cables + +依路由器接口及连接类型的不同,广域网连接所使用到的**串行通讯线(serial cables)**在形状、大小以及规格上有好几种。比如 ISDN 就会使用到与帧中继(Frame Relay)或 ADSL 所不同的一些线缆。 + +尤其是在家庭网络的实践下,你会用到的一种常见的 叫做 DB60(见图 1.33)的 WAN 线缆。此种线缆有一个数据终端设备(a data terminal equipment, DTE)端, 这端是要插入到客户设备上,另一端是数据通信设备端,它决定来自 ISP 处的连接速率。图 1.34 是一个 WIC-1T 插卡上的 DB60 串行接口。 + + +图 1.33 -- 一条 DB60 线缆 + + +图 1.34 -- 一块 WIC-1T 插卡上的 DB60 串行接口 + +还有一种思科经常推介的、用于广域网接口卡(WAN Interface Cards, WICs)的,叫做小巧串行线(smart serial cable)的类型。如图 1.35 所示。 + + +图 1.35 -- 小巧串行线,Smart Serial Cable + +在使用这种类型线缆时,你当然需要恰当的接口卡,此种接口卡如图 1.36 所示。 + + +图 1.36 -- 使用小巧串行线的 WIC-2T 卡 + +该 WIC 卡使用路由器的一个插槽,能提供两条连接,而 标准的 WIC-1T 卡仅有一条连接。**每条连接都可以使用不同的封装类型,比如一条使用 PPP,另一条使用帧中继。 + +关于 DCE 和 DTE 线缆的最重要之处在于,**你需要在 DCE 端指定时钟(a clock rate)**。通常情况下,你的 ISP 会干这件事,因为他们持有 DCE 端,但在家中或是用真实机架(live rack)做实验时,是你持有 DCE 端,在一台路由器上你是客户,另一台路由器上你又是 ISP 了。需要输入的命令是`clock rate 64000`(或者任何可用的速率,单位是 bits per second)。`clock rate ?`命令可以调出那些速率选项。 + +在输入以下命令前,你务必先要搞清楚它们。首先,要确认哪台路由器接上了 DCE 线,你需要命令`show controllers`之后接上接口编号。在真实考试的故障排除中(现实工作中也一样),这是一个有用的命令。命令`show ip interface brief`让你掌握路由器上有哪些接口。 + +实际上,你可以简化思科 IOS 命令的输入,就像下面的输出那样。但考试中简化输入的命令可能不会运行,因为考试使用的是路由器模拟器(而不是真实的路由器)。 + +``` +Router#sh ip int brie +Interface IP-Address OK? Method Status Protocol +FastEthernet0/0 unassigned YES unset administratively down down +FastEthernet0/1 unassigned YES unset administratively down down +Serial0/1/0 unassigned YES unset administratively down down +Vlan1 unassigned YES unset administratively down down +Router#show controllers s0/1/0 +Interface Serial0/1/0 +Hardware is PowerQUICC MPC860 +DCE V.35, no clock +Router(config-if)#clock rate ? +Speed (bits per second) + 1200 + 2400 + 4800 + 9600 + 19200 + 38400 + 56000 + 64000 +... +[Truncated Output] +``` + +## 连接到一台路由器, Connecting to a Router + +这是你头一次连接到一台路由器或交换机,看起来有些艰巨吧。前面的内容已经讲到了控制台连接了,所以在连上串行线后,你的 PC 或笔电就需要一个终端模拟程序了。有了这些,你就可以查看路由器的输出并敲入那些配置命令了。 + +超级终端(HyperTerminal)作为默认程序已经用了很多年了,在完成灾难备份时,你可能仍需要这个程序;但是你可以选择 PuTTY 这个广泛使用的程序。从 [www.putty.org](http://www.putty.org/) 可以下载到它。老式的 PC 上的 COM 端口连接总是会用到标为 COM1 或 COM2 的逻辑端口。PuTTY 中有一个有关逻辑端口的设置,我们实际上叫这个是一条串行连接(a serial connection)。如图 1.37 所示。 + + +图 1.37 -- PuTTY 使用 COM 端口得到串行访问 + +如你使用的是 USB 到翻转线(USB-to-rollover)转换器,那么你会收到一张包含其驱动程序的安装光盘,在安装好驱动程序后,你将得到一个可以使用的 COM 端口。如你使用的是 Windows 系统,在设备管理器中你会发现这个端口。如图 1.38 所示。 + + +图 1.38 -- 驱动程序将 COM4 作为控制台连接的端口 + +在使用超级终端时,你还要选择一些连接参数,比如波特率等。你需要做如下选择,如图 1.39 所示。 + +* 每秒位数,Bits per second: 9600 +* 数据位数,Data bits:默认值 8 +* 校验,Parity: 无/None +* 停止位,Stop bits: 默认值 1 +* 流控, Flow control: 必须是 无/None + + +图 1.39 -- 超级终端连接参数设置 + +在开启路由器时,如你已经选择了正确的 COM 端口,并将翻转线插入到路由器的控制台端口,你将看到路由器的启动文字(见图 1.40)。如你不能看到任何文本,那么敲几下回车键并在此检查一下你的设置。 + +如路由器没有在它的 NVRAM 中找到启动配置文件(a startup configuration file)时, 或者路由器的配置寄存器(the configuration register)被设置为 0x2142 而忽略启动配置文件时,路由器会询问你是否要进入**初始设置模式(Initial Configuration mode)**。请输入 “n” 或 “no”, 输入 “yes” 会进入配置模式(setup mode), 你是不会想要进入到这个模式的。 + +``` +Would you like to enter the initial configuration dialog? +[yes/no]: +% Please answer ‘yes’ or ‘no’. +Would you like to enter the initial configuration dialog? +[yes/no]: no +Press RETURN to get started! +Router> +``` + +在另一个型号的路由器上,你会看到下面的输出: + +``` +Technical Support: www.cisco.com/techsupport +Copyright (c) 1986-2007 by Cisco Systems, Inc. +Compiled Wed 18-Jul-07 04:52 by pt_team + --- System Configuration Dialog --- +Continue with configuration dialog? [yes/no]: no +Press RETURN to get started! +Router> +``` + +### 路由器的各种模式,Routers Modes + +为通过 CCNA 考试,你需要理解在完成各种操作时,需要进入的不同路由器模式提示符。而不管你要执行何种功能,首先你要是在正确的模式下(有不同的提示符来区分)。新手在配置路由器的过程中遇到找不到正确命令来使用的问题时,他们犯的最大错误往往就在这里。请一定要确定你在正确的模式下! + +__用户模式,User Mode__ + +在路由器启动后,第一个展现在你面前的叫用户模式(User Mode)或者用户执行模式(User Exec Mode)。用户模式下只有很小的一套命令可供使用,但在查找基本的路由器元素上是有用的。路由器默认名称是“Router”, 后面你会看到该名称可以修改。 + +`Router>` + +__特权模式,Privileged Mode__ + +在用户模式下输入 `enable` 命令,就带你进入了下一模式,叫做特权模式或特权执行模式(Priviledged Exec mode)。输入 `disable` 命令退回到用户模式。而要退出整个会话,输入 `logout` 或者 `exit`。 + +``` +Router>enable +Router# +Router#disable +Router> +``` + +在查看路由器的整个配置、路由器的运行统计数据,以致路由器插入了哪些模块时,特权模式是有用的。在此提示符下,你会输入 `show` 命令,和用于调试的 `debug` 命令。 + +__全局配置模式,Global Configuration Mode__ + +为了真正配置路由器,你需要进入全局配置模式。在特权运行模式下,输入 `configure terminal` 命令, 或其简短版本 `config t` 来进入此模式。此外,仅输入 `config` 时,路由器会询问你要进入何种模式。terminal 是模式的(默认选项会被中括号括起来)。如你按下了回车键,就会接受中括号里的命令。 + +``` +Router#config +Configuring from terminal, memory, or network[terminal]? ← press Enter +Enter configuration commands, one per line. End with CNTL/Z. +Router(config)# +``` + +__接口配置模式,Interface Configuration Mode__ + +接口模式下,可以输入路由器接口,如快速以太网、串行接口等,的命令。在一台全新的路由器上,默认所有接口都是关闭的,没有任何配置。 + +``` +Router>enable +Router#config t +Enter configuration commands, one per line. End with CNTL/Z. +Router(config)#interface Serial0 +Router(config-if)# +``` + +> show ip interface brief 命令可以查看到路由器有哪些接口。你的串行接口可能不是 Serial0。 + +__线路配置模式,Line Configuration Mode__ + +线路配置模式用来对控制台、Telnet 或者辅助端口(auxiliary ports)进行改变。你可以控制哪些人可以通过这些端口访问到路由器,以及在这些端口上部署口令或者**“访问控制列表(access control lists)”这种安全特性**。 + +``` +Router#config t +Enter configuration commands, one per line. End with CNTL/Z. +Router(config)#line console 0 +Router(config-line)# +``` + +你还可以在此模式下设置波特率、执行级别(exec levels)等参数。 + +__路由器配置模式,Router Configuration Mode__ + +为了给路由器配置一种路由协议,以便它能够建立起网络图(build a picture of the network), 你需要用到路由器配置模式。 + +``` +Router#config t +Enter configuration commands, one per line. End with CNTL/Z. +Router(config)#router rip +Router(config-router)# +``` + +__虚拟局域网配置模式,VLAN Configuration Mode__ + +此种模式实际上是属于交换机的,但既然我们在此讨论不同模式,所以也有必要提一下。本书的交换机实验中,你会用到很多这种模式。 + +``` +Switch#conf t +Enter configuration commands, one per line. +Switch(config)#vlan 10 +Switch(config-vlan)# +``` + +在具备以太网交换机卡的路由器上,会使用虚拟局域网数据库配置模式(VLAN Database Configuration mode,该模式在交换机上已被废除),其与 VLAN 配置模式是相似的。 + +``` +Router#vlan database +Router(vlan)#vlan 10 +VLAN 10 added: + Name: VLAN0010 +Router(vlan)#exit +APPLY completed. +Exiting.... +Router# +``` + +### 配置一台路由器,Configuring a Router + +路由器是没有菜单的,你也不能用鼠标在不同模式之间切换,这些都是经由命令行界面(command line interface, CLI)完成的。有些上下文敏感(context-sensitive)的帮助信息以 [?] 关键字形式给出。在路由器提示符处输入问号,所有可用的命令都将显示出来。 + +``` +Router#? +Exec commands: +access-enable Create a temporary Access-List entry +access-profile Apply user-profile to interface +access-template Create a temporary Access-List entry +alps ALPS exec commands +archive manage archive files +bfe For manual emergency modes setting +cd Change current directory +clear Reset functions +clock Manage the system clock +cns CNS subsystem +configure Enter configuration mode +connect Open a terminal connection +copy Copy from one file to another +debug Debugging functions (see also ‘undebug’) +delete Delete a file +dir List files on a directory +disable Turn off privileged commands +disconnect connection Disconnect an existing network +enable Turn on privileged commands +erase Erase a file +exit Exit from the EXEC mode +help Description of the interactive help system +-- More – +``` + +如果有多于屏幕能显示的信息,你将看到 `--More--` 栏。按空格键来查看下一页。按 `Ctrl+Z`或者`Q`回到提示符。 + +此外,如你已经开始输入一个命令,却忘记了该命令的剩下部分,输入`?`系统就会给出一个可用的命令清单。`?`在 CCNA 考试中是可用的,但如你用了问号,说明你就没有认真完成本书的那些实验:) + +``` +Router#cl? +clear clock +``` + +按 `Tab` 键有命令补全功能。 + +``` +Router#copy ru +← press the Tab key here +Router#copy running-config +``` + +路由器有好几个可供选择的模式。这是为了避免对不打算修改的路由器配置部分造成不必要改变而设置的。看一下提示符就知道你当前所处哪个模式。比如你打算对某个快速以太网接口做一些改变,你需要在接口配置模式下来完成。 + +首先,进入全局配置模式: + +``` +Router#config t +Router(config)# +``` + +接着,告诉路由器你要配置哪个接口: + +``` +Router(config)#interface FastEthernet0 +Router(config-if)#exit +Router(config)# +``` + +如你不确定采用何种方式输入接口编号,就使用 [?] 关键字。无需担心你所看到的所有选项。大多数人都只会用到快速以太网、串行接口及环回接口(Loopback interfaces)。 + +``` +Router(config)#interface ? +Async Async interface +BRI ISDN Basic Rate Interface +BVI Bridge-Group Virtual Interface +CTunnel CTunnel interface +Dialer Dialer interface +FastEthernet IEEE 802.3u +Group-Async Async Group interface +Lex Lex interface +Loopback Loopback interface +Multilink Multilink-group interface +Null Null interface +Serial Serial interface +Tunnel Tunnel interface +Vif PGM Multicast Host interface +Virtual-Template Virtual Template interface +Virtual-TokenRing Virtual TokenRing interface +range interface range command + +Router(config)#interface FastEthernet? +<0-0> FastEthernet interface number +Router(config)#interface FastEthernet0 +``` + +最终,路由器进入到了接口配置模式。 + +`Router(config-if)#` + +在这里,你可以为接口配置上 IP 地址,设置其带宽,部署一条访问控制清单,以及完成很多其它事项。你的路由器或交换机可能会与我(作者)的有不同的接口编号,所以请使用 `?` 或 `show ip interface brief` 命令去查看你的选项。 + +输入 `exit` 命令从某个配置模式中退出。这会将你带回到其第二高的级别(the next-highest level)。而要从任何的配置模式中退出,按下 `Ctrl+Z` 或输入 `end` 命令就可以了。 + +``` +Router(config-if)#exit +Router(config)# +``` + +或是 `Ctrl+Z` 的办法。 + +``` +Router(config-if)#^z +Router# +``` + +__环回接口,Loopback Interfaces__ + +CCNA 大纲通常不会涉及环回接口的知识点,但不管在工作中,还是在操作实验中,都是有用的。环回接口是你配置得来的虚拟或逻辑接口(a virtual or logical interface), 而不是物理存在的(所以你不会在路由器的面板上见到环回接口)。你可以往这类接口上执行 ping 操作,而无需在实验用有设备连接到路由器的快速以太网接口上。 + +使用环回接口的一大好处在于随路由器的运行,它们总是保持开启的,因为它们是逻辑的,意味着它们绝不会宕下去(go down)。而又由于它们是虚拟的,所以你不可以将网线插到它们上面。 + +``` +Router#config t +Router#(config)#interface Loopback0 +Router#(config-if)#ip address 192.168.20.1 255.255.255.0 +Router#(config-if)#^z ← press Ctrl+Z +Router# +Router#show ip interface brief +Interface IP-Address OK? Method Status Protocol +Loopback0 192.168.20.1 YES manual up up +``` + +此命令的输出将显示出你的路由器的所有可用接口的信息。 + +> 真实世界:可以在接口配置模式下输入 shutdown 命令来关掉一个环回接口。 + +务必要给环回接口一个有效的 IP 地址。可以**用于那些路由协议** 或者**测试路由器是否允许某些流量通过**。本课程中会大量使用到环回接口。 + +__编辑命令,Editting Commands__ + +与其将已输入的整行命令全部删除,你可以对其进行编辑。下面这些键盘输入可以将光标移至该行命令的任意位置。 + + +| __键盘输入,Keystroke__ | __用途,Meaning__ | +| -- | -- | +| Ctrl+A | 将光标移至命令行开头 | +| Ctrl+E | 将光标移至命令行末尾 | +| Ctrl+B | 将光标移往后移动一个字符 | +| Ctrl+F | 将光标移往前移动一个字符 | +| Esc+B | 将光标往前移动一个词 | +| Esc+F | 将光标往后移动一个词 | +| Ctrl+P 或向上箭头 | 翻出上一条命令 | +| Ctrl+N 或向下箭头 | 翻出下一条命令 | +| Ctrl+U | 删除这条命令 | +| Ctrl+W | 删除一个词 | +| Tab | 补全命令 | +| Show history | 默认情况下,显示前 10 条命令 | +| 退格按键,Backspace | 删除一个字符 | + +**考试中出一道有关这些编辑命令的题目是很常见的。** + +__配置一个路由器接口,Configuring a Router Interface__ + +基于其以下两个因素,路由器接口可以分为几种。 + +* 所采用的技术(比如,以太网) +* 接口之带宽 + +在现代企业网络中使用到的常见路由器及交换机接口带宽有: + +* 100Mbps(通常叫做快速以太网,FastEthernet) +* 1Gbps (通常叫做千兆以太网,GigabitEthernet) +* 10Gbps (通常叫做万兆以太网,TenGigabitEthernet) + +为定位到(address)一个指定的路由器接口并进入到接口配置模式以设置其特定参数,你必须知道接口命名法。在不同路由器生产商之间,其接口命名法会有不同,但接口命名法通常由两部分组成: + +* 接口类型(Ethernet, FastEthernet 等) +* 接口插槽/模块以及端口号 + +比如,常见的接口命名法有以下这些: + +* Ethernet1/0 (第 1 号插槽,第 0 号端口) +* FastEthernet0/3 ( 第 0 号插槽,第 3 号端口) +* GigabitEthernet0/1/1 (第 0 号模块, 第 1 号插槽, 第 1 好端口) + +> <b>注意</b>: 第 0 号插槽通常表示那些内建的端口,而其它插槽则表示那些可以随时添加上去的拓展插槽。插槽和端口的编号通常是从 0 开始的。 + +在进行配置时,**为令到路由器具有基本的那些功能,你务必要配置以下参数**: + +* 速率,Speed +* 双工,Duplex +* IP 地址,IP address + +你可以将这三个参数作为一台路由器的典型配置,因为它们常用在现代企业网络中。要查看所有可用的接口及其当前状态,你可以执行以下命令。 + +``` +Router#show ip interface brief +Interface IP-Address OK? Method Status Protocol +FastEthernet0/0 unassigned YES unset administratively down down +FastEthernet0/1 unassigned YES unset administratively down down +``` + +从以上输出可以看出,该路由器在插槽 0 上有两个快速以太网接口(FastEthernet, 100Mbps),都没有配置过(也就是,没有 IP 地址)且是管理性关闭的(也就是,状态为:adminitrively down)。 + +在开始配置接口参数前,你必须要在思科设备上使用命令 `configure terminal` 进入路由器的配置模式, 在使用命令 `interface <interface name>` 进入到接口配置模式。接口配置过程的第一步是开启该接口。比如,使用 `no shutdown` 命令可以开启接口 FastEthernet0/0 : + +``` +Router#configure terminal +Enter configuration commands, one per line. End with CNTL/Z. +Router(config)#interface FastEthernet0/0 +Router(config-if)#no shutdown +Router(config-if)#no shutdown +Router(config-if)# +*Mar 1 00:32:05.199: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up +*Mar 1 00:32:06.199: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up +``` + +接着的配置步骤涉及到配置速率以及双工设置,前面我们已经看到了。 + +__给接口配置一个 IP 地址,Configuring an IP Address on an Interface__ + +> 为让路由器与其它设备实现通信,它需要在连接的接口上有一个 IP 地址。配置一个 IP 地址是相当直接的,你还是要记住,在此之前需要进入接口配置模式。 + +先不要担心到哪里去找到 IP 地址,我们后面会解决这个问题。 + +``` +Router>enable ← takes you from User mode to Privileged mode +Router#config t ← from Privileged mode to Configuration mode +Router(config)#interface Serial0 ← and then into Interface Configuration mode +Router(config-if)#ip address 192.168.1.1 255.255.255.0 +Router(config-if)#no shutdown ← the interface is opened for traffic +Router(config-if)#exit ← you could also hold down the Ctrl+Z keys together to exit +Router(config)#exit +Router# +``` + +如下面的输出那样,可以为该接口加入一些描述信息。 + +``` +RouterA(config)#interface Serial0 +RouterA(config-if)#description To_Headquarters +RouterA(config-if)#^Z ← press Ctrl+Z to exit +``` + +在完成路由器的接口配置后,于思科路由器上,你可以使用以下命令,通过检查完整的接配置参数来验证其设置: + +``` +RouterA#show interface Serial0 +Serial0 is up, line protocol is up +Hardware is HD64570 +Description: To_Headquarters +Internet address is 12.0.0.2/24 +MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, +reliability 255/255, txload 1/255, rxload 1/255 +Encapsulation HDLC, loopback not set +Keepalive set (10 sec) +Last input 00:00:02, output 00:00:03, output hang never +[Output restricted...] +``` + +__show 命令,Show commands__ + +通过在特权模式(priviledged mode)下使用 `show x` 命令, 你可以十分简单地茶看到路由器的绝大部分设置项,其中的 x 是下一条命令,x 的选择有以下这些: + +``` +Router#show ? +access-expression List access expression +access-lists List access lists +accounting Accounting data for active sessions +adjacency Adjacent nodes +aliases Display alias commands +alps Alps information +apollo Apollo network information +appletalk AppleTalk information +arap Show AppleTalk Remote Access statistics +arp ARP table +async Information on terminal lines used as router interfaces +backup Backup status +bridge Bridge Forwarding/Filtering Database [verbose] +bsc BSC interface information +bstun BSTUN interface information +buffers Buffer pool statistics +cca CCA information +cdapi CDAPI informationcdp CDP information +cef Cisco Express Forwarding +class-map Show QoS Class Map +clns CLNS network information +--More-- +``` + +下面列出了一些常用的 `show` 命令及其意义,连同两个实例。 + +| Show 命令 | 结果 | +| -- | -- | +| `show running-configuration` | 显示 DRAM 中的配置 | +| `show startup-configuration` | 显示 NVRAM 中的配置 | +| `show flash` | 显示闪存中的 IOS | +| `show ip interface brief` | 显示所有接口的简要信息 | +| `show interface Serial0` | 显示串行接口的统计信息 | +| `show history` | 显示输入的前 10 条命令 | + +``` +Router#show ip interface brief +Interface Address OK? Method Status Protocol +Ethernet0 10.0.0.1 YES manual up up +Ethernet1 unassigned YES unset administratively down down +Loopback0 172.16.1.1 YES manual up up +Serial0 192.168.1.1 YES manual down down +Serial1 unassigned YES unset administratively down down +``` + +其中的 `method` 标签表明地址指定的方式。可以是 `unset`,`manual`, `NVRAM`, `IPCP` 或者 `DHCP`。 + +路由器能够检索(recall)出先前于路由器提示符处输入的一些命令 -- 默认 10 条,方法是使用向上箭头。使用这个特性能够让你无再次输入长命令行,从而节省大量时间和精力。`show history` 命令显示前 10 条命令的缓冲区。 + +``` +Router#show history +show ip interface brief +show history +show version +show flash: +conf t +show access-lists +show process cpu +show buffers +show logging +show memory +``` + +通过命令 `terminal history size` 命令来增大历史命令缓冲区(the history buffer): + +``` +Router#terminal history ? +size Set history buffer size +<cr> +Router#terminal history size ? +<0-256> Size of history buffer +Router#terminal history size 20 +``` + +__验证基础路由器配置及网络连通性,Verifying Basic Router Configuration and Network Connectivity__ + +下面的内容解释了一些最为有用的验证基础路由器配置的命令。 + +__版本查看,Show Version__ + +`show version` 命令提供了那些可以说是验证大多数路由器操作的起点的有用信息。包括: + +* 路由器的种类(`show inventory` 是另一个列出路由器硬件信息的有用命令) +* IOS 的版本 +* 内存容量 +* 内存使用情况 +* CPU 类型 +* 闪存容量 +* 其它硬件参数 +* 上次重启原因 + +这里有一个 `show version` 命令的缩短了的输出。请自己动手输入这个命令。 + +``` +Router#show version +Cisco 1841 (revision 5.0) with 114688K/16384K bytes of memory. +Processor board ID FTX0947Z18E +M860 processor: part number 0, mask 49 +2 FastEthernet/IEEE 802.3 interface(s) +2 Low-speed Serial(sync/async) network interface(s) +191K bytes of NVRAM. +63488K bytes of ATA CompactFlash (Read/Write) + +Configuration register is 0x2102 +``` + +__Show Running-config__ + +`show running-config` 命令提供了路由器的完整配置,用于验证设备已被配置了恰当特性。因为其输出太过宽泛,这里就不给出来了。 + +__Show IP Interface Brief__ + +在前一部分提到的 `show ip interface brief` 命令,列出了路由器的接口以及它们的状态,包括以下项目: + +* 接口的名称及编号 +* IP 地址 +* 链路状态 +* 协议状态 + +``` +Router#show ip interface brief +Interface IP-Address OK? Method Status Protocol +FastEthernet0/0 unassigned YES unset administratively down down +FastEthernet0/1 unassigned YES unset administratively down down +Serial0/0/0 unassigned YES unset administratively down down +Serial0/1/0 unassigned YES unset administratively down down +Vlan1 unassigned YES unset administratively down down +Router# +``` + +__Show IP Route__ + +`show ip route` 命令提供了有关设备路由能力的更深层次信息。它列出路由器所能到达的所有网络及到达这些网络的路径的信息,包括这些项目: + +* 网络 +* 路由协议 +* 下一跳 +* 外出接口 + +``` +R1#show ip route +Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP + D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter + area, N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external + type 2, E1 - OSPF external type 1, E2 - OSPF external type 2, + i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS + inter area, * - candidate default, U - per-user static route, + o – ODR, P - periodic downloaded static route +Gateway of last resort is not set +R 80.1.1.0/24 [120/1] via 10.1.1.2, 00:00:04, Ethernet0/0.1 +D 80.0.0.0/8 [90/281600] via 10.1.1.2, 00:02:02, Ethernet0/0.1 +O E2 80.1.0.0/16 [110/20] via 10.1.1.2, 00:00:14, Ethernet0/0.1 +``` + +除了上面的这些 `show` 命令外,还有一些用于验证路由器连通性的命令,比如 `ping` 和 `traceroute` 命令。 + +__Ping__ + +`ping` 命令提供了一种到特定目标的基本连特性测试。这种方式用以测试路由器能否到达一个网络。Ping 使用 ICMP, 通过往一台机器发送 echo 请求方式来验证这台机器是否在运行。如果那台机器是在运行,它就会发出一个 ICMP 的 echo 回应消息给源机器,以确认它的可用性。一个 ping 的样例如下所示。 + +``` +Router#ping 10.10.10.2 +Type escape sequence to abort. +Sending 5, 100-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds: +.!!!! +Success rate is 80 percent (4/5), round-trip min/avg/max = 20/40/76 ms +``` + +标准的 `ping` 命令发出 5 个到目标的 ICMP 数据包。而 ping 输出中,点(.)表示失败,叹号(!)表示成功收到数据包。ping 命令的输出还给出了到目标网络的往返时间(the round-trip time), 有最小时间、平均时间以及最大时间。 + +如你需要调整 ping 相关的参数,你可在思科路由器上执行扩展的 ping 命令。通过在控制台处输入 `ping` 并按下回车键来执行。路由器就会通过一个交互式菜单进行提示,你就可以指定包含以下的这些参数了。 + +* ICMP 数据包的个数 +* 包的大小 +* 超时量 +* 源接口 +* 服务类型 + + +``` +Router#ping +Protocol [ip]: +Target IP address: 10.10.10.2 +Repeat count [5]: +Datagram size [100]: +Timeout in seconds [2]: +Extended commands [n]: y +Source address or interface: FastEthernet0/0 +Type of service [0]: +Set DF bit in IP header? [no]: +Validate reply data? [no]: +Data pattern [0xABCD]: +Loose, Strict, Record, Timestamp, Verbose[none]: +Sweep range of sizes [n]: +Type escape sequence to abort. +Sending 5, 100-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds: +Packet sent with a source address of 10.10.10.1 +!!!!! +Success rate is 100 percent (5/5), round-trip min/avg/max = 20/36/72 ms +``` + +__Traceroute__ + +`traceroute` 命令是另一个用于查看数据包在到达其目的地前所经过的跳数。下面的输出表示数据包在到达其目标前必须经过一跳。 + +``` +R2#traceroute 192.168.1.1 +Type escape sequence to abort. +Tracing the route to 192.168.1.1 + 1 10.10.10.1 60 msec * 64 msec +``` + +跟 ping 一样,思科路由器也允许你执行扩展的 traceroute 命令,搭配一些相关参数,而这些参数大多与 ping 相关的参数一样。 + +``` +Router#traceroute +Protocol [ip]: +Target IP address: 192.168.1.1 +Source address: 10.10.10.2 +Numeric display [n]: +Timeout in seconds [3]: +Probe count [3]: +Minimum Time to Live [1]: +Maximum Time to Live [30]: +Port Number [33434]: +Loose, Strict, Record, Timestamp, Verbose[none]: +Type escape sequence to abort. +Tracing the route to 192.168.1.1 + 1 10.10.10.1 76 msec * 56 msec +``` + +## 第一天的问题 + +### OSI/TCP 模型的问题 OSI/TCP Model Questions + +1. Name each layer of the OSI model, from Layer 7 down to Layer 1. +2. The role of the Session Layer is to `_______`, `_______`, and `_______` sessions or dialogues between devices. +3. What are the three methods used to control data flow at Layer 4? +4. The Transport Layer includes several protocols, and the most widely known are `_______` and `_______`. +5. Why is UDP used at all if TCP/IP offers guaranteed delivery? +6. What is data referred to at each OSI layer? +7. In order to interface with the upper and lower levels, the Data Link Layer is further subdivided into which two Sublayers? +8. What are the five TCP/IP layers from the top down? +9. How does the TCP/IP model map to the OSI model? +10. Layer 2 addresses are also referred to as `_______` addresses. +11. Using a switch will allow you to divide your network into smaller, more manageable sections known as `_______ _______`. + +### 线缆的问题 Cable Questions + +1. The current standard Ethernet cable still uses eight wires twisted into pairs to prevent `_______ _______` and `_______`. +2. _______ is when a signal from one Ethernet wire spills over into a neighbouring cable. +3. Which command would set the FastEthernet router interface speed to 10Mbps? +4. On a crossover cable, the wire on pin 1 on one end needs to connect to pin `_______` on the other end and pin 2 needs to connect to pin `_______`. +5. Which cable would you use to connect a router Ethernet interface to a PC? +6. You can see a summary of which interfaces you have on your router with the show `_______ _______ _______` command. +7. Line Configuration mode lets you configure which ports? +8. A Loopback interface is a `_______` or `_______` interface that you configure. +9. The keyboard shortcut Ctrl+A does what? +10. The `_______` keyboard shortcut moves the cursor back one word. +11. By default, the `_______ _______` command shows the last 10 commands entered. + +## 第一天的答案 + +### OSI/TCP 模型答案 +1. Application, Presentation, Session, Transport, Network, Data Link, and Physical. +2. Set up, manage, and terminate. +3. Flow control, windowing, and acknowledgements. +4. TCP and UDP. +5. TCP uses a lot of bandwidth on the network and there is a lot of traffic sent back and forth to set up the connection, even before the data is sent. This all takes up valuable time and network resources. UDP packets are a lot smaller than TCP packets and they are very useful if a really reliable connection is not that necessary. Protocols that use UDP include DNS and TFTP. +6. Bits (Layer 1), Frames (Layer 2), Packets (Layer 3), Segments (Layer 4) and Data (Layers 5-7). +7. LLC and MAC. +8. Application, Transport, Network, Data Link, and Network. +9.  +10. MAC. +11. Collision domains. + +### 线缆答案 Cable Answers + +1. Electromagnetic interference (EMI) and crosstalk. +2. Crosstalk. +3. The `speed 10` command. +4. 3 and 6. +5. A crossover cable. +6. `ip interface brief` . +7. The console, Telnet, and auxiliary ports. +8. Virtual or logical. +9. Moves the cursor to the beginning of the command line. +10. Esc+B. +11. `show history` . + + +## 第一天的实验 Day 1 Lab + +### IOS 命令导航实验 IOS Command Navigation Lab + +__拓扑,Topology__ + + + +__实验目的,Purpose__ + +学习如何通过控制台接口连接到一台路由器,以及尝试一些命令。 + +__步骤,Walkthrough__ + +1. 使用一条控制台线缆,和 PuTTY 程序(可免费在线获取,请搜索“PuTTY”), 连接到一台路由器的控制台端口。 +2. 在 `Router>` 提示符处,输入下面的这些命令,探寻不同的路由器模式和命令。如你遇到询问进入配置模式,输入 `no` 并按下回车键。 + +``` +Cisco IOS Software, 1841 Software (C1841-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE +SOFTWARE (fc2) +Technical Support: www.cisco.com/techsupport +Copyright (c) 1986-2007 by Cisco Systems, Inc. +Compiled Wed 18-Jul-07 04:52 by pt_team + --- System Configuration Dialog --- +Continue with configuration dialog? [yes/no]:no +Press RETURN to get started! +Router>enable +Router#show version +Cisco 1841 (revision 5.0) with 114688K/16384K bytes of memory. +Processor board ID FTX0947Z18E +M860 processor: part number 0, mask 49 +2 FastEthernet/IEEE 802.3 interface(s) +2 Low-speed Serial(sync/async) network interface(s) +191K bytes of NVRAM. +63488K bytes of ATA CompactFlash (Read/Write) +Configuration register is 0x2102 +Router#show ip interface brief +Interface IP-Address OK? Method Status Protocol +FastEthernet0/0 unassigned YES unset administratively down down +FastEthernet0/1 unassigned YES unset administratively down down +Serial0/0/0 unassigned YES unset administratively down down +Serial0/1/0 unassigned YES unset administratively down down +Vlan1 unassigned YES unset administratively down down +Router# +Router#conf t +Enter configuration commands, one per line. End with CNTL/Z. +Router(config)#interface Serial0/1/0 ← put your serial # here +Router(config-if)#ip address 192.168.1.1 255.255.255.0 +Router(config-if)#interface Loopback0 +Router(config-if)#ip address 10.1.1.1 255.0.0.0 +Router(config-if)#^Z ← press Ctrl+Z keys together +Router# +Router#show ip interface brief +Interface IP-Address OK? Method Status Protocol +FastEthernet0/0 unassigned YES unset administratively down down +FastEthernet0/1 unassigned YES unset administratively down down +Serial0/0/0 unassigned YES unset administratively down down +Serial0/1/0 192.168.1.1 YES manual administratively down down +Loopback0 10.1.1.1 YES manual up up +Vlan1 unassigned YES unset administratively down down +Router#show history +Router(config)#hostname My_Router +My_Router(config)#line vty 0 ? + <1-15> Last Line number + <cr> +My_Router(config)#line vty 0 15 ← enter 0 ? to find out how many lines you have +My_Router(config-line)# +My_Router(config-line)#exit +My_Router(config)#router rip +My_Router(config-router)#network 10.0.0.0 +My_Router(config-router)# +``` + + + diff --git a/l-0.png b/l-0.png new file mode 100644 index 0000000..353debd Binary files /dev/null and b/l-0.png differ diff --git a/noname-0.png b/noname-0.png new file mode 100644 index 0000000..55671d4 Binary files /dev/null and b/noname-0.png differ diff --git a/q-0.png b/q-0.png new file mode 100644 index 0000000..2e7fa6e Binary files /dev/null and b/q-0.png differ