网络运维亲历记 (网络运维纪实文学)
上QQ阅读APP看书,第一时间看更新

1.1 网络三层协议概述

1.1.1 IP协议

IP(Internet Protocol),网络之间互连的协议,是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。

IPv6是Internet Protocol Version 6的缩写,它是IETF(Internet Engineering Task Force,互联网工程任务组)设计的用于替代现行版本IPv4的下一代IP协议。

IPv4地址分为5类:A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验。各类可容纳的地址数目不同。当将IP地址写成二进制形式时,A类地址的第1位总是0,B类地址的前2位总是10,C类地址的前3位总是110。

1.A类地址

(1)A类地址第1字节为网络地址,其他3个字节为主机地址。它的第1个字节的第1位固定为0。

(2)A类地址网络号范围:1.0.0.0~126.0.0.0。

(3)A类地址中的私有地址和保留地址如下:

①10.X.X.X是私有地址(在互联网上不使用,而被用在局域网络中的地址)。范围为10.0.0.0~10.255.255.255。

②127.X.X.X是保留地址,用作循环测试。

2.B类地址

(1)B类地址第1字节和第2字节为网络地址,其他2个字节为主机地址。它的第1个字节的前2位固定为10。

(2)B类地址网络号范围:128.0.0.0~191.255.0.0。

(3)B类地址的私有地址和保留地址如下:

①172.16.0.0~172.31.255.255是私有地址。

②169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而在网络上又没有找到可用的DHCP服务器,就会获取其中一个IP地址。

3.C类地址

(1)C类地址第1字节、第2字节和第3个字节为网络地址,第4个字节为主机地址。另外第1个字节的前3位固定为110。

(2)C类地址网络号范围:192.0.0.0~223.255.255.0。

(3)C类地址中的私有地址如下:

192.168.X.X(192.168.0.0~192.168.255.255)是私有地址。

4.D类地址

(1)D类地址不分网络地址和主机地址,它的第1个字节的前4位固定为1110。

(2)D类地址范围:224.0.0.0~239.255.255.255。

5.E类地址

(1)E类地址不分网络地址和主机地址,它的第1个字节的前5位固定为11110。

(2)E类地址范围:240.0.0.0~255.255.255.254。

IP地址如果只使用ABCDE类来划分,会造成大量的浪费。比如一个有500台主机的网络,无法使用C类地址。但如果使用一个B类地址,6万多个主机地址只有500个被使用,造成IP地址的大量浪费。因此,IP地址还支持VLSM(Variable Length Subnet Mask,可变长子网掩码)技术,可以在ABC类网络的基础上,进一步划分子网。

1.1.2 热备份协议

1.HSRP

HSRP(Hot Standby Router Protocol)热备份路由器协议,是思科的私有协议。该协议中含有多台路由器,对应一个HSRP组。该组中只有一个路由器承担转发用户流量的职责,这就是活动路由器。当活动路由器失效后,备份路由器将承担该职责,成为新的活动路由器。

但是在本网络内的主机看来,虚拟路由器没有改变。所以主机仍然保持连接,没有受到故障的影响,这样就较好地解决了路由器切换的问题,这就是热备份的原理。

为了减少网络的数据流量,在设置完活动路由器和备份路由器之后,只有活动路由器和备份路由器定时发送HSRP报文。如果活动路由器失效,备份路由器将接管成为活动路由器。如果备份路由器失效或者变成了活动路由器,将由另外的路由器接管成为备份路由器。

负责转发数据包的路由器称之为活动路由器(Active Router),一旦主动路由器出现故障,HSRP将激活备份路由器(Standby Routers)取代主动路由器。HSRP协议提供了一种决定使用主动路由器还是备份路由器的机制,并指定一个虚拟的IP地址作为网络系统的缺省网关地址。如果主动路由器出现故障,备份路由器(Standby Routers)承接主动路由器的所有任务,并且不会导致主机连通中断现象。

HSRP运行在UDP上,采用端口号1985。路由器转发协议数据包的源地址使用的是实际IP地址,而并非虚拟地址,正是基于这一点,HSRP路由器间能相互识别。

HSRP协议利用一个优先级方案来决定哪个配置了HSRP协议的路由器成为默认的主动路由器。如果一个路由器的优先级设置的比所有其他路由器的优先级高,则该路由器成为主动路由器。路由器的缺省优先级是100,所以如果只设置一个路由器的优先级高于100,则该路由器将成为主动路由器。

通过在设置了HSRP协议的路由器之间发组播(地址为224.0.0.2)来得知各自的HSRP优先级,HSRP协议选出当前的主动路由器。当在预先设定的一段时间内主动路由器不能发送Hello消息时,优先级最高的备用路由器变为主动路由器。路由器之间的包传输对网络上的所有主机来说都是透明的。

配置了HSRP协议的路由器交换以下3种组播消息:

Hello消息:Hello消息通知其他路由器发送路由器的HSRP优先级和状态信息,HSRP路由器默认为每3秒钟发送一个Hello消息。

Coup消息:当一个备用路由器变为一个主动路由器时发送一个coup消息。

Resign消息:当主动路由器要宕机或者当有优先级更高的路由器发送Hello消息时,主动路由器发送一个Resign消息。

HSRP的两个定时器:

HSRP使用两个定时器,Hello间隔和Hold间隔。默认的Hello间隔是3秒,默认的Hold间隔是10秒。Hello间隔定义了两组路由器之间交换信息的频率。Hold间隔定义了经过多长时间后,没有收到其他路由器的信息,则活动路由器或者备用路由器就会被宣告为失败。配置计时器并不是越小越好,虽然计时器越小则切换时间越短。计时器的配置需要和STP等的切换时间相一致。另外,Hold间隔最少应该是Hello间隔的3倍。

在任一时刻,配置了HSRP协议的路由器都将处于以下6种状态之一:

Initial状态:HSRP启动时的状态,HSRP还没有运行,一般是在改变配置或端口刚刚启动时进入该状态。

Learn状态:学习状态,不知道虚拟IP,未看到活跃路由器发Hello,等待活动路由器发hello。

Listen状态:路由器已经得到了虚拟IP地址,但是它既不是活动路由器也不是等待路由器。它一直监听从活动路由器和等待路由器发来的Hello报文。

Speak状态:在该状态下,路由器定期发送Hello报文,并且积极参加活动路由器或等待路由器的竞选。

Standby状态:当主动路由器失效时路由器准备接管包传输功能。

Active状态:路由器执行包传输功能。

2.VRRP

VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议,是由IETF(国际互联网工程任务组)提出的解决局域网中配置静态网关出现单点失效现象的路由协议。

VRRP是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的VRRP路由器中的一台。控制虚拟路由器IP地址的VRRP路由器称为主路由器,它负责转发数据包到这些虚拟IP地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的IP地址可以作为终端主机的默认第一跳路由器。一个局域网络内的所有主机都设置缺省网关,这样主机发出的目的地址不在本网段的报文将被通过缺省网关发往三层交换机,当缺省路由器Down掉(端口关闭)之后,如果路由器设置了VRRP时,那么这时,虚拟路由将启用备份路由器,从而实现了主机和外部网络的通信。

VRRP将局域网的一组路由器,包括一个Master(活动路由器)和若干个Backup(备份路由器),组织成一个虚拟路由器,称之为一个备份组。这个虚拟的路由器拥有自己的IP地址,例如10.100.10.1,这个IP地址可以和备份组内的某个路由器的接口地址相同,相同的则称为IP拥有者,备份组内的路由器也有自己的IP地址,例如Master的IP地址为10.100.10.2,Backup的IP地址为10.100.10.3。局域网内的主机仅仅知道这个虚拟路由器的IP地址10.100.10.1,而并不知道具体的Master路由器的IP地址10.100.10.2以及Backup路由器的IP地址10.100.10.3。它们将自己的缺省路由下一跳地址设置为该虚拟路由器的IP地址10.100.10.1。于是,网络内的主机就通过这个虚拟的路由器来与其他网络进行通信。如果备份组内的Master路由器坏掉,Backup路由器将会通过选举策略选出一个新的Master路由器,继续向网络内的主机提供路由服务。从而实现网络内的主机不间断地与外部网络进行通信。

3.GLBP

GLBP(Gateway Load Balancing Protocol)网关负载均衡协议,是思科的专有协议。和HSRP、VRRP不同的是,GLBP不仅提供冗余网关,还在各网关之间提供负载均衡,而HSRP、VRRP都必须选定一个活动路由器,而备用路由器则处于闲置状态。GLBP可以绑定多个MAC地址到虚拟IP,从而允许客户端通过获得不同的虚拟MAC地址,通过不同的路由器转发数据,因为客户端利用的地址是解析到的虚拟的MAC地址,而网关地址仍使用相同的虚拟IP,从而不但实现了冗余还能够负载均衡。

1)活动网关选举

使用类似于HSRP的机制选举活动网关,优先级最高的路由器成为活动路由器,若优先级相同则IP地址最高的路由器成为活动路由器。称作Active Virtual Gateway,其他非AVG提供冗余。某路由器被推举为AVG后,和HSRP不同的工作开始了,AVG分配虚拟的MAC地址给其他GLBP组成员。所有的GLBP组中的路由器都转发包,但是各路由器只负责转发与自己的虚拟MAC地址的相关的数据包。GLBP成员之间通过每3秒钟向组播地址为224.0.0.102的UDP端口3222发送Hello数据包,来进行通信。

2)地址分配

每个GLBP组中最多有4个虚拟MAC地址,非AVG也被称作Active Virtual Forwarde(AVF),非AVG路由器由AVG按序分配虚拟MAC地址。AVF分为两类:Primary Virtual Forwarder和Secondary Virtual Forwarder。直接由AVG分配虚拟MAC地址的路由器被称作Primary Virtual Forwarder,后续不知道AVG真实IP地址的组成员,只能使用Hello包来识别其身份,然后被分配虚拟MAC地址,此类被称作Secondary Virtual Forwarder。

3)GLBP配置

如果AVG失效,则推举就会发生,决定哪个AVF替代AVG来分配MAC地址,推举机制依赖于优先级。最多可以配置1个GLBP组,不同的用户组可以配置成使用不同的组AVG来作为其网关。

    Cisco#configure terminal
    Cisco(config)#track 100 int f0/0 line-protocol
    //定义跟踪目标100为f0/0接口的二层故障
    Cisco(config-if)#exit
    Cisco(config)#int fastethernet 0/0
    Cisco(config-if)#ip address 10.1.1.1
    Cisco(config-if)#glbp 99 ip 10.1.1.254
    Cisco(config-if)#glbp 99 name TEST
    //配置GLBP名字,可选
    Cisco(config-if)#glbp 99 timers 3 10
    //配置GLBP的Hello时间3秒和Hold时间10秒
    Cisco(config-if)#glbp 99 priority 105
    //配置优先级,默认是100,这里为105
    Cisco(config-if)#glbp 99 preempt
    //配置GLBP的路由器会进行AVG抢占,否则priority再高也不抢占
    Cisco(config-if)#glbp 99 preempt delay minimum 10
    //配置AVG的抢占延时10秒
    Cisco(config-if)#glbp 99 weighting track100 decrement 50
    //当跟踪目标100出现故障的时候权重减50
    Cisco(config-if)#exit

4)GLBP的特性

负载分担:管理员可以通过配置GLBP,使多台路由器共同承载局域网客户端的流量,从而在多台可用路由器之间实现更为公平的负载均衡。

多虚拟路由器:GLBP在一台路由器的每个物理接口上,支持多达1024个虚拟路由器,即GLBP组,每个组最多支持4个虚拟转发者。

抢占:GLBP的冗余性机制允许当具有更高优先级的备用虚拟网关变得可用后,通过抢占机制成为AVG。转发者的抢占行为与此相似,只是转发者抢占使用的是加权而不是优先级,且默认启用。

有效的资源利用:GLBP使组中的每台路由器都可以充当备用角色,而不需要部署一台专用的备用路由器,因为所有可用的路由器都可以承载网络流量。

5)GLBP的运作

GLBP协议支持3种负载均衡方式,下面是配置GLBP负载均衡时,对3个参数的解释。

Cisco(config-if)#glbp group load-balancing [round-robin | weighted | host-dependent ]

round-robin:Load balance equally using each forwarder in turn。

weighted: Load balance in proportion to forwarder weighting。

host-dependent: Load balance equally, source MAC determines forwarder choice。

第一:根据ARP请求轮询。循环负载分担算法:当客户端发送ARP请求来解析默认网关的MAC地址时,每个客户端接收到的ARP响应中包含的MAC地址,是循环算法中下一个可用路由器的MAC地址。所有路由器的MAC地址会被按顺序放入地址解析响应中,作为默认网关IP地址对应的MAC地址返回给客户端。

第二:根据路由器的权重分配,权重越高被分配的可能性越大。加权负载分担算法:被定向到一台路由器的负载量取决于该路由器所通告的加权值。

第三:根据不同主机的源MAC地址。主机相关负载分担算法:只要某个虚拟MAC地址还在GLBP组中参与流量转发,就确保某主机总是使用这个虚拟MAC地址进行通信。

1.1.3 DHCP协议

DHCP(Dynamic Host Configure Protocol,动态主机配置协议),是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:一是给内部网络或网络服务供应商自动分配IP地址,二是给用户或者内部网络管理员作为对所有计算机作中央管理的手段。DHCP有3个端口,其中UDP 67和UDP 68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口。

在一个使用TCP/IP协议的网络中,每一台计算机都必须至少有一个IP地址,才能与其他计算机连接通信。为了便于统一规划和管理网络中的IP地址,DHCP应运而生了。这种网络服务有利于对校园网络中的客户机IP地址进行有效管理,而不需要一个一个手动指定IP地址。

DHCP用一台或一组DHCP服务器来管理网络参数的分配,这种方案具有容错性。即使在一个仅拥有少量机器的网络中,DHCP仍然是有用的,因为一台机器可以几乎不造成任何影响地被增加到本地网络中。

甚至对于那些很少改变地址的服务器来说,DHCP仍然被建议用来设置它们的地址。如果服务器需要被重新分配地址的时候,就可以在尽可能少的地方去做这些改动。对于一些设备,如路由器和防火墙,则不应使用DHCP。把TFTP或SSH服务器放在同一台运行DHCP的机器上也是有用的,目的是为了集中管理。

DHCP也可用于直接为服务器和桌面计算机分配地址,并且通过一个PPP代理,也可为拨号及宽带主机及住宅NAT网关和路由器分配地址。DHCP一般不适用于使用在无边际路由器和DNS服务器上。

1.1.4 NAT技术

NAT(Network Address Translation)网络地址转换,当在专用网内部的一些主机本来已经分配到了本地IP地址,但现在又想和因特网上的主机通信时,可使用NAT方法。NAT的实现方式有3种:静态转换(Static NAT)、动态转换(Dynamic NAT)和端口多路复用(Port Address Translation)。

静态NAT设置起来最为简单,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备如服务器的访问。

动态NAT是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时,就可以采用动态转换的方式。

端口多路复用是指改变外出数据包的源端口并进行端口转换,即端口地址转换。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自Internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

在配置网络地址转换的过程之前,首先必须搞清楚内部接口和外部接口,以及在哪个外部接口上启用NAT。通常情况下,连接到用户内部网络的接口是NAT内部接口,而连接到外部网络的接口是NAT外部接口。

假设内部局域网使用的lP地址段为192.168.0.1~192.168.0.254,路由器局域网端(默认网关)的IP地址为192.168.0.1,子网掩码为255.255.255.0。网络分配的合法IP地址范围为61.159.62.128~61.159.62.135,路由器在广域网中的IP地址为61.159.62.129,子网掩码为255.255.255.248,可用于转换的IP地址范围为61.159.62.130~61.159.62.134。要求将内部网址192.168.0.2~192.168.0.6分别转换为合法IP地址61.159.62.130~61.159.62.134。

    第一步,设置外部端口。
    interface serial 0
    ip address 61.159.62.129 255.255.255.248
    ip nat outside
    第二步,设置内部端口。
    interface ethernet 0
    ip address 192.168.0.1 255.255.255.0
    ip nat inside
    第三步,在内部本地与外部合法地址之间建立静态地址转换。
    ip nat inside source static 内部本地地址 外部合法地址
    示例:ip nat inside source static 192.168.0.2 61.159.62.130
    //将内部网络地址192.168.0.2转换为合法IP地址61.159.62.130

至此,静态地址转换配置完毕。