一、OSPF -- (开放式最短路径优先协议) 基于组播更新
--- 224.0.0.5 224.0.0.6
1、协议类型:无类别链路状态的IGP协议
- 无类别:带精确掩码
- 链路状态:不共享路由,共享拓扑(共享LSA)
- IGP:AS内部使用
2、更新方式:周期更新+触发更新
3、结构化部署:区域划分,合理IP地址规划
链路状态协议的更新量随着网络范围的扩大指数性的上升,因此OSPF协议为了在中大型网路中工作,需要结构化部署
4、5种数据包
- Hello包(邻居的发现;关系的建立;周期10s的保活【携带RID】)
- DBD包(数据库描述包:本地数据库目录)
- LSR包(链路状态请求)
- LSU包(链路状态更新)
- LSACK包(链路状态确认)
PS:LSA(链路状态通告)具体的一条一条路由信息或者拓扑信息,不是一个包,被LSU数据包来携带
5、七个状态机
- DOWN:接收到Hello包,进入下一个状态机
- INIT(初始化):将接受到的Hello包,存在本地的RID,进入下一个状态机
- 2way(双向通讯):邻居关系建立的标志
关注条件:已经成为邻接关系时,首先在Exstart state进行选举,然后发送DBD包
- Exstart(预启动):使用不携带目录信息的DBD包,进行主从关系的选举。RID大为主,优先进入下一个状态。---解决目录共享时的无序
- EXchange(准交换):使用携带目录信息的DBD包,共享本地的数据库目录
- Loading(加载):查看完邻接的DBD信息后,对比本地,而后基于本地未知的LSA进行查询,使用LSR向对端查询,对端使用LSU来传输这些LSA信息,本地收到后,需要LSACK来进行确认。
- FULL:邻接关系建立的标志,意味着邻接间本地数据库同步(一致)
6、工作过程
(1)启动配置完成后,邻居间开始收发Hello包,Hello包中将携带本地以及本地所有已知邻居的RID,之后生成邻居表。
邻居间需要关注是否可以成为邻接的条件:如果不能建立为邻接,将保持为邻居关系,仅Hello包周期保活即可。如果可以建立为邻接关系,将使用DBD进行本地数据库目录的对比,基于对比的结果,使用LSR/LSU/LSACK来获取本地未知的LSA信息。
(2)若可以建立为邻接关系,使得邻接关系间的数据库(LSDB)完成同步(一致),生成数据库表。
(3)之后本地基于LSDB,使用SPF算法,生成有向图 --> 最短路径树 --> 计算本地到达所有未知网段的路径,将其加载到本地的路由表中 --> 收敛完成
(4)收敛完成后,邻居和邻接关系的Hello包,将每10s发送一次进行保活;每30min一次邻接关系间的周期数据库比对,保障一致。
LSDB -- (链路状态数据库)--- 所有LSA的集合
7、发生结构突变
- 新增网段
- 断开网段
- 无法沟通:dead time 是hello time 的4倍。在4次周期内未收到对端的hello包,将断开与其的邻居关系,删除通过该邻居计算所得路由
8、基础配置
[r1]ospf 1 router-id 1.1.1.1 --- 启动时可以定义进程号和RID。默认进程号是1。
[r1-ospf-1]
[r1-ospf-1]area 0 --- 进行划分区域,将其划入区域0
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 ---(OSPF在宣告时,需要使用反掩码,匹配宣告的地址范围)
[r1-ospf-1-area-0.0.0.0]network 12.1.1.1 0.0.0.255 ---(反掩码的作用:定义范围)
RID:格式为IPV4地址,全网唯一。RID取名顺序:手工>自动取值。(自动取值:环回接口取最大数值;无环回取物理接口最大数值)
(1)OSPF的宣告特点:
[1] 找到接口并且激活---可以收发OSPF信息
[2] 被选中接口的拓扑信息可以共享给邻接
[3] 进行区域划分:
规则:
a. 星型结构 – 编号为0为骨干区域(中心),编号大于0为非骨干区域(分支)(非骨干区域直连骨干区域)
b.必须存在ABR(ABR:区域边界路由器。两个接口间互连的设备)
(2)配置完成后,开始工作:
启动配置完成后,邻居间收发Hello包,然后建立邻居关系,生成邻居表
<r1>display ospf peer --- 查看邻居关系
<r1>display ospf peer brief --- 查看邻居简表
邻居关系建立后,关注条件:匹配失败后,保持为邻居关系,仅Hello包周期保活;匹配成功后,可以建立为邻接(毗邻)关系。
邻接关系间,将使用DBD/LSR/LSU/LSACK来获取本地未知的LSA信息,完成本地的LSDB(数据库表)。
<r1>display ospf lsdb --- 查看数据库表
当数据库同步完成后,本地基于SPF算法,将数据库转换为有向图,再将有向图转换为树形结构,之后基于树形结构,以本地为起点到达所有未知网段的最短路径,加载到路由表。
<r1>display ip routing-table protocol ospf --- 查看OSPF路由
(3)注意事项:
[1] 优先级为10。度量为cost值(cost值=开销值)
[2] (OSPF cost = 参考带宽/接口带宽)默认参考带宽为100M。
[3] OSPF优选cost值之和最小的为最佳路径;若两条链路cost值相同,则形成等开销负载均衡。
若接口带宽大于参考带宽,cost值为1,将可能导致选路不佳,建议修改为默认参考带宽
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
[r1-ospf-1]bandwidth-reference 1000
PS:修改参考带宽,全网须一致
9、拓展配置
(1)DR/BDR(指定路由器/备份指定路由器)选举:是邻居成为邻接关系的条件,与网络类型有关。
网络类型:
a.点到点 – 在一个网段内,只能存在两个节点。 -- (串线链路)
b.MA – 多路访问—一个网段内的节点数量不限制。不是当下连接几个节点,而是该网络类型允许连接多个节点。--(以太网)
邻居成为邻接关系:
(点到点网络邻居关系直接成为邻接关系;在MA网络中,将进行DR/BDR选举。)(dead time 和选举时间相同)
(在一个网段中,仅DR/BDR与其他路由器为邻接关系;非DR/BDR之间的路由器为邻居关系。)
例:一个网络中出现纯粹的邻居关系,至少需要4台路由器
[1] 选举规则:首先比较该网段所有参选设备接口的优先级,越大越优先(默认优先级为1,取值范围0-255,0标识不参选);如果所有参选设备的优先级相同,就比较参选设备的RID,数值大就优先。
[2] 干涉选举:
<1> DR优先级改为最大,BDR优先级次大。-- OSPF选举是非抢占性的,所以在修改完优先级后,需要需要所有路由器重启OSPF进程。
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]ospf dr-priority 3 --- 修改接口优先级
<r1>reset ospf process --- 重启OSPF进程
Warning: The OSPF process will be reset. Continue? [Y/N]:y
<2> 将DR优先级改为最大,BDR优先级次大,其他设备修改为0,无需重启进程
(2)区域汇总:-- OSPF协议不支持接口汇总,只能在ABR上将A区域拓扑计算所得路由,共享给B区域时汇总。
[r2]ospf 1
[r2-ospf-1-area-0.0.0.0]ab
[r2-ospf-1-area-0.0.0.0]abr-summary 1.1.0.0 255.252.0.0
以上操作为,R2为一台连接区域0和其它区域的ABR,R2将通过区域0通过拓扑计算所得的路由,传递给其它区域时进行汇总,汇总网段为1.1.0.0/22
(3)被动接口(沉默接口):仅接受不发送路由协议信息,用于连接用户终端的接口,不得用于连接邻居路由器的接口,否则无法建立邻居关系。
[r2]ospf 1
[r2-ospf-1]silent-interface g0/0/0
(4)认证(接口认证):在直连邻居或者邻接的接口上配置,保障更新的安全。
[r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
模式(md5)、编号(1)、密码(123456)(都要求邻居间一致)
(5)加快收敛
邻居间计时器:10s Hello time 40s dead time
邻居间,修改本端的hello time,本端的dead time自动4倍关系匹配;但OSPF中邻居间的hello time 和dead time 必须完全一致,否则无法建立邻居关系。
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0] ospf timer hello 5
(6)缺省路由:边界路由器配置后,自动向内网发布一条缺省路由,之后内网设备将自动生成一条缺省路由
[r2]ospf 1
[r2-ospf-1]default-route-advertise always
二、ACL(访问控制列表)
1、作用:
- 访问控制:在路由器流量进口或者出口的接口上,匹配相应流量产生动作--允许/拒绝
- 定义感兴趣流量:抓取流量后给其它策略,让其它策略进行工作
2、访问控制的匹配规则:从上往下,逐一匹配。上条匹配按照上条执行,不再查看下条。
(cisco末尾隐含拒绝所有;华为末尾允许所有)
[1] 分类:
- 标准 --- 仅关注数据包中的源IP地址
- 扩展 --- 关注数据包中的源IP地址,目标IP地址,目标端口号或协议号
[2] 配置命令:
<1> 标准 --- 标准ACL仅关注数据包中的源IP地址,故调用时尽量靠近目标,避免对其他流量的误删。
[r2]acl 2000 --- 编号2000-2999为标准列表编号,一个编号代表一张表
[r2-acl-basic-2000]rule deny source 192.168.1.3 0.0.0.0
[r2-acl-basic-2000]rule deny source 192.168.0.0 0.0.255.255
动作 源IP地址 通配符
[r2-acl-basic-2000]rule deny source any (any:代表所有)
源IP地址需要使用通配符来匹配范文。通配符和反掩码的区别,通配符可以0与1穿插书写
例:192.168.1.1 0.0.0.128 ---> 192.168.1.1 192.168.1.129
ACL定义完成后,必须在接口上调用方可执行。调用时注意方向(方向:inbound outbound),一个接口的一个方向上只能调用一张表。
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]traffic-filter ?
inbound Apply ACL to the inbound direction of the interface
outbound Apply ACL to the outbound direction of the interface
[r2-GigabitEthernet0/0/0]traffic-filter outbound acl 2000
<2> 扩展列表配置 --- 扩展ACL源IP地址、目标IP地址均关注,所以调用时尽量靠近源IP,尽早处理流量。
[r1]acl 3000 扩展列表编号 3000-3999
[r1-acl-adv-3000]rule deny ip source 192.168.1.3 0 destination 192.168.3.2 0
源IP地址 目标IP地址
(范围 ---> 主机;主机 ---> 范围)都可以
源IP和目标IP地址,使用通配符0标识一个主机,或使用范围标记段,或使用any均可
<3> 使用扩展列表,同时关注目标端口号
- 目标端口号:服务端使用注明端口来确定具体的服务
- ICMP(IPV4) --- Internet控制管理协议。(例:ping)
Telnet --- 远程登录(明文不加密、基于TCP、目标端口23)
远程登录条件:
a.被登录设备和登录设备网络可达
b.被登录设备进行了Telnet服务配置
[r1]aaa (reduce服务器,存储账号密码的服务器)
[r1-aaa]local-user ddd privilege level 15 password cipher 123456
Info: Add a new user.
[r1-aaa]local-user ddd service-type telnet
创建名为ddd的账号,账号密码为123456,权限最大(15),账号仅用于telnet远程登录
[r1]user-interface vty 0 4
[r1-ui-vty0-4]authentication-mode aaa 在vty线路开启认证
通过vty接口登录,用aaa账号核实
[r1]acl 3001
[r1-acl-adv-3001]rule deny tcp source 192.168.1.1 0 destination 192.168.1.2 0 destination-port eq 23
拒绝 192.168.1.1 对 192.168.1.2 访问时,传输层协议为TCP,且目标端口号为23
[r1-acl-adv-3001]rule deny icmp source 192.168.1.1 0 destination 192.168.1.2 0
仅拒绝192.168.1.1对192,168.1.2的ICMP访问
附:
IPV4地址中,存在私有与公有IP地址的区别:
公有:具有全球唯一性,可以在互联网通讯,需要付费使用
私有:具有本地唯一性,不可在互联网通讯,不用付费使用
(私有IP地址:10.0.0.0/8 172.16.0.0/16 – 172.31.0.0/16 192.168.0.0/24 – 192.168.255.0/24)
三、NAT(网络地址转换)
1、本质:在边界路由器上,对进、出的流量进入源IP地址或目标IP地址的修改。(边界路由器上,连接外网的公有IP地址所在接口配置)
2、特点:内网 ---> 外网(改源IP);外网 ---> 内网(改目标IP)
3、记忆方式:一对一 一对多 多对多 端口映射
(1)一对多:一个公有IP地址对应多个私有IP地址 (PAT端口地址转换)
先使用ACL定义可以被转换的私有IP地址范围
[r2]acl 2000
[r2-acl-basic-2000]rule permit source 192.168.0.0 0.0.255.255
(公网所在接口,在ACL2000列表中关注的私有IP地址,通过该接口转出时,源IP地址修改为该接口公有IP)
[r2]int g0/0/2
[r2-GigabitEthernet0/0/2]nat outbound 2000
(2)一对一配置:(连接公网的接口配置)
[r2-GigabitEthernet0/0/2]nat static global 12.1.1.3(公有IP) inside 192.168.1.10(私有IP)
(3)端口映射
[r2-GigabitEthernet0/0/2]nat server protocol tcp global current-interface 80 inside 192.168.1.10 80
外部访问该接口IP – 12.1.1.1且目标端口号为80时,将被修改为192.168.1.10 目标端口号为80
Warning:The port 80 is well-known port. If you continue it may cause function failure.
Are you sure to continue?[Y/N]:y
[r2-GigabitEthernet0/0/2]nat server protocol tcp global current-interface 8888 inside 192.168.1.20 80
外部访问该物理接口IP -12.1.1.1 且目标端口号为8888时,将被修改为访问192.168.1.20 目标端口80
(4)多对多配置
[r1] nat address-group 1 12.1.1.3 12.1.1.10 先定义公有IP地址范围
[r1] acl 2000 --- 再定义私有IP地址范围
[r1-acl-baisc-2000] rule permit source 172.16.0.0 0.0.255.255
在连接公网的接口上配置多对多
[r1-GigabitEthernet0/0/1] nat outbound 2000(私有范围) address-group 1(公有范围)
[r1-GigabitEthernet0/0/1] nat outbound 2000 address-group 1 no-pat ---(变成一对一)多个一对一