HDLC现在已经不是我们学习的重点了,它只允许点到点的连接,没有什么验证机制,而且如果对方是非Cisco设备,就只能使用FR或者PPP。所以本文主要介绍PPP协议的相关知识。
PPP:用在链路建立过程中检查链路质量,并提供PAP和CHAP验证。
它是在SLIP基础上发展来的。Slip的全称是Serial Line Internet Protocol中文释义串行线路网际协议。
该协议是Windows远程访问的一种旧工业标准,主要在Unix远程访问服务器中使用。因为SLIP协议是面向低速串行线路的,可以用于专用线路,也可以用于拨号线路,Modem的传输速率在1200bps到19200bps。以后大家也不可能再用到Slip了,所以我们在此只讨论它的替换协议PPP。
点到点协议PPP,为在点对点连接上传输多协议数据包提供了一个标准方法。PPP最初设计是为两个对等节点之间的IP流量传输提供一种封装协议。在TCP-IP协议集中它是一种用来同步连接的数据链路层协议,替代了原来的Slip。除了IP以外PPP还可以携带其它协议,包括IPX,Apple Talk等。
PPP主要是两类协议组成:链路控制协议LCP和网络层控制协议NCP
LCP(链路控制协议):
PPP所提供的LCP功能全面,适用于大多数环境。主要用于建立和控制连接,可以简单来说LCP工作在2.5层。
NCP(网络控制协议)
为了建立点到点的链路通信,PPP必须先发送LCP包来建立链路,当链路创建成功后,PPP必须发送NCP包以便选择使用一个或多个网络层协议,一旦网络层协议选定并协商之后,来自相应网络层上的数据就能在链路由发送了。所以NCP负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题。
下面咱们来看一下PPP会话建立的过程:
PPP 会话的建立
1 链路建立
2 验证阶段
3 网路层协议连接
PPP的链路状态如图所示:一个典型的链路建立过程分为三个阶段;创建阶段,验证阶段,和网络协商阶段。
阶段1:创建PPP链路:
LCP负责创建链路。在这个时候,将对基本的通讯方式进行选择。链路两端设备通过LCP向对方发送配置信息报文。一旦一个配置成功信息包被发送县域被接收,就完成了,进入了LCP开启状态。
应当注意,在链路创建阶段,只是对验证协议进行选择,用户验证的过程将在第2阶段完成。
阶段2:用户验证
在这个阶段,客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从验证阶段进行到网络协商阶段(网络层协议阶段),如果验证失败,则过程终止。
在这一阶段里,只有链路控制协议、验证协议、链路质量监视的数据包是允许的,其他的数据包必须静静的丢弃。在这里可以选择使用的两个认证协议就是口令验证协议PAP和挑战握手验证协议(CHAP)。
阶段3:网络协商阶段(调用网络层协议)
验证阶段完成之后,PPP将调用链路创建阶段选择的各种网络控制协议(NCP),选定的NCP解决PPP链路之上的高层协议问题。
这样,经过三个阶段之后,一条完整的PPP链路就建立起来了。
下面就开始重点介绍PPP的验证协议:
PPP定义了两种验证协议:
密码验证协议(the Password Authentication Protocol)和挑战握手验证协议(the Challenge-Handshake Authentication Protocol)也就是说在链路建立成功后,在进入网络层协议阶段之前,PPP必须要提供一个可选择的验证阶段。默认的,身份验证不是强制的。如果希望进行链路的身份验证,则实验者必须在建立阶段指明身份验证协议配置选项。那么到底PAP与CHAP有什么区别,我们的首选应该是什么协议?
我们先来看PAP:
密码验证协议提供了一种简单的方法,可以使对端使用2次握手建立身份验证。这个方法仅仅在链路初始化时使用。
PAP不是一个健壮的身份验证方法。密码在电路上是明文发送的,并且对回送或者重复验证和错误攻击没有保护措施。对端控制着尝试的频率和时间。什么意思?我们来看一个图:
远程路由器如果希望在中心路由器上得到身份验证只需要将它的用户名如dufei,以及它们公有的密码如DUfei2008,通过网络传到中心路由器,中心路由器对用户名和密码进行验证,如果通过就OK!说明此用户是合法用户,否则验证失败。也就是远程路由器提出验证请求,中心路由器进行验证将结果是允许还是拒绝发给对方,这是这么简单的两次握手就可以完成。需要注意的是远程路由器的hostname在中心路由器上就是username。
但有一个弊端就是密码是以明文方式在网络上传输的,那么如果有黑客希望对网络进行入侵,他只需要先来监听,抓到明文密码后就可以冒充远程用户来请求身份验证。并且到底验证多少次,什么时候验证完成都掌握在他的手里。中心路由器只能被动的给出验证的结果。
“杜氏总结”:因此我们可以总结出PAP的特点:两次握手;明文传输;反复验证。
CHAP:
下面咱们来介绍一下CHAP:
CHAP是一种比PAP更强的验证方式,因为这种验证方法中所使用的用户的真实口令从不在网络上传输。因此两次握手已经不能满足它的要求,它使用的是三次握手来验证对端的身份。如图:
分析:这个图其实不是一个很完整的图,没有开头的建立连接阶段。比较完整的图大家可以参考下图这个:
详细分析:
大家一看这个图可能会感觉到有点小复杂,为什么要这么复杂呢,主要就是因为CHAP安全了,它不允许密码出现在网络上,但又能实现身份验证怎么办呢?我们一步步分析:
当远程路由器dufei来连接访问服务路由器Cisco时,必须经过这么几个过程:
第一个阶段也就是链路创建成功以后,双方都运行PPP,并使用CHAP验证方法,此时远程路由器就发出一个请求挑战的信息:意思也就是说我想向请求连接,你来询问我吧!来判断我是不是合法用户,能不能连接到你的路由器;那么此时访问路由器开始发出挑战了,也就是开始询问了,它是怎么询问的呢,它向对方发出一个数据包,数据包的大体格式:
那么对方收到后,也就是远程路由器收到后,会从自己的配置表中找出对方用户名所对应的密码,将此密码和随机数以及ID都都经过MD5得到一个散列值:如图所示:
然后远程路由器又做了一件事:它也给对方发了一个数据包,格式如图所示:
那么中心路由器收到这个数据包后,也做了几乎同样的事情:从自己的数据库中查对方的用户名所对应的密码、随机数以及ID,此时大家就发现了这个密码肯定需要一样,上次所使用的随机数以及ID也经过一个MD5求出一个散列值,如果和远程路由器发过来的一样,那么就说明对方是个合法用户,对我所提出的问题做出一个正确的回答;否则是非法用户。这就是CHAP的验证过程。
下面咱们通过两个实验来结束PPP的学习:
Lab1:PPP的PAP验证
实验目的:两台路由器中,让其中的一台能ping通另一台并且通过PAP验证使用其能相互传递信息。
实验设备:两台Cisco系列路由器
拓扑图:
Router1上的配置:
Router>enable
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname RA
RA(config)#username dufei password dufei
RA(config)#interface s2/0
RA(config-if)#ip address 192.168.0.1 255.255.255.0
RA(config-if)#encapsulation ppp
RA(config-if)#ppp authentication pap
RA(config-if)#clock rate 64000
RA(config-if)#no shutdown
Router2上的配置:
Router>enable
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname RB
RB(config)#interface s2/0
RB(config-if)#ip address 192.168.0.2 255.255.255.0
RB(config-if)#no shutdown
此时我们在RB路由器上尝试ping RA
这是因为主验证方开启PAP验证,但被验证方并没有发出验证信息,因为验证不通过所以通讯失败!
那么我们在RB上也来开启PAP验证。
RB(config-if)#encapsulation ppp
RB(config-if)#ppp pap sent-username dufei password dufei
然后再来测试:
OK,实验成功!
总结:
主验证方主要就三个命令:
1 username dufei password dufei 建立对端验证数据库包括用户名和密码。
2 encapsulation ppp 接口封装成PPP
3 ppp authentication pap 开启PAP验证。
被验证方主要就两个命令:
1 encapsulation ppp 接口封装成PPP
2 ppp pap sent-username dufei password dufei 发送验证信息
Lab2:PPP的CHAP验证
实验目的:两台路由器,让其中一台能ping通另一台并且通过CHAP验证使期能相互传递信息。
实验设备:两台Cisco系列路由器
拓扑图:
Router1的配置:
RA>enable
RA#conf t
RA(config)#username dufei password dufei
RA(config)#interface s2/0
RA(config-if)#ip address 192.168.0.1 255.255.255.0
RA(config-if)#clock rate 64000
RA(config-if)#no shutdown
Router2不再进行初始化配置,网络现在已经畅通,如图所示:
现在我们准备来开启CHAP验证:
Rouer1上的配置:
RA(config)#username beijing password 123 建立对端验证数据库包括用户名和密码
RA(config)#interface s2/0 进入相应椄口
RA(config-if)#encapsulation ppp 封装成PPP
RA(config-if)#PPP authentication chap 开启CHAP验证
RA(config-if)#ppp chap hostname shanghai 建立本端验证用户
RA(config-if)#no shutdown 开启接口
Router2上的配置:
RB(config)#username shanghai password 123 建立对端的用户名及密码
RB(config)#interface s2/0
RB(config-if)#encapsulation ppp
RB(config-if)#ppp chap hostname beijing
RB(config-if)#no shutdown
测试:
实验成功!
我们可以利用show interface s2/0,显示验证信息,如图所示:
关于PPP协议的讲解就到这儿了,希望对你有帮助!好了,休息,休息一会!