PPP概述

点到点协议Point to Point ProtocolPPP),是从串行线路IPLine IPSLIP)改进而来的。PPP是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。 这种链路提供全双工操作,并按照顺序传递数据包。 PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。 ISP使用PPP协议为计算机分配一些网络参数(如IP地址、域名等)。

针对SLIP的缺陷,PPP协议主要做了以下的改进工作:

  • 明确地划分出一帧的尾部和下一帧的头部的成帧方式并对数据进行错误检测工作。

  • 检测不再需要的线路,经过协商后释放这些链路。这个协议被称为链路控制协议(Link Control Protocol,LCP)。

  • 用独立于网络层协议的方法来商议使用网络层的哪些选项。对于每个所支待的网络层来说,有不同的网络控制协议(Network Control Protocol,NCP)。

  • 允许动态分配IP地址,这对于IP地址非常紧缺的今天来说非常重要。

  • 增加了身份认证的功能,保证了安全。

PPP功能

链路控制

PPP为用户发起呼叫以建立链路;在建立链路时协商参数选择;通信过程中随时测试线路,当线路空闲时释放链路等。PPP中完成上述工作的组件是链路控制协议LCP(Link Control Protocol,LCP)。

网络控制

当LCP将链路建立好了以后,PPP要开始根据不同用户的需要,配置上层协议所需的环境。PPP使用网络控制协议NCP(Network Control Protocol,NCP)来为上层提供服务接口。

PPP连接建立过程

PPP的认证协议

PAP:密码认证协议(Password Authentication Protocol),PAP认证是两次握手PAP在链路上以明文发送,不安全。由于验证重试的频率和次数由远程节点来控制,因此不能防止回放攻击和重复的尝试攻击。

CHAP:挑战握手认证协议(Challenge-Handshake Authentication Protocol),CHAP为三次握手协议;它只在网络上传送用户名而不传送口令。

PAP与CHAP的对比

认证协议 握手次数 是否加密 安全性 消息类型
PAP 二次 安全 请求、确认和否认
CHAP 三次 更安全 挑战、响应、成功和失败

配置

PAP或CHAP配置或验证命令

启用PPP封装,需要进入接口配置模式。

Router(config-if)#encapsulation ppp 在配置PPP验证之前,该接口必须配置成PPP封装。

第一步:对每一个路由器指定一个主机名。

Router(config)#hostname name

第二步:在每一个路由器上,定义远程路由器期待的用户名和密码。

Router(config)#username name password 密码

  • name选项是远程路由器的主机名。注意,它是大小写敏感的。

  • password选项设置连接将要用到的密码。在Cisco路由器中,这两台路由器中密码必须是一样的。

第三步:使用接口配置命令配置PP验证。

Router(config-if)#ppp authentication {chap | chap pap | pap chap | pap}

  • 如果PAP和CHAP都被启用,链路协商期间将请求第一种方法。如果对等路由器建议使用第二种方法或简单的拒绝第一种方法,将试用第二种方法。

PAP验证服务器的配置

建立本地命令库

RouterA(config)#username RouterB password rapass

要求进行PAP验证

RouterA(config)#interface serial 0/0

RouterA(config-if)#ppp authentication pap

PAP认证客户端的配置只需要一个步骤(命令),即将用户名和口令发送到对端:

RouterB(config-if)#ppp pap sent-username routera password 密码

CHAP认证服务器的配置

建立本地口令库

RouterA(config)#username routerb password samepass

要求进行CHAP认证

RouterA(config)#interface serial 0/0

RouterA(config-if)#ppp authentication chap

CHAP认证客户端的配置只需要一个步骤(命令),即建立本地口令数据库。请注意,此处的username应该是对端路由器的名称,即routera,而口令应该和CHAP认证服务器口令数据库中的口令相同。如下所示。

RouterB(config-if)#username routera password samepass