点滴技术

PPP认证协议

2019-01-01  本文已影响0人  点滴技术

写这篇分享文档,是因为在日常工作中,客户反馈了一个故障点,即L2TP一直无法建立,隧道一直UP/DOWN现象。咋这就把来龙去脉一 一分析下。

为了能够写好这边文档,我找了官方RFC1334研究了一边,并进行抓包分析,当然这篇官方文档不长,还不能满足我的需求,你觉得呢?哈哈。。

image

PPP的基本原理

1.1 三个主要组成部分

为了在点对点链路上建立通信,在链路建立阶段,PPP链路的每一端必须首先发送LCP包来配置数据连接. 在链路建立之后,PPP在进入网络层协议阶段之前提供可选的认证阶段。

默认情况下并非需强制性认证,如果链路要求认证,在链路建立阶段必须指定认证协议配置选项。

一般会在终端或路由器设备上通过PPPOE或专线连接到PPP网络服务器上,服务器会使用主机或路由器的标识选择网络层协商选项。

image

1.2 ppp两个认证协议

先来说说 PAP :
①PAP提供了一种简单的方法让对端使用2次握手来建立自己的身份,这个仅在初始连接建立时完成。
②连接建立后,被认证者反复向认证者发送一对用户名和密码,直到认证被确认或连接中断。
③安全性不高,密码在链路上明文传输,没有重放、反复尝试、错误攻击的保护。

PAP配置选项格式:

image

PAP的报文格式(重点介绍这个):

image

Code:1个字节,标识PAP报文类型,分3种:
①Authentication-Request
②Authentication-Ack
③Authentication-Nak

Identifier:1个字节,匹配请求和回复(一个Request和Ack报文里的标识是一样的);
Length:2个字节,标识PAP数据长度,包括code、identifier、length、data字段,其他 字段为数据链路层填充,接收时可忽略;
Data:0或多个字节,有Code字段决定;

以上介绍基本的PAP报文格式,那么接下来在剖析下Code里面的3种报文类型,可先消化一下哈!!!
为了给你们增添点动力往下看,配上个小实验,你们就感兴趣了,光理论不行啊,听了我也会困,动动手做个实验:

image

实验环境配置脚本:

#R1路由器配置
#
aaa
 local-user chap password cipher pap
 local-user chap service-type ppp
#
interface Serial0/0/0
 link-protocol ppp
 ppp authentication-mode pap
 ppp pap local-user pap password simple pap
 ip address 12.1.1.2 255.255.255.252
#R2路由器配置:
#
interface Serial0/0/0
 link-protocol ppp
 ppp pap local-user pap password simple pap
 ip address 12.1.1.2 255.255.255.252
#

以下报文均通过Wireshark抓包,如下所示:

Authentication-Request报文
该报文是由被认证者发起。

image

** Authentication-Ack报文:**
该报文是由认证者识别和接收请求报文的用户名和密码而回复的报文,且code置位为2.

image

** Authentication-Nak报文:**
这个报文我故意配置错误的”用户名“和”密码“来触发Nak报文。

image

再接着来说说 CHAP :

①chap使用3次握手周期性验证对端的身份,这是在链路建立的开始就完成的,在链路建立完成后的任何时间都可以重复发送再验证。
②链路阶段建立完成后,认证者发送一个“质询”给被认证者,被认证者通过一次HASH计算(质询+密码)生成的值发送给认证者,认证者把自己hash出来的值与此对比,如果一致,则接受,否则拒接。
③两端才知道密码,而且密码不会在链路上传输。

CHAP配置选项格式:

image

CHAP比PAP多了“Algorithm”这个字段。

CHAP的报文格式(重点介绍这个):

image

Code:1个字节,标识CHAP报文类型,分3种:
①Challenge
②Respons
③Success
④Failure

Identifier:1个字节,匹配挑战、响应和回复;
Length:2个字节,标识CHAP数据长度,包括code、identifier、length、data字段,其他字段为数据链路层填充,接收时可忽略;
Data:0或多个字节,有Code字段决定;

以上介绍基本的CHAP报文格式,那么接下来在剖析下Code里面的4种报文类型,可先消化以下哈!!!
实验拓扑图:

<同上,略>

实验环境配置脚本:

#R1路由器配置:
aaa
 local-user chap password cipher chap
 local-user chap service-type ppp
#
interface Serial0/0/0
 link-protocol ppp
 ppp authentication-mode chap
 ppp chap user chap
 ip address 12.1.1.1 255.255.255.252
#
#R2路由器配置:
aaa
 local-user chap password cipher nzNG'RXtq'939O4.`(ZGYrz#
 local-user chap service-type ppp
#
interface Serial0/0/0
 link-protocol ppp
 ppp chap user chap
 ip address 12.1.1.2 255.255.255.252
#

以下报文均通过Wireshark抓包,如下所示:
** Challenge报文:** 该报文是由认证者发起。

image

** Response报文:** 该报文是由被认证者回应。

image

Success报文: 该报文是由认证者接收被认证者而回应。

image

** Failure报文:** 该报文是由认证者不接收被认证者而回应。

image

为了给下文做铺垫,苦口婆心说了这么多,来来来。。鼓鼓掌吧!哈哈

image

接下来就是介绍下工作上遇到的一个故障点:L2TP隧道无法建立,一直UP/DOWN

网络架构简图

image

基本介绍:

网络基本配置

#USG关键配置
#
 l2tp enable
#
l2tp-group lac
 undo tunnel authentication
 start l2tp ip <腾讯云公网IP地址> fullusername huawei
#
interface Virtual-Template0
 ppp authentication-mode chap
 ppp chap user <用户名>
 ppp chap password cipher <用户密码>
 ip address ppp-negotiate
 call-lns local-user huawei binding l2tp-group lac
 undo service-manage enable
#

Troubleshooting

image image

第一步为LCP协商(MRU、验证方式、魔术字等),第二步为认证协商(CHAP、PAP),第三步为NCP协商(IP地址)

image

log日志:


image

隧道无法建立:


image image

从Input入方向来看,这个CHAP c22381指的就是MSCHAP,这个结论是华为研发给出来的,目前我也是找不到相关资料确认,先Mark一下。
所以,整个协商阶段一直卡在LCP,无法进入认证阶段和NCP阶段。
还有标准的CHAP,你知道不???

参考文献:

RFC1334《ppp authentication protocol》

image

如果喜欢的我的文章,欢迎关注我的公众号:点滴技术,扫码关注,不定期分享


公众号.jpg
上一篇 下一篇

猜你喜欢

热点阅读