AIOps 一场颠覆传统运维的盛筵
825
2022-10-13
网络运维所有知识总结篇
网络建设、运维所有知识总结篇
OSPF
OSPF的特点:
1.无环路:AS内防环机制是通过SPF算法计算路由,从算法本身保证了不会生成环路。AS间防环:通过区域划分,非骨干区域简直的通讯只能靠骨干区域通讯。
2.区域划分:优点减小了内存的消耗和CPU的负担。
3.支持等价路由。
4.路由等级:区域内、区域间、区域外(E1、E2)
自制系统(Autonomous System)
一组使用相同路由协议且处于同一技术掌控的连续的路由范围。
一台OSPF路由器对其他OSPF路由器的跟踪需要每台路由器都提供一个RID,路由器ID在OSPF区域内唯一标识一台路由器,1.手工route-id配置;2.最大loopback地址;3.最大IP地址。
使用loopback地址的好处:1.稳定,一旦路由器启动,这个环回接口就处于活动状态。2.最重要的是具有更好的控制路由ID的能力。
OSPF建立在协议号89的基础上,是传输层协议;EIGRP协议号88;RIP使用UDP520因此是应用层协议;BGP使用TCP179端口因此也是应用层协议;ARP/RARP是网络层协议,但是其工作的内容确实链路层。
并且注意对于ARP请求和相应包来说有帧类型字段,对于ARP请求和应答的话这个字段是0x0806。其帧头中具有协议字段,0x0800代表IP,因此工作在网络层。
Hello协议:
1.发现邻居;
2.在建立邻居关系时利用Hello包协商几个必要的参数;
3.确保双向通信;
4.充当keepalive。
5.用于在MA网络上进行DR/BDR的选举。
OSPF建立邻居的条件:(百度笔试考了)
1.Area ID必须一致;
2.Hello包中的HelloInterval和HelloDeadInterva的时间必须相同;
3.验证类型及验证密钥必须相等;
4.所处的区域标记必须相同;
5.必须物理直连(OSPF包的TTL值为1,虚链路除外);
6.同一区域内两台路由器的RID不能相同。
注意:路由器在发送Hello包时,会把包含所有邻居的RID。
OSPF网络类型:
1.点到点
T1链路:1.544Mbps,是链接单独一对路由器的。在这种类型的链路上总是可以形成邻居关系的。在这种网络上的OSPF使用组播地址进行通讯。
2.广播型网络
比如以太网,DR与BDR使用AllSPFRouters(224.0.0.5)与非DR/BDR进行通信,而非DR/BDR使用AllDRothers(224.0.0.6)与DR/BDR进行通信。
3.NBMA网络
比如帧中继网络,这样多路访问网络没有广播能力,需要选举DR和BDR,并且OSPF数据包是以单播进行通信的,必须要使用neighbor手工指定邻居。
4.点到多点网络
是NBMA网络的特殊配置,可以看做是一群点到点链路的集合。不需要选举DR/BDR,OSPF数据包以单播进行传输。
5.虚链路
OSPF数据包以单播方式发送。
除了以上5中网络类型,也可以将网络归纳为以下两种网络
传送网络:与两台及以上的路由器相连的网络。
末梢网络:仅仅和一台路由器相连。
如果没有DR/BDR的话,那么网络上将产生n²个:LSA通告,显得太乱了,于是就选举DR。
1.首先根据端口优先级(缺省为1,ip ospf priority),越大越优先。0表示没有资格选举为DR。
2.优先级相等,再根据RID,越大越优先。
注意DR/BDR具有稳定性,指的是:路由器的优先级可以影响一个选举过程,但是一旦选举完毕,即使更高的优先级加入后也不会替换DR/BDR。这点与RID类似。
DR是一个伪节点的概念,即任从伪节点到任何与之相连的路由器的代价都有0,通过这种方式,所有代价都不会受到伪节点的影响。并且DR是接口特性。
Process ID:这个是思科私有的,可以依赖这个属性让Cisco路由器运行多个OSPF进程。不同进程之间相当于不能类型的协议。
OSPF Hello Interval:在广播型网络上为10s(点到点或者广播),非广播上为30s(点到多点或NBMA)
OSPF RouterDeadInterval:广播型网络上为40s,非广播为120s。(注意是4倍关系)
Wait Timer(等待计时器)在开始选举DR和BDR之前,路由器等待邻居路由器通告自己为DR、BDR的时间,等待长度就是RouterDeadInterval的时间。
RxmtInterval(重传时间):路由器发送OSPF数据包后没得到回复之前将要等待多长时间重传。5s
Neighboring Router:只有建立起了邻接关系的路由器之间,才会在这个字段中显示出邻居路由器的RID。
以上信息可以通过:show ip ospf interface f0/0中查看到。
OSPF接口状态机:
1.Down
2.点到点:这个状态仅适用于点到点,点到多点,以及虚链路网络中,接口处于这个状态后,该接口就开始起作用了。此时每隔HelloInterval的时间发送一次Hello数据包,并尝试和接口链路另一端相连的邻居路由器建立邻接关系。
3.Waiting:这个是MA网络中会出现的,开始发送Hello包,并且试图去选举DR和BDR或者去发现网络中的DR或BDR。
4.DR:这样状态就代表该路由是DR
5.Backup:该路由器是 BDR。
6.DRother:既不是DR也不是BDR的路由器。
7.Loopback:环回口。
邻接关系的四个阶段:
1.邻居发现阶段;
2.双向通信阶段;
3.数据库同步阶段;
4.Full完全邻接阶段;
邻居状态机,邻居之间形成完全邻接关系的过程:
1.失效状态(Down):邻居会话的初始状态,指明在最近的RouterDeadInterval的时间内还没有收到来自邻居路由器的Hello数据包。除非在NMBA网络中,否则Hello包是不会发给哪些失效的邻居路由器的,并且在NBMA网络中,是以每个隔PollInterval(120s)的时间发送一次。
2.尝试状态(Attempt):仅适合NMBA中,哪些具有DR选举这个的路由器和其邻居路由器的相连的接口开始变得有效(Active),这台具有DR选举资格的路由器将邻居路由器的状态设为Attempt状态,并使用HelloInterval时间代替PollInterval的时间来向邻居发送Hello包。
3.初始状态(Init):在最近的RouterDeadInterval的时间内,收到的邻居的Hello包。
4.双向通信阶段(2-way):在来自邻居路由器的Hello包中看到了自己的RID。(只有在这个状态或者更高状态时才有资格被选作该网络上的DR或BDR,如果在Init收到一个DBD数据包,也可以引起邻居状态直接转换成2-way状态)。
5.信息交换初始状态(ExStart):开始建立主从关系和协商DBD的序列号。并且具有最高RID的路由器成为”主“路由器。注意:主从关系的协商也是靠DBD包的,只是此时交换的DBD包中的I位(初始位)置1.
6.信息交换状态(Exchange):在这个状态先双方开始交换DBD,并且根据DBD形成LSR,并向对方发送链路状态请求数据包。
7.信息加载状态(Loading):这个状态下,收到邻居发送的LSR,并且返回LSU进行交换链路状态通告信息(LSA)。
8.完全邻接状态(Full):邻居路由器之间具有相同的链路状态数据库,达到完全邻接关系。
在交换LSA之后必须对其进行确认,LSA的确认有两种:
1.显示确认:直接返回含有LSA头部的LSAck消息;以前已经收到过了。
2.隐式确认:返回收到LSA的相同实例的LSU;第一次收到。
注意OSPF对LSA的确认可以使用单个链路状态确认多个LSA通告。这个链路状态确认数据包不需要携带完整的LSA信息,而只是需要携带LSA的头部就可以了。没收到确认的LSA会被放进链路状态重传列表中,并且每个RxmtInterval(5s)时间就会重新传输一次,知道该LSA得到确认为止。其中LSAck可以被延时发送,但是延时时间必须小于RxmtInterval时间。
OSPF采用直接确认的两种情况:
1.从邻居不断的收到重复的LSA,可能表明邻居还没有收到这个LSA的一链路状态数据库里已经没有这个LSA的实例。
可靠泛洪:序列号,校验和,老化时间
当路由器收到相同的LSA的多个实例,路由器如何确定哪个是最新的:
1.比较序列号,拥有最大的序列号的LSA就是最新的LSA;
2.假如相等,比较谁拥有最大的无符号校验和。
3.校验和也相等的话,就比较老化时间谁的大谁是最新的LSA。
4.如果这些LSA的老化时间之差多余15min(MaxAgeDiff),那么拥有较小的老化时间的LSA将是最新的LSA。
5.如果还比较不出来那么就无法区分谁是最新的LSA,那么这两个LSA就被认为是相同的。
OSPF定义了以下3种
域内通信(Intra-Area Traffic)
域间通信(Inter-Area Traffic )
外部通信(External Traffic)
被分割的区域(或称为分段区域,Partitioned Area):由于链路失效而使一个区域的一部分和其他部分隔离开来的情形。非骨干区域变成分段区域,此时并不会中断通信,他们之间的通信会被认为是区域间的通信。但是如果骨干区域分段了,那么会把骨干区域隔离成两部分区域,并在两部分区域上创建两个单独的OSPF域。
我们解决的办法就是利用虚链路(Virtual Links)
1.通过非骨干区域连接一个区域到骨干区域。
2.通过 一个非骨干区域连接一个分段的骨干区域两边部分区域。
配置虚链路注意事项:虚链路不能是一个末梢区域,必须是传送区域(即必须拥有全部的路由信息),并且必须配置在两台ABR之间。
OSPF采用 LSA组步调(group pacing)的机制:每一个LSA通告都有属于自己的重新刷新计时器,但是当它们独自使用的重刷新计时器超时(30min)的时候,会引入一个时延来延迟这些LSA通告的泛洪扩散。通过时延可以让更多的LSA通告共同编成一组,从而可以让跟新数据包携带大量的LSA通告,默认情况下足步调时间为4min。
OSPF数据包类型:1.Hello包:周期性发送,用来发现和维持OSPF邻居关系的 。这个是依赖于计时器的,比如在 高速链路上Hello Interval:10s,死亡时间是40s;低速链路30s,死亡时间120s。(这个高速与低速是本很被评级而不是实际的带宽。)
2.DBD包:描述本地LSDB中每条LSA的摘要信息,和DR与BDR的选举(2-way状态)包含一些字段:I初始为、M后继位、MS主从,发生在ExStart状态、DC(用于按需链路上的do not age位)
3.LSR包:向邻居请求特定的LSA。
4.LSU包:包含LSA。
5.LSAck:确认收到的LSA。(确认DBD和LSU两种数据包。)
OSPF邻接的条件:
1.区域ID
2.hello/dead time
3.认证类型
4.末节区域标记
5.物理直连(否则怎么可能是邻接的呢!!!)
OSPF数据库同步
OSPF无论网络类型都是使用组播地址发送更新的,只有在发送确认包的时候使用单播地址。(224.0.0.5allspfrouter,224.0.0.6alldrouter),不过有时候在非广播网络中我们使用neighber命令则使用的是单播,我们这里讲的是默认方式。
同步数据库过程:
1.Down(失效状态):邻居会话的初始状态,在一个RouterDeadInterval的时间内没有收到来自邻居的Hello包。
2.Init(初始状态):当一台路由器发送Hello包后其状态变成Init状态。注意这里使用的是组播(224.0.0.5)发送Hello包,这是因为在刚开始其邻居表是空的,不可能以单播发送Hello包。当其邻居路由器收到这个组播包后,就知道对方的IP地址了,然后以单播反馈hello包,然后就达到下一种过程w-way。
3.Two-Way(双向通讯):收到邻居发送的Hello包中看到自己的RID。(DR/BDR的选举在这个阶段,前提是需要选,在广播 和NBMA网路中需要选。注意DR的概念是限于端口的,是一个多路访问环境一个DR,DR是用过路由器的优先级选择的(0~255,默认是1,0表示没有资格被选举为DR,可在接口下通过:ip ospf priority修改,优先级相等再根据RID,都是越大越优先。))
4.ExStart(信息交换的初始状态):路由器和其邻居路由器建立主从关系(确定谁先发送DBD包)并确定DBD包的序列号。
5.Exchange(信息交换状态):双方交换DBD信息,并根据收到的DBD与本地链路状态数据库作比较然后形成LSR包。
6.Loading(信息加载状态):向邻居发送LSR请求最新的LSA链路状态通告信息,此状态双方正在同步链路状态数据库。
7.Full(完全邻接状态):当邻居路由器之间具有相同的LSDB时,就达到了完全邻接状态。
通过:debug ip ospf adj可以观察到邻接关系建立的过程。
邻居是关系达到two-way的状态,邻接是关系达到full的状态,邻居关系只互发hello包,邻接关系则发DBD,LSU,LSA这些
当路由器检测到本地链路发生改变的时候的过程:1.当R1检测到链路发生变化的时候会发送LSU给DR,在MA网络中洪泛任务交给DR来完成(BDR也记录这些路由信息的变化,只是接下来不会再从自己的接口泛洪出去)。
2.然后同步完LSDB后再根据算法计算最短路径树形成路由。
以上R1与DR之间,DR与DRothers路由器之间是通过单播泛洪的。
OSPF常见的网络类型:
1.point-to-point(点到点网络):连接单独的一对路由器到的。在点到点网络上的有效邻居总是可以形成邻接关系,通过组播更新数据。
2.broadcast(广播型网络):比如在我们的以太网上,连接多台路由器,选举DR和BDR,通过两种组播地址通信。
3.NBMA(非广播多路访问):比如帧中继网络中,可以连接多台路由器,但是没有广播数据包的能力,一个NMBA网络上路由器发送的数据包将不能被其他路由器收到,我们需要通过手工配置邻居的方式解决。需要选举DR和BDR。并且使用单播通信。
4.point-to-multipoint(点到多点):可以看做是一群点到点链路的集合,不需要选举DR和BDR,以单播方式通信。
5.virtual links(虚链路):通过单播传送。
注意:点到点和广播型网络都被认为是一种高速网络(即通过组播更新的都是高速链路)。
传送网络:在传送网络中数据包仅仅是通过这个区域,,始发和目的网络都不是这个区域。
末梢网络:数据包的始发或目的地址属于这个网络。注意:loopback接口可以认为是一种末梢网络,并当做32位主机路由来通告。
OSPF RID:用于表示OSPF的路由器,通过show ip ospf来查看。
1.router-id手工配置。(不包含0.0.0.0和255.255.255.255)
2.最大的逻辑接口环回口IP。(如果在配置新的环回口之前已经起了OSPF进程,我们必须要clear ip ospf process,清一下进程,这个是为了增加其稳定性,也就是DR是没有抢占模式的,即你在网络中新增加一台路由器,这台路由器是不会抢占DR的,我们知道DR,BDR的选举发生在2-way状态,不可能当加入一台新的路由器的时候就重新再经过四个状态,这样即不稳定又消耗带宽,没必要。而在二层STP根桥是有抢占模式的,因此我们配置了root-guard来防护跟被抢占。)
OSPF的两个稳定性:一个是RID不会抢占,一个是DR选举完之后不会抢占。
3.最大的物理接口的IP地址。
注意:如果在不同区域内RID相同此时不影响邻居关系的建立。
在同一区域内时,两边配置相同RID的路由器都能与中中间的路由器建立起邻居关系,但相互之间建立不起来,并且相互学习不到对方的路由,并且中间的路由器不能同时存在两边路由器上的路由,会在两者之间来回跳。
LSA Types
Type1-Router LSA:由每台路由器产生,包含路由器的 直连链路的接口IP前缀和开销,描述到达每台路由的可达性,在其始发的区域内传播。
Type2-Network LSA:由DR产生,描述 直连路由器RID和 直连网段的掩码,表述到达DR或BDR的可达性,在其始发的区域内传播。
Type3-Network Summary LSA:由ABR产生,用来通告本区域外的路由信息(包括前缀、掩码、开销),描述到达ABR的可达性,整个OSPF区域内。
Type4-ASBR Summary LSA:由ABR产生, 通告这台ASBR的可达性(ASBR的RID),在整个OSPF区域内传播。
Type5-AS External LSA:由ASBR产生,描述 到达自治系统外部的路由信息,在整个AS内泛洪(除了Stub,NSSA区域)。
Type7-NSSA External LSA:由NSSA区域内的ASBR产生,描述到达AS外部的路由,在NSSA区域内泛洪。
注意:NSSA External LSA其头部有一个P-bit标志,其置1的时候,会在NSSA区域的ABR路由器上将Type-7的LSA转换为Type-5的LSA然后扩散到其他区域。
而Stub区域内的路由器所发送的Hello包中会有一个E-bit,其置0,表示不接收外部任何置1的Hello包,也就无法与非Stub区域的路由器构成邻接关系了。
了解的LSA:
Type6-MOSPF,用在组播OSPF中。
Type8-External Attribute LSA:外部属性LSA,用在将BGP路由信息重发布到OSPF中携带AS-PATH属性。
Type9-10-11-Opaque LSA:非透明LSA,用于OSPF扩展属性的。
LSA的类型:
O, O IA, E1, E2;E2外部路由的Cost值都相同,E1会加上区域内的的COST。
我们一定要弄懂,COST值是以出接口计算的。无论RIP、EIGRP、OSPF都是这样的。
OSPF链路状态数据库过载保护:在进程下设置:max-lsa 12000(允许接收lsa的最大条目)
如果超过最大数量则会报警: Maximum number of non self-generated LSA has been exceeded "ospf 1" - 2 LSAs,并且过一会儿会down掉邻居关系。
OSPF的被动接口是:禁止发送或接收链路状态更新。
有两种方式:1.先passive-interface default所有端口,再反向开启不被动的接口:no passive-interface s0/0
2.直接passive-interface掉所有要被动的接口。
这个passive接口的作用:比如路由器上的某个端口接的是交换机,我们为了不让OSPF向这个端口发送LSU的包,我们可以将其接口设置为被动接口。有人说为什么之前不发布这个接口不就好了。呵呵,如果我们不通告这个接口那么OSPF的其他路由器就无法学习到这个网段,那么根本就不会通了。注意我们不要再传输网上使用被动接口,否则OSPF的邻居关系就会down掉,只能用在末节网络。
OSPF防环机制:AS内防环机制是通过SPF算法计算路由,从算法本身保证了不会生成环路。
AS间防环:通过区域划分,非骨干区域简直的通讯只能靠骨干区域通讯,区域之间的传输是矢量的,因此就会有区域间的水平分割。
虚链路:
如果非骨干区域没有与骨干区域相连,或者区域0被隔开了或者不来连续,那么就要用到虚链路把各区域的ABR连接起来。并且在虚链路上不会有hello包的产生,因为其实一个虚拟隧道。
我们倾向使用RID建立虚链路,这样更稳定:area n vitual-link router-id
通过:show ip ospf vitual-links查看其状态。看到:Adjacency State FULL(hello suppressed )
路由汇总:
1.隐藏网络的不稳定性。
2.节约路由表体积,节约CPU资源,减少LSA在网络上的洪泛。
区域间汇总:针对类型3LSA汇总(O IA);在ABR上汇总。
域间汇总:针对类型5LSA汇总(O E1、O E2);在ASBR上汇总。
执行了路由汇总的路由器会自动生成一条通往Null0接口的空路由,防止环路。这个 防环主要是在执行汇总路由的路由器上收到上游路由器发送给他的默认路由,那么当某条明细路由down掉后就会匹配这条默认路由,至此就会形成路由环路。
区域间汇总:area n range 192.168.1.0 255.255.255.0 n指的明细路由所在的区域。
默认情况下使用area range命令施行路由汇总后,会自动产生一条指向空接口的null0路由,不过可以通过no discard-route不在它的路由表中加载这条路由。不过如果没有自动创建,可以使用discard-route命令创建。
汇总路由会继承所有明细路由中开销最小值,如果最小开销的路由down掉后,SPF算法会重新计算。OSPF在链路状态变化(比如接口优先级、up/down、cost值)时会重新进行SPF计算。
环回口默认的开销值为1。
对于域外汇总其实在ASBR路由器上使用命令:summary-address 192.168.1.0 255.255.255.0
area range命令的缺省行为是通告指定的范围。它也可以用来抑制一个地址范围的通告,使用关键字:not-advertise的命令area range将使指定范围的前缀被抑制。
OSPF区域间路由过滤:
使用前缀列表挑选路由:
ip prefix-list LIST1 seq 10 deny 192.168.1.0/24
ip prefix-list LIST1 seq 20 permit 0.0.0.0/24 非允许即禁止。
router os 1
area n filter-list prefix LIST out|in
OSPF的默认路由
对于OSPF域内去往AS外时,此时我们可以让ASBR路由器向区域内宣告一条类型为:O*E2的默认路由。当有多台ASBR时,我们最好修改其通告默认路由的开销,让其他的条目做备份。
命令:default-information originate,不过前提是ASBR上必须有一条默认路由,如果没有的话我们可以创建一条指向null0的默认路由:ip route 0.0.0.0 0.0.0.0 null0。不过我们可以通过命令 default-information originate always忽略这个规则。
OSPF特殊区域
Stub(末节)区域:拒绝接受类型5的LSA,同时也拒绝类似4的LSA,ABR路由器上会自动产生一条基于类型3的默认路由,用于引导Stub区域内的路由通往AS外部。
配置命令:区域内每台路由器:area n stub,通过:area n default-cost 10用来改变所通告的默认路由的开销值,默认为1.这个当有多台ABR路由器时,可以更改通告的默认路由cost值,其中一个主,另一个作为备份ABR。
当末梢区域内存在多个ABR路由器时,但是因为缺省路由的原因,区域内部路由器将不能确定那一台路由器才是到达ASBR最优网关。
Totally Stub(完全末节)区域:由于Stub区域传输类型5的LSA是通过ABR,而我们知道通往其他区域也是走ABR,那么我们完全可以决绝类型3的区域间路由,此时会产生一条类型3的默认路由,这条默认路由引导区域内的路由访问AS外部和area间。
配置命令:只需要在ABR上加上:area n stub no-summary(删除类型3的LSA)
NSSA区域:假设一个区域内有ASBR,但是我们又想在区域内拒绝类型5的LSA,我们该如何做呢?此时引入类型7的LSA。即在NSSA区域内传输的是类型7的LSA(此时路由前缀标志为:O N2、1),并且类型7的LSA中有一个P-bit,当P-bit等于1的时候,在NSSA的ABR路由器上会将类型7的LSA转换为类型5的LSA,然后在AS内泛洪。注意:NSSA区域的ABR是不会向NSSA区域内的路由器产生默认路由的,不过在AS内只有一个ASBR的路由器时网络是没有问题的,当其他区域还有ASBR时,此时当类型5的LSA传输到NSSA区域的ABR时是无法将类型5的LSA转换成类型7的。因此就造成了路由不可达的情况。此时我们需要在NSSA区域的ABR路由器上手动配置一条默认路由:area n nssa default-information-originate
配置命令所有路由器:area n nssa
Totally NSSA:拒绝类型3-4-5,引入类型7。
配置命令:只需要在NSSA的ABR上配置:area n nssa no-summary
路由条目(router entries)是到达ABR和ASBR路由器的路由。
可以通过:show ip ospf border-routers来查看。(注意观察到的路由条目的目的地要么是ABR、要么是ASBR)
当一台OSPF路由器检查一个数据包的目的地址时,其最优选路的步骤:
1.选择可以和目的地址最精确匹配的路由(拥有最长的地址掩码的路由)。
2.然后根据区域内、区域间、E1、E2的有限顺序进行选路。
3.默认条件思科路由器最多支持16条等价的路径上实现负载均衡。可以通过maximum-paths来改变。
按需电路上的OSPF
我们知道OSPF每隔10s发送一次Hello数据包,并且每隔30min刷新一次LSA。这些功能用来维护邻接关系,以确保链路状态数据库的精确。不过在按需链路上:LSA的可选字段发生了变化,没有周期性的Hello数据包交换,并且设置了DoNotAge位,因此在所有的LSA中增加了一个新的标识Demand Circuit位(DC-bit),使用命令:ip ospf flood-reduction命令。
OSPF认证
0:不认证
1:明文认证
2.:MD5认证
基于邻居认证都是在接口上进行的:ip ospf authentication-key ***** 然后在接口上启用:ip ospf authentication。
基于md5的:ip ospf message-digest-key 1 md5 ***** 应用:ip ospf authentication message-digest。
基于区域明文:ip ospf authentication-key ***** 进程下应用:area n authentication。
基于区域md5:ip ospf message-digest-key 1 md5 **** 应用:area n authentication message-digest。
虚链路明文认证:area 1 virtual-link **** authentication-key uestc 应用:area 1 virtual-link **** authentication。
虚链路md5认证:area 1 virtual-link **** message-digest-key 1 md5 uestc 应用:area 1 virtual-link **** authentication message-digest。
在OSPF认证中有一个加密序列号:这是一个不会减小的数字,用来防止重现攻击(replay attacks)。
重放攻击:是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。这样就不难理解为什么要有一个不断变化的序列号,并且加密序列号,让攻击者无法准确查找到序列号增长的规律。
OSPF和辅助地址
在OSPF环境中,辅助地址的用法:
1.只有在主网络或子网也运行OSPF协议的时候,OSPF才会通告一个辅助的网络或子网。
2.OSPF将把辅助地址看作是末梢网络(这些网络上没有OSPF邻居),从而不会再这些网络上发送Hello数据包。在辅助地址上也就无法建立邻接关系。
在TCP/IP路由技术卷一上,DNS服务器所配置的默认网关为一台配置了辅助地址的路由器上,而辅助地址与路由器与其他路由器无法建立邻居关系,所有造成DNS回包失败,我们的做法是:在这台路由器上配置一条指向OSPF主网络的默认路由。
辅助地址:也就是ip address *.*.*.* secondary
作用:在同一端口中可以设置两个以上的不同网段的IP地址,这样可以实现连接在同一局域网上的不同网段之间的通信。一般来说一个网段对于用户来说不够用,可以采取这种办法。同时必须在端口下开启ip redirect。因为Cisco路由器不允许从同一端口进来的IP包又送回到源端口,ip redirect表示允许在同一端进入路由器的IP包再从源端口出去。
注意配置了辅助地址的OSPF路由器,与另一台仅配辅助地址的路由器相连,此时这台路由器不能称为ASBR,因为其并没有接收外部路由,我们在这台路由器上运行其他协议,比如rip,然后再将rip重分布到OSPF中,这样就能够接收外部路由成为一台ASBR路由器了。
总结:在概念上理解,不能只背,他妈的有什么用。
tunnel接口是一个虚拟接口,提供点对点的传输模式,因此每一个单独的线路都必须设置一个Tunnel口。
BGP
BGP分为三张表
邻居表:记录BGP对等体信息。
BGP表:记录到达目标网络的所有路径信息,以及到达目标的属性。
路由表:到达目标网络的最佳路由。
建立BGP对等体关系的步骤:1.IDLE空闲状态。
其中有个重试连接时间(ConnectRetry,初次为60s,以后每多一次IDLE状态就会翻倍,以指数增加。)2.Connect
3.Active(激活状态):进行TCP三次握手
4.Open Sent
5.Open Confirm3和4主要进行BGP连接。
6.ESTABLISHED完成BGP对等体建立过程。
BGP消息类型:Open:简历BGP连接Keepalive:邻居关系的维持,主要是维持TCP的会话(60s发送一次,180s的死亡时间)Update:包含路径、属性Notification:BGP通知,即发生错误时会发送Notification,一旦发送Notification,BGP邻居关系就会立即切断。Path Attributes
我们发现在BGP Update消息中的NLRI中,关于路由的信息只包含(前缀和长度),大部分都是路径属性。
Well-Known Mandatory
AS_PATH
描述路由所有经过的自制系统,倒序排列:以最近的AS开始,以发起者的AS结尾。BGP用AS-Sequence有序的AS_PATH序列进行选路,以AS_SET无序AS号进行自制系统间防环。
Next_Hop
如果宣告路由器与接受路由器在不同一AS内,那么下一跳就是宣告路由器的接口IP。
如果宣告路由器与接收路由器在同一AS内,且NLRI指明的地址也在同一AS内,那么下一跳就是宣告路由的邻居的IP地址。
如果宣告路由器与接收路由器在同一AS内,但NLRI指明的地址不在同一AS内,那么下一跳外部对等体的IP。
我们常常通过nei **** next-hop-self下一跳自身改变下一跳,来解决下一跳不可达的问题。
ORIGIN
知名路由更新消息的来源;IGP(从IGP中的Network命令学到0);EGP1;Incomplete3(路由来源的信息不完整,比如通过redistribute重发布进来的)
Well-Known Discretionary
Local_PREF
默认为100,不会传递给其他AS,但会iBGP关系之间进行传播,如果一台运行iBGP的路由器收到到一个目的多条路径,就会比较Local_PREF属性,选择Local_PREF值最高的。这个是影响离开AS的数据流量。
Atomic_Aggregate
用来警告下游路由器出现了路径信息丢失。发生在聚合路由器上。
Optional Transitive
Aggregator
当设置Atomic_Aggregate属性后,也可以附加Aggregator属性,用来附加聚合路由之前的AS号。
Community
Internet默认NO_EXPORT该路由不能传递到eBGP对等体,如果配置了联盟,该路由不能再联盟外公布。
NO_ADVERTISE接受者不能公布给任意的BGP对等体。
Local_AS不能传递到eBGP对等体,也不能传递给联盟内的其他联盟子AS。
Optional Nontransitive
MED
影响进入AS的流量,MED值被认为是一种度量,越低越优先。
注意:默认只有两条路径来自与同一AS时,才进行MED比较(即有多条路径时当第一个AS号相同采取比较MED值)。不过我们可以通过命令:bgp always-compire-med命令去比较多有路径。
Originator_ID
路由产生者的RID,它是由第一个RR创建,是一种防环机制。
Cluster List
路由反射器的簇ID,由路由反射器产生,每一个RR将会有一个簇ID。这个有点类似于AS-PATH属性,也是将新的Cluster ID加到Cluster List中。用于簇间防环。
Weight
思科特有的,用于本地路由器多出口选路,本地产生的默认为32768,从对等体学习到的其他为0。与本地优先级有点像。
BGP的防环机制
iBGP防环:通过iBGP对等体学到的BGP更新将不能传输给任意的iBGP邻居,即iBGP更新只传一条。
eBGP放缓:通过AS_PATH中的AS_SET属性进行防环,即当运行BGP的路由器在接收到来自外部对等体的一条路由中发现自己的AS号,此时就会忽略该路由。
iBGP的全互联
这个用于解决iBGP防环机制,也就是iBGP的水平分割的一种方法,一般采用逻辑的Full-Mesh。我们知道BGP是建立在TCP179端口上的,我们如何保证TCP正确建立呢,这里只要双方能够ping通即可,这点我们可以运行IGP协议即可。尤其是在发生路由聚合后,会加入AS-SET以防止路由环路。但是这个问题是降低了路由的稳定性。
路由抑制
路由摆动(Route Flap)是Internet不稳定的主要因素,当一条有效路由被宣告为无效,然后又被宣告为有效,此时我们会给变化的路由一个惩罚值,即路由摆动得越多,其惩罚值累加,然后惩罚值会自动降低,我们在此设置一个半衰期,如果惩罚值超过抑制门限,那么就不会对外宣告该路由,当惩罚值降低到重用门限后,才会解除该路由的抑制,不过抑制时间会有一个上限,叫做最大抑制时间--60分钟,这个时间一般设置为半衰期的4倍。我们可以通过:bgp dampening来更改。
BGP选路原则
1.Weight
2.Local_PREF
3.本地产生的(下一跳为0.0.0.0)
4.AS_PATH
5.ORIGIN
6.MED
7.AD(eBGP20优先于iBGP200)
8.iBGP的metric最小
9.以上原则都相等的话,如果开启了maxmimu-path (2-16),就进行负载均衡。
10.eBGP计时器最大
11.邻居RID最小
12.具有最短的Cluster_LIST
13.邻居IP最小
BGP同步
从iBGP对等体学到的eBGP更新不会去用也不会去宣告给eBGP对等体,除非自己在IGP中也学到相同的路由。
这个主要是防止路由黑洞的问题。不过我们一般都要关闭这个同步规则。
什么情况下BGP会把路由信息放入路由表中呢?那就是下一跳可达。这里面试的时候可以画一个拓扑解释,此时就要用到充分发:将BGP充分发到IGP,不过这个牵涉到BGP路由条目过大,并且会丢失BGP相应的属性,即使采用充分发也只是充分发直连路由。我们目前都将同步关掉,然后采用iBGP的逻辑Full-Mesh来解决这个问题。
上面张图很重要,注意控制层面是以段建立的,其源目IP是不停变化的,而对于数据层面其数据包中的源目IP是不变化的,当到达没有运行BGP的路由器D时,就无法找到目标到IP的路由。只能在运行两个协议的B和E之间进行IGP域BGP的交换(在没有进行重发布情况下)。我们做法是:1.物理Full-Mesh(所有路由器都运行BGP)
2.逻辑Full-Mesh
3.重发布
管理大型BGP对等体关系
1.对等体组
用一个名字和一系列的路由策略来定义一个对等体组,同样的属性会设置在更新消息中传给几个对端。
把一些具有相同配置的路由器华为一个组,这样对这个组进行操作,就相当于对每个成员进行操作了。
命令:nei ccnp remots-as 20 ; nei **** peer-group ccnp
2.社团
四个属性:默认情况下定义的社团属性不会传递,我们可以通过:nei *.*.*.* send-community向邻居发送。
no_export:不会传到ebgp对等体,但是如果配置了联盟,那么会传输给联盟子AS。
no_advertise:配置了这个属性的路由不会传出任意的bgp对等体。
local_as:这个不会传给ebgp对等体,如果配置了联盟,也不会传给联盟内的子as。
internet:路由的默认属性,此属性表示此路由可以无限制的传输。
在描述BGP团体中,使用AA:NN的新格式,而思科默认使用久格式:NN:AA,我们可以在所有路由器上使用命令:ip bgp-community new-format来支持新格式,此时使用:set community 来打上社团名称。
3.路由反射器
先找到要作为路由反射器的路由器,然后在RR上分别对每个邻居做:nei **** route-reflector-client,将邻居路由器作为路由反射器的客户端。然后每个客户端与RR建立BGP邻居即可。
路由反射器的原则:除了非客户端不能够反射给客户端外,其他形式任意两种都可以互相传递。
路由反射器经对等体的数目从n(n-1)/2减少到n-1条,路由反射器和它的客户合称一个簇。
注意路由反射器反射的原则:1.从非客户端学到的iBGP对等体学习到的,只将它反射给客户。2.从客户学习到的可以传输给客户和所有的非客户。3.从ebgp对等体学到了,可以反射给所有的客户和非客户。
路由反射器内部的放缓靠的是,Originator_ID和Cluster_LIST
Originator_ID:这个是本AS内路由发起者的RID。路由反射器不会将一条路由公布给路由的发起者,TT不会将一条路由公布给路由的发起者。不过即使发起者收到一个带它自己的RID的更新消息,它也不理睬该消息。
而一个AS内的没一个簇必须用一个唯一的4字节簇ID来标识。如果簇内只有一个路由反射器,那么簇ID就是路由反射器的RID,如果簇内包含多个路由反射器,必须给每个RR配置一个簇ID.
4.联盟
可以将一个大AS划分陈成会员自治系统
联盟内的选路规则:到联盟的外部eBGP路由优先到自制系统成员的eBGP,然后又优先于ibgp,而Next_Hop、MED、Local_PREF属性也可以传递。
路由过滤
使用AS_PATH实现AS的过滤。
命令:ip as-path access-list n deny regexp
在进站或出站过滤:nei **** filter-list as-path-filter in|out
使用filter-list调用as-path acl,实现基于AS编号的过滤。
使用route-map实现流量的过滤
route-map name permit|deny sequence
match ip add ***
set ***
然后基于接口调用:nei **** route-map XX out|in
使用前缀列表代替acl来实现更为精确的匹配:ip prefix-list ** seq 5 permit|deny 192.168.1.0/24
我们使用aggregate-address 192.168.1.0 255.255.255.0去发布聚合路由,然后使用关键字:suppress-map MAP 抑制发布聚合路路由后中再去发布该条明细路由条目。
这里具体做法是:使用suppress-map调用route-map,然后在route-map下去match一个acl或者去match一个prefix-list,然后在acl中写入要被抑制的明细路由。
而在默认情况下BGP发布聚合路由的时候也同时也会发布明细路由,此时我们可以通过添加关键字summary-only仅发布聚合路由。
还可以通过attribute-map来改变聚合路由的属性,比如从ospf重发布进BGP,其属性为Incmplete,我们可以通过Attribute-map将其属性更改为igp。命令:aggregate-map **** attribute-map ORIGIN
route-map ORIGIN
match ip address *
set origin igp
我们可以通过在aggregate-map后面的as-set关键字给聚合路由加上无需的as号,这样可以恢复聚合路由的环路检测功能。
advertise-map抑制聚合路由继承某条明细路由的属性。
bgp小知识:通过:bgp bestpath as-path ignore选路不考虑as-path长度,这样是与其他厂商兼容。
通过:nei maximum-prefix来限制从邻居收到前缀的数量:nei **** maximum-prefix 300 90 warning-only(超过最大300条目的90%时发布警告信息,当超过300后则donw掉邻居关系。)
通过:neighbor shutdown中断对端连接,但是不删掉配置。
timer bgp设置计时器,默认60s的keepalive和180s的保持时间。
BGP后门路由
我们可以让AS50与AS75之间的某些关键业务走RIP这个后门链路,比如我们让AS50中的172.17.0.0和AS75的172.18.0.0之间的通信走RIP链路,然后让NAP链路充当备份链路。这里问题是AD的限制,会优先选择eBGP。可以通过network命令在BGP下宣告各自的学习到对方被设置为后门路由的BGP路由,于是就将eBGP路由转化为iBGP路由,这样RIP的AD就小于了iBGP,此时位于这两个网段的通信就会走后门路由。不过这里会有一个问题,AS75会eBGP发布该路由,这样的话在AS100和AS200的路由想要访问172.17.0.0网段的时候也会先发布到AS75然后走后门路由,因为在选路的时候会根据第5个ORIGIN属性选路,从AS50发过来的为Incomplete,从AS75发过来的为IGP。我们如何解决这个问题呢?这里我们引入了后门路由,分别在AS50和AS75内发布从对方学习到的后门路由:network 172.18.0.0 backdoor。network backdoor的作用于network效果一样,都是将eBGP路由看作iBGP,修改AD为200,只是backdoor路由不会向eBGP宣告这条后门路由罢了。
BGP的过滤路由,我们使用neighbor *.*.*.* distribute-list 1 out 调用acl。
我们再去配置acl:access-list 1 deny 具体路由,然后access-list 1 permit any 允许所有没deny的路由。
我们可以使用neighbor next-hop-self命令而不用考虑向一个iBGP对端公布一条eBGP路由,该路由的下一跳地址不能改变的原则。
BGP检测到故障的IBGP连接并且将它倒换到另一条链路上时间很可能超过180s,通过timer bgp来改变bgp的keepalive和保持时间。比如我们将keepalive时间设置为3s,然后保持时间设置为9s。就使用下列命令:
timer bgp 3 9
eBGP读条问题,我们知道eBGP的TTL值为1,我们建立eBGP邻居关系时是指接口IP,如果我们想以RID建立eBGP关系时,我们的做法是修改eBGP通过路由的TTL,即:neighbor *.*.*.* update-source loopback 0
然后修改跳数:neighbor *.*.*.* ebgp-multihop 2
使用聚合路由的方法是:aggregate-address命令:注意aggregate-address名列后面的选项。
有:summary-only:这个选项是聚合路由器只宣告聚合后的路由。默认情况下bgp聚合路由器会宣告聚合后的路由和明细路由。
还有社团属性我们是通过route-map(路由映射来完成的)
比如:
route-map COMMUNITY permit 10
match ip address perfix-list AGGREGATE
set community no-export | local-as | no-advertise
通过acl或者prefix-list去挑选出指定路由。
我们还可以抑制聚合路由的一个子网,我们可以通过suppress-map选项
比如:
aggresss-address *.*.*.* 255.255.255.0 suppress-map SUPPRESS调用route-map
route-map SUPPRESS permit 10
match ip address 1
acl或者是prefix-list
改变聚合的属性:attribute-map选项:
例如:
aggregate-address *.*.*.* 255.255.255.0 attribute-map ORIGIN调用route-map
route-map ORIGIN permit 10
match ip address 2
set origin incomplete 将起源属性改为重发布的incomplete。
我们知道聚合的AS-PATH只包含发起该聚合路由的AS号。在聚合路由中设置ATOMIC-Aggregate和Aggregator则是用于通告丢失的具体信息。但是如果来自聚合路由AS内的一条明细路由失效,那么就会去匹配这条聚合路由,然后传输先去,然后路由器在查找路由表,发现没有该条路由,然后才去丢失。到一个无效目的地的数据包在被丢失之前是,没有必要经过两个路由器转发。我们除了公布as-path属性中的as-Sequence之外,还可以在aggregate-address命令中加入as-set关键字,来解决这个问题,其唯一的作用是:恢复被聚合路由丢失掉的环路检测功能,AS-PATH的作用是:恢复被聚路由丢失掉的环路检测功能。
aggregate-address最后一个选项是:advertise-map。advertise-map选项指向一个名为ALLOW_Route的路由图,该路由图标识构成聚合路由基础的更具体路由。
我们也可以让BGP选路时忽略AS-PATH长度,命令为:bgp bestpath as-path ignore来通知Cisco路由器在路由选路的中忽略AS-PATH的长度。
我们也可以限制从邻居接收的最大前缀的数量:
neighbor *.*.*.* maximum-prefix 300 90 warning-only
这个作用是:当从邻居收到最大前缀数据的90%时就会产生一个日志消息。当超过最大限制300时就会在超时后down掉邻居关系。
我们可以通过clear ip bgp +路由。然后通过clear ip bgp *(shell正则)清理所有的BGP连接。
还可以不down掉邻居关系,直接触发到该邻居的更新信息:clear ip bgp * soft out(软清)
当改变的策略影响到入业务量时,我们可以使用入站软重新配置。:nei *.*.*.* soft-reconfiguration inbound命令,然后对业务量收到新策略影响的每一个邻居使用clear ip bgp soft in命令。
通过AS_PATH过滤路由
做法是:ip as-path access-list 命令定义了访问列表的一个变量,该变量用来定义AS号。
这里as-path使用的是正则表达式(regular expressions)
如下常用到的过滤as-path语句:
只公布到自己AS内部的路由:ip as-path access-list 1 permit ^$
拒绝任何在AS50包括AS50的更新消息:ip as-path access-list 1 deny _50_
结尾默认拒绝使用。允许所有:ip as-path access-list 1 permit .*
仅接收来来自AS50的路由:ip as-path access-list 1 permit ^50$
然后在bgp进程下去调用route-map:nei *.*.*.* route-map MAP out
然后写route-map:
route-map MAP permit 10
match as-path 1 调用as-path列表。
本地的优先级:local_pref。默认所有公布给ibgp对等体的路由都是100。可以通过ip default local-preference命令来更改缺省值。也可以通过set local-preference命令来改变独独立路由的Local_Pref
用法:
在路由进入方向打上这个属性:
nei *.*.*.* route-map PREF in
route-map PREF permit 10
match as-path 2
set local-preference 200
ip as-path access-list _50$ 表示起源于AS50的路由
MED值,影响相邻AS内的路由决定。这个是在路由出接口打上这个属性。
MED值,作为一种度量(metri),越低越优先。
同样在route-map下调用acl或者prefix-list,然后打上相应的属性:set metric 200
注意:默认情况下只比较到达同一AS内相同目的地的多条路径,我们也可以通过命令:bgp always-compare-med来比较来自不同AS的多条路径的MED值。
这里还有另外一个命令:set metric-type internal,这个可以将MED值设置为与到同一目的地的IGP路由相同的度量,这样可以避免次优化路由的问题。
附件as-path:
可以使用set as-path prepend命令修改它公布路由的as_path属性。
例如:
nei *.*.*.* route-map PATH out
route-map PATH permit 10
match ip address 10
set as-path prepend 30 30
注意:我们一般打prepending多选的as号都是通告路由器所在as的as号,一般不要随便写,有可能与以后所用到的冲突,那样的话冲突AS将不会接受该路由。
Cisco NAT
思科NAT有四种地址:
1.内部本地
2.内部全局
3.外部全局
4.外部本地
查看NAT映射表:show ip nat translations(翻译超时时间为86400s,1hour)
但是为了能从外部访问,比如:邮件、Web、FTP服务器,我们必须使用静态映射了。
将一个大地址多路复用到一个小型地址池的问题,即允许多个地址映射位一个地址,Cisco把这个功能称之为端口地址翻译(PAT),我们有时候也将其称之为端口重载。
NAT的问题:
1.经过NAT转化后,IP包头的校验和要进行重新计算。
2.分段。我们知道IP数据包超过MTU会进行分片,而端口号等四层信息仅在IP的第一个分片,如果分片后的某个片段在第一个分片之前到达NAT,那么NAT只有先暂时缓存这个片段然后等第一个分片到后才能处理后续分片。
3.加密,NAT能够改变IP地址信息,但是当数据经过加密后NAT就无法查看到这部分数据了,因此如果要执行NAT那么IP地址信息和任何基于IP地址信息(如TCP校验和,因为存在伪首部)获得的信息都不能被加密。例如IPSec穿越NAT设备时,这个必须将NAT放在安全一侧,而不能放在加密的路径上。
4.安全,虽然采用NAT技术隐藏了对外隐藏了内部网络的细节,但是NAT并不会采取任何措施去防范DOS攻击。
FTP基础
FTP服务主要用来传输文件,而与HTTP传输文件不同,FTP不具有多媒体浏览的功能。
FTP协议有两种工作方式:PORT方式(主动式)和PASV方式(被动式)。
PORT(主动):客户端(大于1024端口)向服务器的FTP控制端口(21)发送连接请求,服务器接收连接,建立一条命令链路。当需要传送数据时,服务器从数据端口(20)向客户端的空闲端口(大于1024端口)发送连接请求,建立一条数据链路来传送数据。
PASV(被动):客户端(大于1024的端口)向服务器的FTP端口(21)发送连接请求,服务器接收连接,建立一条数据链路。当需要传送数据时,客户端(大于1024端口)向服务器的空闲端口(大于1024端口)发送连接请求,建立一条数据链路来传输数据。
主动与被动优缺点:
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉;被动FTP对FTP客户端的管理有利,但对于服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连接一个高位随机端口,而这个端口很可能被服务器端的防火墙阻塞掉。
IE浏览器默认是主动(PORT)模式,为了防火墙的兼容性(还有一个是为了DSL调制解调器的兼容),我们可以在高级中选择使用被动FTP模式。
SMTP,简单邮件管理协议,一般包含域名,而不是IP地址。不过,它请求邮件传送时,可以用IP地址而不用域名。因此Cisco NAT检查SMTP消息中相应的参数,当发现IP地址时就进行翻译。
SMTP协议用于上传邮件和在服务器间传送邮件,与之不同,邮局协议(POP)与Internet消息访问协议(IMAP)仅用于从邮件服务器上下载邮件到客户端。并且这两个协议在消息实体中都只用主机名,而不用IP地址,因此这些协议经过NAT时不需要进行特别的检查。
SNMP,简单网络管理协议,采用MIB(消息信息库)来对各式各样的网络设备进行管理。除了标准的MIB外,还有个厂商的设备创建自己专有的MIB。
交换知识点
发表评论
暂时没有评论,来抢沙发吧~