PPP(Point-to-Point
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PPP(Point-to-Point Protocol)
点到点协议(PPP)
PPP(Point-to-Point Protocol 点到点协议)是⼀种可以⽤于异步(拨号)或同步串⾏(ISDN)介质数据链路层协议。
它是⽤LCP(链路控制协议)建⽴并维护数据链路连接。
NCP(⽹络控制协议)允许在点到点连接上使⽤多种⽹络层协议(被动路由协议),即协商链路上的其他⽹络层协议。
它⾸先在LCP层进⾏⾝份验证,通过后才转到NCP层进⾏⽹络层协商。
PPP提供认证、动态地址以及回叫功能。
点对点协议栈
NCP:⼀种建⽴和配置不同⽹络层协议的⽅法。
NCP设计允许同时使⽤多个⽹络层协议。
LCP:⼀种建⽴、配置、维护和结束点到点连接的⽅法。
HDLC:在串⾏链路上封装数据报的⽅法。
EIA/TIA-232-C、V.24、V.35、ISDN:串⾏通信的物理层国际标准。
PPP会话的建⽴
当PPP连接开始时,链路经过3个会话建⽴阶段:
Link-establishment phase:链路建⽴阶段。
每个PPP设备发送LCP包来配置和测试链路。
LCP包包括⼀个叫做
“配置选项”的字段,允许每个设备查看数据的⼤⼩、压缩和认证。
如果没有设置“配置选项”字段,则使⽤默认的配置。
Authentication phase:认证阶段。
如果配置了认证,在认证链路时可以使⽤CHAP或PAP。
认证发⽣在读取⽹络层协议信息之前。
同时可能发⽣链路质量决策。
Network layer protocol phase:⽹络层协商阶段。
PPP使⽤NCP(⽹络控制协议)允许封装成多种⽹络层协议并在PPP数据链路上发送。
每个⽹络层协议(如:IP、IPX、等这些被动路由协议)都建⽴和NCP的服务关系。
PPP认证⽅法
PPP链路可以使⽤两种认证⽅法:
说明:PAP使⽤明⽂两次握⼿实现,CHAP采⽤三次质询握⼿实现。
⼝令认证协议 PAP(Password Authentication Protocol):⼝令认证协议是两种⽅法中安全程度较低的⼀种。
在PPP链路建⽴完毕后,源节点不停地在链路上反复发送⽤户名和密码,直到认证通过。
PAP在认证过程
中,密码在链路上是以明⽂传输的,⽽且由于源节点控制认证重试频率和次数,因此PAP不能防范再⽣攻击
和重复的尝试攻击,尽管如此,PAP仍可⽤于以下情形:
①当系统中安装了⼤量不⽀持CHAP的客户端应⽤程序时;
②当不同供应商实现的CHAP互不兼容时;
③当主机远程登录必须使⽤纯⽂本⼝令时。
质询握⼿认证协议 CHAP(Challenge Handshake Authentication Protocol):利⽤3次握⼿周期性地验证远程节点的⾝份。
CHAP定期执⾏消息询问,以确保远程节点任然拥有有效的⼝令值。
⼝令值是个变量,在链路
存在时该值不断改变,并且这种改变是不可预知的。
本地路由器或第三⽅⾝份认证服务器控制着发送询问
信息的频率和时机,CHAP不允许连接发起⽅在没有收到询问消息的情况下进⾏认证尝试,这使得链路更为
安全。
CHAP每次使⽤不同的询问消息,以及该询问消息与密码经过MD5运算后的HASH值。
所以CHAP可以防⽌再⽣攻击,CHAP的安全性⽐PAP要⾼。
CHAP认证原理:
1.A端向B端发送⾃⼰的⽤户名(默认为主机名),和⼀个随机数。
2.B端收到后,检查⾃⼰的数据库中是否有和收到的⽤户名⼀致的⽤户名:
有:就⽤这个⽤户名对应的密码与随机数做HASH,然后将HASH值和⾃⼰的⽤户名(默认为主机名)发送给A端;
没有:⼀般情况下不会对A端(对端)做出回应。
3.A端检查收到的⽤户名,在⾃⼰的数据库中找到⼀致的⽤户名,然后利⽤这个⽤户名对应的密码与随机数做
HASH。
对⽐收到的HASH值,判断认证是否通过。
通过,发送成功确认。
PPP实验
启⽤PPP封装:(⽆认证)
R1(config)#int S0/0
R1(config)#ip add 172.16.12.1 255.255.255.0
R1(config)#clock rate 64000
R1(config-if)#encapsulation ppp //启⽤PPP封装协议
R1(config)#compress stac //使⽤Stacker(LZS)压缩算法
R1(config)#ppp quality 80 //指定链路质量阀值
R1(config)#no sh
R2(config)#int S0/0
R2(config)#ip add 172.16.12.2 255.255.255.0
R2(config)#clock rate 64000
R2(config-if)#encapsulation ppp
R2(config)#compress stac
R2(config)#ppp quality 80
R1(config)#no sh
实验调试
R1#show int s0/0
R1#debug ppp negotiation //显⽰PPP启动期间传输的数据包
特别说明:如果把路由器R1的S0/0接⼝地址改为1.1.1.1/24,把R2的S0/0接⼝地址改为2.2.2.2/24,然后分别在两个接⼝下封装PPP协议,并配置时钟速率。
这时双⽅是可以通信的,在各⾃的路由表中也会产⽣⼀条对⽅接⼝地址的主机路由,这是PPP的特性。
配置PAP认证:
单向认证:(left为主认证端,right为被认证端)
R1(config)#hostname left
left(config)#username right password right //设置主认证端⽤于验证的⽤户名和密码
left(config)#int s0/0
left(config-if)#encapsulation ppp
left(config-if)#ppp authentication pap //在主认证端启⽤PAP认证
R2(config)#hostname right
right(config)#int s0/0
right(config-if)#encapsulation ppp
right(config-if)#ppp pap sent-username right password right//被认证端提交的⽤户名和密码
说明:如果没有配置本地认证数据库,或者⽤户名或密码错误,将会导致认证失败。
双向认证(left和right互为对⽅的主认证端和被认证端)
R1(config)#hostname left
left(config)#username right password right
left(config)#int s0/0
left(config-if)#encapsulation ppp
left(config-if)#ppp authentication pap
left(config-if)#ppp pap sent-username left password left
R2(config)#hostname right
right(config)#username left password left
right(config)#int s0/0
right(config-if)#encapsulation ppp
right(config-if)#ppp authentication pap
right(config-if)#ppp pap sent-username right password right
实验调试
left#debug ppp authentication //查看PPP认证的过程
配置CHAP认证:
CHAP认证没有主和被区别,双⽅都需要做,也就是双向认证(标准配置)。
R1(config)#hostname left
left(config)#username right password samepwd
left(config)#int s0/0
left(config-if)#encapsulation ppp
left(config-if)#ppp authentication chap //启⽤CHAP认证
R2(config)#hostname right
right(config)#username left password samepwd
right(config)#int s0/0
right(config-if)#encapsulation ppp
right(config-if)#ppp authentication chap
注意:
①CHAP认证默认时发送的⽤户名为主机名,⽽双⽅密码必须⼀致(密码都是敏感的,区分⼤⼩写);
②可以通过下边的命令更改发送的⽤户名和密码:
left(config-if)#ppp chap hostname left //更改发送的⽤户名
left(config-if)#ppp chap password samepwd //更改发送的密码
说明:在配置认证时也可以选择同时使⽤PAP和CHAP两种认证⽅式。
如果同时配置了这两种认证⽅式,那么在链路协商阶段将先⽤第⼀种认证⽅式进⾏认证;如果对⽅建议使⽤第⼆种认证⽅式或者只是简单拒绝第⼀种
⽅式(如:认证失败),那么将采⽤第⼆种⽅式进⾏认证。
R1(config-if)#ppp authentication pap chap
或
R1(config-if)#ppp authentication chap pap
多链路捆绑:
PPP协议⽀持链路捆绑,可以把多条运⾏PPP协议的链路捆绑成⼀条链路。
这样能合并带宽,提⾼传输效率,⽽且物理接⼝⽆需再配置IP地址。
直接在合并的虚链路上配置IP地址即可。
left(config)#int multilink 1 //建⽴multilink组
left(config-if)#ip add 192.168.2.1 255.255.255.0
left(config-if)#no sh
left(config)#int s0/0
left(config-if)#encapsulation ppp
left(config-if)#ppp multilink group 1 //将接⼝加⼊multilink组中
left(config-if)#no sh
left(config)#int s0/1
left(config-if)#encapsulation ppp
left(config-if)#ppp multilink group 1
left(config-if)#no sh
right(config)#int multilink 1
right(config-if)#ip add 192.168.2.2 255.255.255.0
right(config-if)#no sh
right(config)#int s0/0
right(config-if)#encapsulation ppp
right(config-if)#ppp multilink group 1
right(config-if)#no sh
right(config)#int s0/1
right(config-if)#encapsulation ppp
right(config-if)#ppp multilink group 1
right(config-if)#no sh
实验调试
left#show int multilink 1 //查看链路状态和带宽
额外实验
left(config-if)#int s0/0
left(config-if)#encapsulation ppp
left(config-if)#ip add 192.168.1.1 255.255.255.0
left(config-if)#peer default ip address 192.168.1.2 //给对端接⼝发送具体IP地址left(config-if)#no sh
right(config)#int s0/0
right(config-if)#encapsulation ppp
right(config-if)#ip address negotiated //此接⼝将⾃动获得IP地址
right(config-if)#no sh。