PPP / PPPoE
PPP(Point-to-Point Protocol 点到点协议)是点到点专线中的协议。还有个变种,在多路访问网络中需要虚拟点到点连接PPPoE。提供了一种标准的方式在点对点的链路上传输多种网络层协议(IP,IPX,AppleTalk)的数据报。PPP可在链路建立过程中检查链路质量,还支持PAP和CHAP密码验证。
PPP链路的建立:
1.用LCP※1来建立链路。配置为PPP协议的WAN端口会发送LCP包,内含配置选项,来配置和测试链路。如果一端是PPP协议,一端是HDLC协议,链路是无法建立的
2.(是可选的)在链路上可以用PAP/CHAP来认证。创建链路并通过认证后,PPP进入链路开启状态。
3.用NCP※2允许封装多种网络层协议,并负责传输PPP链路上的数据。这样一条PPP链路就建立起来了 ※1:LCP即链路控制协议,用于建立和维护点到点链路
※2:NCP即网络控制协议,用于建立和配置网络层协议(IP,IPX,AppleTalk),当然现状都是IP协议,IPX和AppleTalk已被淘汰。
PPP认证:
PPP认证不是必须的,支持两种认证方式:PAP和CHAP。
PAP(Password Authentication Protocol 密码认证协议):用明文密码两次握手来实现认证。LCP建立链路后,配置PAP认证后,源端口会不停发送用户名和密码直至认证通过。安全性较低,一方面因为密码是明文。另一个方面因为是源端口发送用户名和密码,对方不能控制认证的频率和次数,因此源端口可以重复地尝试攻击,例如每秒1万次试验攻击PAP密码并破解。
CHAP(Challenge Handshake Authentication Protocol 质询握手认证协议):比PAP更可靠,用三次握手来实现认证。认证步骤:
1.LCP建立链路后,配置CHAP认证后,CHAP定期执行消息询问,源端口发送用户名和随机数口令进行询问。
2.对方端口收到后,先检查本地数据库中是否有一致的用户名,如没有就忽略。如有,就用用户名和密码和收到的随机数口令做成HASH,然后将HASH及自己的用户名发送给源端口。
3.源端口收到后,先检查本地数据库中是否有一致的用户名,如没有就忽略。如有,就用用户名和密码和随机数口令做成HASH,与收到的HASH比对,一致就认证通过
它比PAP更安全,一方面因为随机数口令在链路存在时是不断改变的不可预知。另一方面由本地路由器或第三方身份认证服务器控制着发送询问的频率,不允许在没收到询问消息时主动进行认证尝试。简单地说CHAP是要对方先发质询,然后你将密码发送给对方,再等对方确认是否OK,而且传递的都是经MD5算法加密后生成的HASH值。
PPP多链路捆绑:
PPP multilink是将多个物理链路合并成一条逻辑链路。原理是由LCP在初始化时设置一个功能选项,将报文分成多个小块的片段同时送到远端路由器,LCP再将它们恢复成完整报文。切片一般看有几根物理链路,如果捆绑两条就切成两片。这样能合并带宽,提高传输效率,且物理接口不必再配置IP地址,直接在合并的虚链路multilink上配置IP地址即可。
PPP配置:
文章图片
两端默认都是封装成HDLC,将R1的s0/0口改成封装PPP:
文章图片
这样链路两端封装协议不匹配会down掉,必须将R2的s0/0口也改成封装PPP,这样一条不需要认证的PPP链路就通起来了。双方路由表中也会产生一条路由。
现在配成需要PAP认证,将R1作为源端口发送用户名密码:
文章图片
R1上开启PAP认证后,原本连通的PPP链路将down掉。需要在R2上要配置接收用的用户名密码:
文章图片
这样down掉的PPP链路又能重新Up起来。此时R1是认证的发起方,而R2是认证的被动接收方。如果想R2也同样有权发起认证,可以逆向地配置:
文章图片
这样就实现了PAP的双向认证。
再来试试CHAP认证,CHAP没有主动和被动之分,两边都要配置用户名(对方的hostname)密码:
文章图片
实验一下PPP多链路连接:
文章图片
将两条链路捆绑在一起,只要为multilink配置IP地址即可:
文章图片
再如上在R2上同样配置即可。
PPPoE:
PPPoE(Point to Point Protocol over Ethernet)提供在以太网链路上的PPP连接(PPP是s口上的协议)。可以使以太网的主机通过一个简单的桥接设备连到一个远端的接入集中器上。通过PPPoE协议远端接入设备能实现对每个接入用户的控制和计费。目前流行的ADSL就使用了PPPoE协议。PPPoE的封装层次:IP->PPP->PPPoE->Ethernet。
ADSL(Asymmetric Digital Subscriber Line 非对称用户数字环路)是一种能够通过普通电话线(铜线)就能提供宽带数据业务的技术。ADSL支持上行速率640Kbps-1Mbps,下行速率1-8Mbps;当使用分离器时可以支持同时打电话和上网;使用的频段在4KHz-1MHz(一般语音会话的带宽仅为300Hz-4KHz),有效传输距离3-5Km范围以内。
ADSL常见的接入方式有桥接接入和路由接入:
桥接接入:
1.ADSL Modem----单PC//性能很好,家庭用户较多使用
2.ADSL Modem----网关服务器----交换机----较少PC//性能一般
3.ADSL Modem----宽带路由器----交换机----较多PC//性能很好,企业可以使用
路由接入:
ADSL Modem(带路由功能)----较少PC//性能较好,SOHO较多使用
ADSL路由器----较少PC//性能很好,SOHO较多使用
建立PPPoE通道(ADSL拨号)分两个阶段:发现阶段,会话阶段。
发现阶段有4个报文:初始化广播报文PADI,回应报文PADO,单播请求报文PADR,会话ID报文PADS。(会话终止时还有终止报文PADT)
发现阶段有4个步骤:第一步用户主机发送广播报文PADI请求建立链路。第二步以太网上的访问集中器(AC)收到广播后以单播方式回送一个PADO应答。第三步因为PADI是广播的,所以主机可能收到多个PADO报文,主机选择一个AC单播发送PADR请求建立链接。第四步AC收到PADR请求建立报文后,就会向主机回复一个PADS报文,内含session ID
会话阶段:PPP包被封装在PPPoE以太帧中,PPPoE的负载是整个PPP包,以太协议为0x8864。
PPPoE配置:
文章图片
R1配成服务器,开启CHAP认证,密码为pppoetest ,IP地址分配范围为12.1.1.100-200:
文章图片
上面模板1里将TCP的MTU调整成1452不是必须的,但建议调整一下。因为最大MTU是1500,如果超过1500会切片,但有些TCP应用不允许切片,那些应用就不能用了。为何要改成1452呢?因为TCP头部要20个字节,IP头部要20个字节,PPPoE本身要8字节,因此MTU可用1500-20-20-8=1452。
R2配成主机拨号端,模拟ADSL拨号获得IP地址来上网:
文章图片
上面拨号组1里同样将最大MTU调整为1492,因为最大MTU是1500,PPPoE本身要8字节,因此最大可用MTU为1492。TCP的MTU调整成1452,原因同上。调整MTU不是必须的。
现在查看R2的IP地址表,会发现自动获得了一个服务器分配的IP:
【PPP / PPPoE】
文章图片
推荐阅读
- HCNA|ensp ppp数据抓包 查看接口用户名和密码
- 配置PPP
- 1.三层交换,ACL,PPP,OSPF,热备
- NAT|NAT,PPP及其基本配置
- OpenWrt——进行PPPoE拨号时透过路由器访问光猫的方法
- PPP拨号流程
- 修改pppd,提高openwrt中pppoe多拨成功率
- ubuntu|ubuntu 16.04创建pppoe 拨号链接
- PPP协议解析
- HCL里MSR36-20的PPPoE配置(含client和server)