DHCP
不想要每次都手动配置静态ip地址时,使用动态主机配置协议,自动分派IP
分为申请获得ip地址的客户端(68端口),与负责分配ip地址的服务器(67端口)
DHCP流程
客户机第一次申请获得ip地址时,广播一个DHCP---discover包。
包内源IP地址:0.0.0.0
目标IP地址:255.255.255.255
源MAC地址:客户机自己的MAC地址
目标MAC地址:全F
此时客户机只有MAC地址而没有IP地址,于是广播一个涵盖所有地址的数据包,意为寻找附近的DHCP服务器,向他们申请一个可用的IP地址
当服务器收到此数据包后,需要向此客户机发送一个含有可用ip地址的数据包,即DHCP---offer包,表明自己可以为此客户机提供一个可用的ip地址。
此时的客户机可能收到多个服务器提供的offer包,他会选择离自己最近,也就是第一个回复的DHCP服务,同时广播一个DHCP-request包,表明自己选择了哪一个服务器
服务器收到request包后,再度对客户机发送一个DHCP--ACK包,表明确认
客户机断联后,想要申请继续使用Ip地址时,对之前的服务器发送DHCP--request包,用于申请上次的ip地址
若服务器还有此ip地址,则发送一个ack包,表示此ip地址客户机可以继续使用
若服务器将此ip地址下发给别的设备了,则发送一个DHCP----NAK包,表示拒绝
此时客户机再次执行第一次申请ip地址的步骤
客户机ip地址使用12小时后,向服务器单播发送一个request包申请续租,若服务器回复ack包,则客户机此ip地址的租期归零,重新计算租期
若服务器没有回复ack包,直到ip地址使用21小时后,客户机广播发送一个request包,试图找到上次申请ip地址的服务器申请续约,若服务器回复ack包,则客户机此ip地址的租期归零,重新计算租期
若未回复,24小时租期到期后释放ip地址,再度重复第一次申请ip地址的步骤
配置DHCP
首先建立路由器和pc端,并为路由器端口分配网关
之后打开DHCP服务,开启ip地址池,并为地址池分配网段
定义地址池网关
定义DNS地址
进入网关对应接口,告知此接口需要负责IP地址下发工作
此时启动pc1的DHCP,可以发现PC1已经自动获取了一个ip地址
静态路由
为了查找不同网段的ip,我们要使用路由器进行查找,路由器在路由表中查找是否存有此网段的记录,找到则转发,没有找到则丢弃
而为了让路由器知道更多的与自己非直连的网段,可以靠管理员手写路由条目配置静态路由,也可以让路由器自动获取动态路由
配置静态路由,则是在此路由器的路由表中书写对应的路由条目,具体代码为:
ip route-static 目标网段 下一跳地址
R1与R3不是直连状态,无法直接联通,为了使数据传输到对方手上,与对方进行正常通信。需要在双方的路由表中手动添加路由条目
为R1添加到R3的路由条目
目标网段为192.168.2.0网段,下一跳地址为自己连接的距离此网段最近的一个接口,即192.168.1.2
同理,为R3也添加路由条目,使数据能够来回
进行测试,可以发现两台路由器已经可以相互找到对方的网段了
注意,在配置静态路由时,若R2的路由表中,需要将某个网段的信息通过192.168.2.2接口转发出去给R3,而在R3的路由表中,此网段的信息又需要通过192.168.2.1接口转发给R2,则会产生路由环路,此现象会导致数据包不断循环转发,造成大量网络资源浪费
静态路由在配置时,会出现一台路由器到另一台路由器有多条线路的情况,尽量选择路线最短的一条路
负载均衡
若R4前往R5有两条相同长度、开销相似的路,会分为两部分进行同时传输,达到叠加带宽的作用
优先级pre
这两条相同长度的路线所有的带宽却不一定相同,若上面的这条路线带宽为100M,下面的这条路线带宽为1000M,可以更改上面这条路的优先级,使数据优先通过带宽为1000M的路线传输。只有当优先级更高的路线出故障时,路由器才会将数据从带宽为100M的路线传输
ip route-static 目标网段 下一跳地址 preference 61
改变这条线路的优先值为61
优先值的取值范围为0-255,优先值越低优先级越高,直连的优先值默认为0,静态的优先值默认为60
当两条路由条目的目标网段相同时,加载优先级更高的那条路由条目进路由表
环回接口
在路由器上配置一个虚拟的接口,不需要真正的设备连接,用于网络测试
interface LoopBack 0
进入0号环回接口
手工汇总
路由表中存储的路由条目越多时,查找对应的网段需要进行的判断就越多,转发数据的速度就越慢,为了加快数据转发的速度,减少路由条目的长度,我们可以将连续且下一条地址相同的网段进行手工汇总
例如192.168.1.128/27网段与192.168.1.160/27,若他们通过的接口都是同一个,则可以在路由表将两条网段汇总成192.168.1.128/26,达到提高转发效率的目的
ip route-static 192.168.1.128 27 192.168.2.1
ip route-static 192.168.1.160 27 192.168.2.1
这两条路由条目可以用一条来声明
ip route-static 192.168.1.128 26 192.168.2.1
路由黑洞
若子网汇总后,里面包含了实际不存在的子网,则会造成路由黑洞。路由器根据汇总后的子网将数据包转发进广播域中,但实际上此广播域内并没有这个数据包寻找的ip地址,会导致数据包有去无回,这会造成严重的资源浪费
缺省路由
一条不限定目标的路由,任何不在路由条目上的ip地址都可以根据这条路由转发出去
ip route-static 0.0.0.0 0 下一跳地址
缺省路由的网段为0.0.0.0,子网掩码为0.0.0.0
一旦路由黑洞与缺省路由相遇后,必然会形成路由环路
空接口
为了防止路由黑洞与缺省路由相遇,造成路由环路,我们使用空接口来丢弃路由黑洞里不存在的子网接收到数据包
空接口:NULL 0 接口,任何路由条目的出口如果为空接口,则直接丢弃
ip route-static 192.168.0.0 22 NULL 0
动态路由
静态路由工作量大,且不会随着拓扑的改变而改变,必须手动更新,对于更庞大的网络而言,使用会实时收敛的动态路由更加方便
但动态路由因会导致各种安全风险,且路由器的自动更新也有可能导致路由表受到外部攻击、篡改
基于AS分类
IGP内部网关协议 RIP OSPF(免费) EIGRP(收费) ISIS
EGP外部网关协议 BGP
AS:自制系统 标准编号 0-65535
基于工作特点分类
更新时是否带子网掩码 有类别(不带) 无类别(带)
DV距离矢量协议 RIP ERIGRP 邻居间共享路由表 算法:贝尔曼福特算法
LS链路状态协议:OSPF ISIS 邻居间共享拓扑 算法:SPF
RIP
组播更新 224.0.0.9
周期更新
保活:保障邻居活着,每隔30s发送一次周期更新包,发6次
RIP的破环机制
抑制计时器 30s更新 180s失效 180s抑制 300s刷新
V1版本配置
定义进程号,默认值为1,仅具有本地意义
rip
选择V1版本
version 1
宣告网段,只能进行主类宣告,A类宣告前8,B类宣告前16,C类宣告前24,激活接口,共享信息
network 1.0.0.0
V2版本配置
义进程号,默认值为1,仅具有本地意义
rip
选择V2版本
version 2
关闭自动汇总,若不关闭将会使用主类长度掩码进行发送
undo summary
宣告网段
network 1.0.0.0
若要进行手工汇总,则进入先端口,然后进行配置
rip summary-address 1.1.0.0 255.255.252.0
若要进行手工认证,让两台路由器进行加密,则必须在与邻居相邻的接口进行配置
rip authentication-mode md5 usual cipher 123456
对于只需接收信息,无需传递信息的pc端,可以将其接口设置为被动接口
silent-interface g 0/0/1
timers rip 30 180 300
default-route originate
OSPF
开放式最短路径优先协议 无类别链路状态 IGP动态路由协议 (传递掩码)
距离矢量协议:运行此协议的路由器会周期性泛洪自己的路由表,通过这种行动来学习相邻路由器的路由表。路由器并不知道拓扑结构,但是知道目的地的方向和距离
链路状态协议:交换链路状态,而不交换路由表。运行此协议的路由器会建立邻居状态,并与邻居交互LSA(链路状态通告),路由器将接收到的LSA放入自己的LSDB(链路状态数据库)中。通过此数据库掌握拓扑信息,最后通过SPF算法计算出最优路径,随后加载于自己的路由表中。
OSPF的特征:
支持等开销负载均衡
基于组播进行更新----224.0.0.5 224.0.0.6
支持触发更新 ; 每30min进行一次周期更新
需要结构化的部署
相同区域传递拓扑,不同区域传递路由
区域划分时,必须是星型结构其中0区为骨干区域,大于0则为非骨干区域,所有非骨干区域必须接入到骨干区域上,当两个区域相连时,中间必须有同时工作在两个区域内的域间路由器ARB
Router-ID 路由器标识符 ,用于一个OSPF域中唯一的标识一台路由器,可以手工配置,也可以系统自动生成,建议使用IP地址进行手工配置,要是不进行手工配置则会自动生成-------优先配置为环回的最大数值,如果没有环回,则自动配置为最大物理接口数值。
若接口带宽大于参考带宽,则度量值为1,可能会导致选路不佳,故而在接口带宽大于参考带宽的网络中,可以人为的修改参考带宽。
[R1-ospf-1]bandwidth-reference 1000
ospf的数据包类型
HELLO包 用于邻居间的发现 关系建立 及保活
DBD包 数据库描述包 用于携带本地数据库目录
LSR包 链路状态请求包 在查看完对端邻居的DBD包后,基于本地的位置查询LSA 随后去索要未知的LSA信息,就通过这个LSR包
LSU包 链路状态更新包 用于携带各种LSA信息
LSACK包 链路状态确认包 用于确认接收到对端的信息
ospf的状态机
Exstart 状态:预启动状态
Exchange 状态: 准交换状态
Loading 状态: 加载状态 在查看完对端邻居的DBD包后,使用LSR包来询问自己位置的LSA信息,对端使用LSU包进行回复,本地还需要使用LSACK进行确认回复。
Full 状态: 邻接关系建立的标识
ospf的工作过程
启动配置完成后,本地组播 224.0.0.5 发送hello包,Hello包将携带本地的RID值,及已知的邻居的RID值,若接收到对端的hello包中有自己的RID则视为认识,达成邻居关系的建立,生成邻居表,开始条件匹配。成功,则进入下一个阶段;不成功,则永远是邻居
使用空的DBD包进行主从选举,对比RID,大为优,且优先进入下一个状态,优先共享数据库目录。使用 LSR/LSU/LSACK 来获取未知的LSA信息并加载于本地的LSDB中。
启用SPF算法,基于本地LSDB生成有向图,在计算出最短路径树,在基于树形结构算出本地为起始点到达全网各个节点的最优路径,最后加载于本地路由表中,收敛完成后,hello保活即可。
每30min进行一次周期更新,周期更新即为对比数据库目录,如果相同 则继续hello包保活,如果不相同,则重新收敛。
结构突变
新增一个网段 直连新增网络设备,直接使用更新包告知邻接关系,需要ack确认
断开一个网段 直连断开网络设备,直接使用更新包告知邻接关系,需要ack确认
无法沟通 hello time 10s ,dead time 40s,时间到了就删除邻居信息
ospf的基础配置
创建ospf进程号为1 仅具有本地意义 同时定义RID值 建议使用IP地址 全网需要唯一
进入0 区
查询详细邻居关系
查询邻居表
查询链路状态数据库
查询详细邻居关系
查询邻居表
查询链路状态数据库
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 (此处使用反掩码)
<R1>display ospf peer
<R1>display ospf brief
<R1>display ospf lsdb
ospf的扩展配置
从邻居关系建立成为邻接关系的条件
网络类型----两个
①点到点的网络:在一个网段中,仅支持存在两个节点的网络。(在点到点的网络类型中,可以直接成为邻接关系)
②MA:多路访问---在一个网段内,存在的节点数量不限
在MA网络中,若所有设备均是邻接关系,则会造成大量的重复更新,故,进行DR/BDR的选举,所有非DR/BDR的设备被称之为DRother,DRother之间维持邻居关系。
选举规则
- 先比较参选接口的优先级 默认1 范围0-255 大为优
-
若参选接口的优先级相同,比较参选设备的RID,大为优
ospf的DR选举是非抢占性的,即便修改优先级后也不会立刻刷新,故需要重启ospf进程达到重新选举的目的
[R1-GigabitEthernet0/0/0]ospf dr-priority 2 将参选接口优先级改为2
<R1>reset ospf process 重启ospf进程
手工认证
在邻居间接口上定义安全密钥
[R1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456