PPPOE
PPP PPP(Point-to-Point Protocol,点对点协议)是一种点对点的链路层协议。它能够提供用户认证,易于扩充,并且支持同/异步通信。
PPP定义了一整套协议,包括:
·链路控制协议(Link Control Protocol,LCP):用来建立、拆除和监控数据链路。
·网络控制协议(Network Control Protocol,NCP):用来协商在数据链路上所传输的网络层报文的一些属性和类型。
·认证协议:用来对用户进行认证,包括PAP(Password AuthenticationProtocol,密码认证协议)、CHAP(Challenge Handshake Authentication Protocol,质询握手认证协议)、MSCHAP(MicrosoftCHAP,微软CHAP协议)和MSCHAPv2(微软CHAP协议版本2)。
PPP认证:
1. PAP认证
PAP为两次握手协议,它通过用户名和密码来对用户进行认证。
PAP在网络上以明文的方式传递用户名和密码,认证报文如果在传输过程中被截获,便有可能对网络安全造成威胁。因此,它适用于对网络安全要求相对较低的环境。
2. CHAP认证
CHAP为三次握手协议。
CHAP认证过程分为两种方式:认证方配置了用户名、认证方未配置用户名。推荐使用认证方配置用户名的方式,这样被认证方可以对认证方的身份进行确认。
CHAP只在网络上传输用户名,并不传输用户密码(准确的讲,它不直接传输用户密码,传输的是用MD5算法将用户密码与一个随机报文ID一起计算的结果),因此它的安全性要比PAP高。
PPP链路建立过程:
PPP链路建立过程如图所示:
(1)PPP初始状态为不活动(Dead)状态,当物理层Up后,PPP会进入链路建立(Establish)阶段。
(2)PPP在Establish阶段主要进行LCP协商。LCP协商内容包括:Authentication-Protocol(认证协议类型)、ACCM(Async-Control-Character-Map,异步控制字符映射表)、MRU(Maximum-Receive-Unit,最大接收单元)、Magic-Number(魔术字)、PFC(Protocol-Field-Compression,协议字段压缩)、ACFC(Address-and-Control-Field-Compression,地址控制字段压缩)、MP等选项。如果LCP协商失败,LCP会上报Fail事件,PPP回到Dead状态;如果LCP协商成功,LCP进入Opened状态,LCP会上报Up事件,表示链路已经建立(此时对于网络层而言PPP链路还未建立,还不能够在上面成功传输网络层报文)。
(3)如果配置了认证,则进入Authenticate阶段,开始PAP、CHAP、MSCHAP或MSCHAPv2认证。如果认证失败,LCP会上报Fail事件,进入Terminate阶段,拆除链路,LCP状态转为Down,PPP回到Dead状态;如果认证成功,LCP会上报Success事件。
(4)如果配置了网络层协议,则进入Network协商阶段,进行NCP协商(如IPCP协商、IPv6CP协商)。如果NCP协商成功,链路就会UP,就可以开始承载协商指定的网络层报文;如果NCP协商失败,NCP会上报Down事件,进入Terminate阶段。(对于IPCP协商,如果接口配置了IP地址,则进行IPCP协商,IPCP协商通过后,PPP才可以承载IP报文。IPCP协商内容包括:IP地址、DNS服务器地址等。)
(5)到此,PPP链路将一直保持通信,直至有明确的LCP或NCP消息关闭这条链路,或发生了某些外部事件(例如用户的干预)。
PPPoE PPPoE:Point to PointProtocol over Ethernet, 以太网上的 PPP。在以太网上承载PPP协议(点到点连接协议),它利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并对接入的每一个主机实现控制、计费功能。
PPPoE 的以太网有效载荷显示如下:
VER ― PPPOE 版本。必须设置为 0x1。
TYPE ― 必须设置为 0x1。
CODE ― Discovery 和 PPP Session阶段有定义。
SESSION_ID ― 无符号值。Discovery 数据包中有该字段定义。对于特定的 PPP Session 而言,该值为固定值。实际上,该字段定义了包括以太网 SOURCE_ADDR 和 DESTINATION_ADDR 的 PPP。0xffff 作为预留值,不作使用。
LENGTH ― 表示 PPPoE 有效载荷长。不包括以太网或PPPoE 头的长度。
工作原理:
PPPoE协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得PPPoE终结端(在局端的ADSL设备上)的以太网MAC地址,并建立一个唯一的PPPoE SESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。
发现阶段:
在发现(Discovery)阶段中用户主机以类似广播的方式寻找所连接的所有接入集中器(或交换机),并获得其以太网MAC地址。然后选择需要访问的接入集中器,并确定所要建立的PPP会话唯一标识号码。发现阶段有4个步骤,当此阶段完成,通信的两端都知道PPPoE SESSION-ID和对端的以太网地址,他们一起唯一定义PPPoE会话。这4个步骤如下。
(1)主机广播发起分组(PADI),分组的目的地址为以太网的广播地址0×ffffffffffff,CODE(代码)字段值为0×09,SESSION-ID(会话ID)字段值为0×0000。PADI分组必须至少包含一个服务名称类型的标签(标签类型字段值为0×0101),向接入集中器提出所要求提供的服务。
(2)接入集中器收到在服务范围内的PADI分组,发送PPPoE有效发现提供包(PADO)分组,以响应请求。其中CODE字段值为0×07,SESSION-ID字段值仍为0×0000。PADO分组必须包含一个接入集中器名称类型的标签(标签类型字段值为0×0102),以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。
(3)主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组(PADR)。其中CODE字段为0×19,SESSION_ID字段值仍为0×0000。PADR分组必须包含一个服务名称类型标签,确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,完整它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。
(4)接入集中器收到PADR分组后准备开始PPP会话,它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为0×65,SESSION-ID字段值为接入集中器所产生的一个唯一的PPPoE会话标识号码。PADS分组也必须包含一个接入集中器名称类型的标签以确认向主机提供的服务。当主机收到PADS分组确认后,双方就进入PPP会话阶段。
PPP会话阶段:
用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。一旦PPPoE会话开始,PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION-ID一定不能改变,并且必须是发现阶段分配的值。
PPPoE还有一个PADT分组,它可以在会话建立后的任何时候发送,来终止PPPoE会话,也就是会话释放。它可以由主机或者接入集中器发送。当对方接收到一个PADT分组,就不再允许使用这个会话来发送PPP业务。PADT分组不需要任何标签,其CODE字段值为0×a7,SESSION-ID字段值为需要终止的PPP会话的会话标识号码。在发送或接收PADT后,即使正常的PPP终止分组也不必发送。PPP对端应该使用PPP协议自身来终止PPPoE会话,但是当PPP不能使用时,可以使用PADT。
PPPoE组网结构
PPPoE使用Client/Server模型。PPPoEClient向PPPoE Server发起连接请求,两者之间会话协商通过后,就建立PPPoE会话,此后PPPoEServer向PPPoE Client提供接入控制、认证、计费等功能。
根据PPPoE会话的起点所在位置的不同,PPPoE分为Router-Initiated和Host-Initiated两种组网结构。
1.Router-Initiated组网结构
如图所示,Router-Initiated组网结构是在两台路由器之间建立PPPoE会话,所有主机通过同一个PPPoE会话传送数据,主机上不用安装PPPoE客户端拨号软件,一般是一个企业共用一个账号接入网络(图中PPPoE Client位于企业/公司内部,PPPoE Server是运营商的设备)。
2.Host-Initiated组网结构
如图所示,Host-Initiated组网结构是将PPPoE会话建立在Host和运营商的路由器之间,为每一个Host建立一个PPPoE会话,每个Host都是PPPoE Client,每个Host使用一个帐号,方便运营商对用户进行计费和控制。Host上必须安装PPPoE客户端拨号软件。
PPPOE服务器配置过程
1.创建一个PPPOE用户,在系统视图下:
Local user qihaijuan
Password simple qihaijuan123456
Service-type ppp
2.配置虚拟模板2的参数,采用CHAP认证对端,并为客户端分配固定的IP地址[qK1] ,配置客户端网关和DNS服务器地址:
Interface virtual-template 10
PPP authentication-mode chap domain system
PPP chap user qihaijuan
Remote address 192.4.5.1 (为客户端分配的固定的IP地址)
IP address 192.1.1.1 (网关)
PPP ipcp dns 8.8.8.8(DNS服务器地址)
(配置虚拟模板2的参数,采用PAP认证对端,并为客户端分配固定的IP地址,配置客户端网关和DNS服务器地址:
Interface virtual-template 10
PPP authentication-mode pap domain system
ppp pap local-user qihaijuan password simpleqihaijuan123456
Remote address 192.4.5.1 (为客户端分配的固定的IP地址)
IP address 192.1.1.1 (网关)
PPP ipcp dns 8.8.8.8(DNS服务器地址)
)
3.在物理接口Ethernet 0/0上启用PPPOE server协议,并将该接口与虚拟模板接口10绑定。
Interface Ethernet 0/0
PPPOE-server blind virtual-template 10
抓包过程
1.PPPOE发现阶段:(676---680)
2.PPPOE会话阶段:(681之后)
LCP为PPP的链路控制协议,PAP为PPP的密码认证协议,IPCP为客户端获得DNS
【PPPOE】 [qK1]如何从地址池中分配地址??
推荐阅读
- 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)