2023-01-06 更新
1 组建小型局域网
- 1 * Switch_2960
- 2 * PC
- 2 * Copper Straight-Through
Switch_2960 有 1 个 Console 端口、 24 个 FastEthernet 端口 和 2 个 GigabitEthernet 端口。 Console 端口暂且忽略。 FastEthernet 是百兆速率端口, GigabitEthernet 是千兆速率端口。为什么 FastEthernet 更慢却冠以 Fast 呢?因为还有 Ethernet 端口,只有十兆速率,如今已被淘汰。
古人认为传播必须要有介质,而光可以在真空中传播,说明存在一种看不见摸不着的介质,即 Aristotle (B.C.384~B.C.322) 提出的虚空填充物 ether 。随着科学的发展,人们逐渐认识到 ether 并不存在。 20 世纪 70 年代, Metcalfe 发明了一种将多个设备连接成一个局域网的技术,传输模式有点像 ether ,便称之为 Ethernet 。
IP 、 Subnet Mask 、 Gateway 是每台 PC 都要配置的。对于 IP ,我们早已有朴素的概念,现下不必深究。子网掩码 Subnet Mask 总是与 IP 成对出现,它唯一的作用就是掰开 IP ,前半部分作为网络地址,后半部分作为主机地址,例如 192.168.10.10 255.255.255.0(11111111 11111111 11111111 00000000)
,网络地址 192.168.10.0
(记得末尾补 0 ),主机地址 10 。网关 Gateway 好比封闭式小区的大门,仅当有人员外来或外出时才起作用,习惯设成 xxx.xxx.xxx.1
。
PC 配置完成后,网关 192.168.1.1
是不能直接 ping 通的。
2 交换机的基本配置和管理
- 1 * Switch_2960
- 1 * PC
- 1 * Copper Straight-Through
- 1 * Console
上节忽略的 Console 端口现在派上用场,因为初次配置交换机只能通过 Console 端口。取一根 Console 线将它和 PC 端的 9 针(或 25 针)端口 RS-232 连接起来,然后依次点开 PC > Desktop > Terminal
。
Press RETURN to get started!
Switch> // 普通模式。
Switch>enable // 进入特权模式,简写 en 。
Switch#configure terminal // 通过终端配置,简写 conf t 。
Switch(config)#interface fastethernet 0/1 // 选择 fastethernet 0/1 端口,简写 in f 0/1 。
Switch(config-if)#speed 100 // 修改所选端口的速率,注意两端保持一致。
Switch(config-if)#duplex full // 修改所选端口的双工模式,注意两端保持一致。
双工模式有两种,“半双工”和“全双工”。半双工只有一条通道,要么发送,要么接收。而全双工至少有两条通道,一条发送,一条接收,可以同时进行。
3 交换机的 Telnet 远程登录配置
- 1 * Switch_2960
- 2 * PC
- 2 * Copper Straight-Through
- 1 * Console
首先,我们要给交换机分配 IP ,没有 IP 的交换机只能通过 Console 管理。不过 IP 并不直接挂靠交换机,它是交换机定义的虚拟局域网 VLAN 的属性。正如小区可以细分成一区、二区、三区一样,由交换机连通而成的局域网也可以细分成 VLAN1 、 VLAN2 、 VLAN3 。默认情况下,所有端口及其绑定设备隶属 VLAN1 ,其它 VLAN 必须手动声明。
Switch>en
Switch#enable secret mysecret // 切记设置特权模式开启密码 mysecret 。
Switch#conf t
Switch(config)#interface vlan 1
Switch(config-if)#ip address 192.168.1.1 255.255.255.0
Switch(config-if)#no shutdown
Switch(config-if)#exit
Switch(config)#line vty 0 4 // vty = Virtual Teletype Terminal ? Switch_2960 最多支持 16 个 vty 同时登录,即 0 15 ,这里的 0 4 表示限定数目为 5 。
Switch(config-line)#login // 允许 vty 登录。
Switch(config-line)#password mypassword // 设置 vty 登录密码为 mypassword 。
Switch(config-line)#privilege level 1 // 设置远程登录用户的权限级别为 1 ,最高权限级别为 3 。
方便起见,今后直接在 CLI 中执行命令,不再借道 Console 和 Telnet 。
4 交换机的端口聚合配置
- 2 * Switch_2960
- 2 * PC
- 4 * Copper Straight-Through
理论上两个交换机之间仅需一根线即可成功连接。倘若我们多加几根线,并让它们在逻辑上捆绑合一,就能形成更大带宽,实现负载分担。这种方法称为端口聚合,又称为链路聚合。一台 Switch_2960 只能有一个聚合组,最多四个端口,端口号必须连续,且必须全双工。端口号最小的那个作为主端口,其它均是成员端口。成员端口的链路类型与主端口一致,可选的链路类型有三种,分别是 access ,trunk ,hybrid ,其中 access 用于连接 PC , truck 用于连接交换机, hybird 两者皆可。
两台 Switch_2960 的设置完全相同:
Switch>en
Switch#conf t
Switch(config)#int range f 0/1-2
Switch(config-if-range)#switchport mode trunk
Switch(config-if-range)#channel-group 1 mode on // 加入聚合组 1 并开启。
Switch(config-if-range)#exit
Switch(config)#port-channel load-balance dst-ip // 按目标主机 IP 地址分发数据以实现负载平衡。
5 交换机划分 VLAN 配置
本小节亲身实践了上文所述的“其它 VLAN 必须手动声明”。
Switch>en
Switch#conf t
Switch(config)#vlan 2
Switch(config-vlan)#exit
Switch(config)#vlan 3
Switch(config-vlan)#exit
Switch(config)#int f 0/1
Switch(config-if)#switchport access vlan 2
Switch(config)#int f 0/2
Switch(config-if)#switchport access vlan 3
6 三层交换机实现 VLAN 间路由
- 1 * Switch_3560
- 1 * Switch_2960
- 4 * PC
- 5 * Copper Straight-Through
“层”的概念源于 TCP/IP 协议簇,自下而上依次是物理层、数据链路层、网络层、传输层、应用层。二层交换机的工作区间位于第二层数据链路层,三层交换机的工作区间位于第三层网络层。
此处采用的是五层版的 TCP/IP ,另有将物理层和数据链路层合二为一的四层版,实际上没有区别。
值得一提的是,三层交换机的端口默认作为二层端口,想让它变成三层端口需要执行命令 no shutdown
(不关?)!另外,三层交换机将 VLAN 也视为接口,分配 IP 地址作为 VLAN 的默认网关。
重点看下 Switch_3560 的配置过程。
Switch>en
Switch#conf t
Switch(config)#ip routing // 极易遗漏。
Switch(config)#vlan 2
Switch(config-vlan)#exit
Switch(config)#vlan 3
Switch(config-vlan)#exit
Switch(config)#int fa 0/1
Switch(config-if)#switchport trunk encapsulation dot1q // dot1q 即 802.1Q ,两大封装协议之一。另一个是思科私有的 ISL 。
Switch(config-if)#switchport mode trunk
Switch(config-if)#exit
Switch(config)#int vlan 2
Switch(config-if)#ip address 192.168.1.1 255.255.255.0
Switch(config-if)#no shutdown
Switch(config-if)#exit
Switch(config)#int vlan 3
Switch(config-if)#ip address 192.168.2.1 255.255.255.0
Switch(config-if)#no shutdown
7 快速生成树协议
Frame 是交换机传输的基本单位,译作“帧”。帧从 PC 端口出发后,每到一个交换机都要备案:“贫僧自东土大唐而来,去往西天拜佛求经。”若今后有帧自西天而来,去往大唐挣钱谋生,却不认得路,那些听闻“大唐在东土”的交换机便能给它指明方向。于是,在交换机的脑海里,世界地图逐渐补齐。至于未能解锁的偏远之地,交换机只能广发问询帧求助周围的同事。一旦出现环路,问询帧就会一直传递,永无止境。
生成树协议 STP(Spanning Tree Protocol) 应运而生。它把优先级最高的交换机作为树根,其他交换机作为树杈,所有 PC 端口作为树梢。树杈和树梢都只记住自己到树根耗时最少的一条路。这样整个网络就在逻辑上成为一棵不存在环路的连接着所有 PC 端口的树。
生成树协议最大的问题是,当某个树杈挂掉时,整棵树必须重新生成,生成时间长达 50 秒,不能忍。快速生成树协议 RSTP(Rapid Spanning Tree Protocol) 通过一系列措施,大大缩短了收敛时间。具体措施按下不表。
实际操作中应该等快速生成树协议配置完毕后再连接,先连接会引发广播风暴。
Switch(config)#spanning-tree mode rapid-pvst
8 路由器的基本配置和 Telnet 配置
- 1 * Router_2811
- 1 * PC
- 1 * Copper Cross-Over
- 1 * Console
如上图,八蕊网线的排线标准有两种。前面的交换机实验中主要使用 Copper Straight-Through ,俗称直连线,又称平行线,两头都是 568B 。本小节新结识的连接线 Copper Cross-Over ,俗称交叉线,一头是 568A ,另一头是 568B 。
和交换机一样,初次配置只能通过 Console 端口。
具体的 Telnet 配置也与交换机别无二致。
9 路由器单臂路由配置
- 1 * Router_2811
- 1 * Switch_2960
- 2 * PC
- 2 * Copper Straight-Through
- 1 * Copper Cross-Over
一个 ethernet 被划分成多个 VLAN 后, VLAN 之间的通信必须经过路由器。单臂路由就是只用一根线连接交换机实现这种通信的方式。因为它只有一根线,却要通过所有 VLAN 的数据,所以端口必须设为 trunk 。
Router>en
Router#conf t
Router(config)#int f 0/0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#int f 0/0.1 // 进入路由器第 0 模块的第 0 端口的第 1 子接口。
Router(config-subif)#encapsulation dot1Q 2 // 允许 VLAN2 通过
Router(config-subif)#ip address 192.168.1.1 255.255.255.0
Router(config-subif)#exit
Router(config)#int f 0/0.2 // 进入路由器第 0 模块的第 0 端口的第 1 子接口。
Router(config-subif)#encapsulation dot1q 3 // 允许 VLAN3 通过
Router(config-subif)#ip address 192.168.2.1 255.255.255.0
10 路由器静态路由配置
- 2 * Router_PT
- 2 * Switch_2960
- 2 * PC
- 2 * Copper Straight-Through
- 2 * Copper Cross-Over
- 1 * Serial DCE(DTE)
串口线前文未曾提及。 DCE 是孔头, DTE 是针头,配套使用。 DCE 端必须设置时钟。
Router>en
Router#conf t
Router(config)#int serial 2/0
Router(config-if)#clock rate 64000
Router(config-if)#no shutdown
路由器的工作原理和三层交换机类似,根据路由表择路转发。找不到匹配项时,数据将被送往默认网关。路由表既可以自动动态配置,也可以手动静态配置,静态路由更安全。
Router>en
Router#conf t
Router(config)#ip route 192.168.2.0 255.255.255.0 192.168.3.2
11 路由器 RIP 动态路由配置
- 2 * Router_PT
- 1 * Switch_3560
- 2 * PC
- 1 * Copper Straight-Through
- 2 * Copper Cross-Over
- 1 * Serial DCE(DTE)
路由信息协议 RIP(Routing Information Protocols) 是较早的面向小型同类网络的内部网络管理协议,以跳数作为衡量标准, 15 封顶。 RIP 有两个版本: RIPV1 和 RIPV2 ,两者的区别涉及到 ip 的分类。
很久很久以前,为了缩短路由表以便更快地处理数据,将 ip 分成了 ABCDE 五类。[]
表示网络地址区或主机地址区。
- A:
[0???????].[????????.????????.????????]
- B:
[10??????.????????].[????????.????????]
- C:
[110?????.????????.????????].[????????]
- D:
1110????.????????.????????.????????
- E:
1111????.????????.????????.????????
RIPV1 属于无类协议,只能根据 ip 分类来确定网络地址和主机地址; RIPV2 属于有类协议,由子关掩码精准切割, ip 分类已经失去意义。
Router>en
Router#conf t
Router(config)#router rip
Router(config-router)#network 192.168.3.0 // 向 RIP 添加 IP 。
Router(config-router)#version 2 // RIPV2
别忘了交换机的 ip routing
。
12 路由器 OSPF 动态路由配置
RIP 协议每个节点只认识几个邻居,至于世界是啥样,完全没概念。而 OSPF 协议手握世界地图,对全网的结构了如指掌,一旦某条路线断了,能够迅速切换。 OSPF 也可以细分, area 0 必定存在,是骨干区,其它区是普通区,同区的路由表完全相同。
Router#en
Router#conf t
Router(config)#router ospf 1 // 1 表示进程号。
Router(config-router)#network 192.168.1.0 0.0.0.255 area 0
13 路由器综合路由配置
如何让数据在 RIP 和 OSPF 之间自由进出呢?
Router#en
Router#conf t
Router(config)#router rip
Router(config-router)#redistribute ospf 1
Router(config)#exit
Router(config)#router ospf 1
Router(config-router)#redistribute rip subnets
14 标准 IP 访问控制列表配置
访问控制列表 ACLs(Access Control Lists) ,俗称防火墙。列表内的条目按照先后顺序执行,一旦匹配立刻跳出。
- 标准访问控制列表
- 编号范围 1~99 和 1300~1999
- 过滤依据数据包的源 IP 。
- 扩展访问控制列表
- 编号范围 100~199 和 2000~2699
- 过滤依据数据包的源 IP 、目标 IP 、源端口、目标端口、协议等。
访问控制列表可以自定义名称。
Router#en
Router#conf t
Router(config)#ip access-list standard access-list-name // ip access-list extended access-list-name
Router(config-std-nacl)#permit 172.16.1.0 0.0.0.255
Router(config-std-nacl)#deny 172.16.2.0 0.0.0.255
Router(config-std-nacl)#exit
Router(config)#int serial 2/0
Router(config-if)#ip access-group access-list-name out // ip access-group access-list-name in
15 扩展 IP 访问控制列表配置
Router#en
Router#conf t
Router(config)#access-list 100 permit tcp host 172.16.1.2 host 172.16.4.2 eq www // eq 表示“等于”。
Router(config)#access-lint 100 deny icmp host 172.16.1.2 host 172.16.4.2 echo // icmp 是 ping 使用的协议。
Router(config)#int serial 2/0
Router(config)#ip access-group 100 out
16 网络地址转换 NAT 配置
- 2 * Router_PT
- 1 * Switch_2950-24
- 1 * Server-PT
- 1 * PC
- 2 * Copper Straight-Through
- 1 * Copper Cross-Over
- 1 * Serial DCE(DTE)
某公司想发布 WWW 服务,要求将内网 Web 服务器 IP 地址映射到外网 IP 地址。这就需要网络地址转换 NAT(Network Address Translation) 技术。 NAT 通过简单的查找替换,既解决了 IP 地址不足的问题,又能有效地抵御来自外网的攻击。 NAT 也分静态和动态,动态有地址池可供自动映射。不过现实中还是静态用得更多。
Router#en
Router#conf t
Router(config)#int f 0/0
Router(config-if)#ip nat inside
Router(config-if)#int s 2/0
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#ip nat inside source static local-ip global-ip [extendable]
17 网络端口地址转换 NAPT 配置
倘若公司只有一个外网 IP 地址,怎样才能让公司的所有主机都能访问外网?答案是端口多路复用技术 NAPT ,通过不同的端口来映射实现多对一。
Router(config)#ip nat pool pool-name start-ip end-ip
Router(config)#ip nat inside source list access-list-name pool-name overload