PPP是一种常见的广域网数据链路层协议,主要用于在全双工的链路上进行点到点的数据传输封装,支持同步传输和异步传输,通常用于VPN和拨号上网
PPP
概述
PPP一般运行在serial串口上,是一种广域网协议,PPP建立分为LCP(链路控制协议)和NCP(网络控制协)两大步骤
LCP(链路控制协议)用于建立、配置、维护和终止PPP链路,负责PPP的链路管理,和上层(网络层)协议无关
NCP(网络控制协)用于建立、配置网络层协议,进行参数协商
状态机
Dead:PPP物理层不可用,当链路被激活转为Establish,进入链路建设阶段
Establish:链路进行LCP相关参数协商,比如MTU,MRU,认证模式,魔术字等
Authenticate:进入认证阶段,成功后进入Network,反之进入Terminate然后重新尝试建立
Network:进行NCP协商,协商完成后链路可用,可随时中断会话,进入Terminate状态
Terminate:连接结束,释放所以相应资源后链路回到Dead状态
报文
格式
Flag域:标识帧的起始和终止,二进制序列
Address:通常为广播,全1
Control:缺省0x03表无序帧
Protocol:标识不同协议,0XC021代表LCP报文,0XC023代表PAP报文,0XC223代表CHAP报文
Code:主要用于标识LCP相关报文
Indentifer:1个字节,用来匹配请求和响应,值为非法时,该报文将被丢弃。通常一个配置请求报文的ID是从0x01开始逐步加1的。当对端接收到该配置请求报文后,无论使用何种报文回应对方,但必须要求回应报文中的ID要与接收报文中的ID一致
类型
Configure:与配置相关的报文
Configure- Packet | 配置信息 | 1 |
Configure-Ack | 接受配置内容 | 2 |
Configure-Nak | 打回不可接受的参数 | 3 |
Configure- Reject | 打回不可识别的参数 | 4 |
Authenticate:用于认证的一些报文
Authenticate-Resquest | 由被认证方发送请求,内容包含密码用户名 |
Authenticate-Ack | 认证方的回应,认证成功发送 |
Authenticate-Nak | 认证方的回应,认证失败发送 |
Terminate:用于终止回话的报文
Terminate-Resquest | 请求断开连接 | 5 |
Terminate- Ack | 相应请求 | 6 |
维护报文
Code-Reject | 报文表示无法识别报文的Code字段 | 7 |
Protocol-Reject | 报文表示无法识别报文的Protocol字段 | 8 |
Echo-Request | 通常用于检测链路通信质量 | 9 |
Echo-Reply | 10 | |
Discard-Request | 收到立即丢弃,无实际意义 | 11 |
LCP协商
链路搭建
连接发送configure-request向对端进行确认,对端根据内携带参数进行回复,参数不可识别回复configure-reject,参数不可接收发送configure-nak,收到nak和reject的发起方重新修改相应参数,直到都能够识别且参数可接收回复ACK完成协商
在本协商中需要协商的参数有
MTU(最大传输单元)
Asynchronous Control Character Map(异步控制字符映射)
Authentication Protocol(认证协议,双方可不同,但一定要支持)
Quality Protocol(质量协议)
Magic Number(魔术字,用于防环)
Protocol Field Compression(协议域压缩)
Address and Control Field Compression(地址及控制域压缩)
其中比较重要的是MTU(最大传输单元),Authentication Protocol(认证协议),Magic Number(魔术字)
链路维护
通过echo-request和echo-reply两个报文进行检测,以此确定双方链路的联通
链路终止
发起方发送请求,接收方收到或回复Ack同意释放
认证模式
完成LCP协商之后,进入认证阶段,分为PAP和CHAP认证两种
PAP
报文以明文方式进行传输
被认证方发送自己的密码和用户名交给认证方,由认证方进行确认,如果成功回复Ack,失败回复Nak
CHAP
经过MD5加密(随机数+数据+挑战报文)后传输
认证端发送一个Challenge报文给被认证端,被认证端
需用到报文:Challenge,Response,Success,Failure
认证通过后进入NCP协商
NCP协商
与LCP报文基本一样,本文整合至报文小标题中
对于IP协议来说NCP使用IPCP,用于获取IP地址以进行三层通信
根据两端设备的配置不同,IPCP协商过程可分为静态协商和动态协商
静态协商
静态即不协商,双方IP均为人为手动配置,进入此阶段双方告知彼此地址即可
动态协商
1.本端向由对端申请发送configure-request报文
2.对方发现0.0.0.0的IP不合法,将分配的IP携带在configure-Nak发回
3.本端收到回复带分配地址的configure-request进行确认
4.对端收到后回复configure-Ack
5.对端发送带自己IP的configure-request
6.本端响应Ack
至此,PPP建立完成
实验
拓扑
要求
PPP认证模式chap,用户名ensp密码huawei123明文显示,R1为认证方
配置
认证端
[R1-aaa]dis th
[V200R003C00]
#
aaa
authentication-scheme default
authentication-scheme ensp//创建一个认证计划ensp
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
domain ensp //创建域
authentication-scheme ensp
local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$//创建密码
local-user admin service-type http
local-user user@ensp password cipher %$%$xD|Q.tVEQ"`7|*23`Gq!=u6z%$%$//创建用户
local-user user@ensp service-type ppp//服务类型指定PPP
#
return
[R1-Serial4/0/0]dis th
[V200R003C00]
#
interface Serial4/0/0
link-protocol ppp
ppp authentication-mode chap domain ensp
ip address 12.0.0.1 255.255.255.0
#
return
被认证端
[R2-Serial4/0/0]dis th
[V200R003C00]
#
interface Serial4/0/0
link-protocol ppp
ppp chap user user@ensp//绑定用户至域下
ppp chap password cipher %$%$hU|sVb*OB'~\byUd:rg(,.=|%$%$//绑定用户和密码
ip address 12.0.0.2 255.255.255.0
#
return