WAN广域网技术--PPP和PPPoE
广域网基础概述
广域网(Wide Area Network,WAN)是一种覆盖广泛地区的计算机网络,它连接不同地理位置的计算机、服务器和设备。广域网通常用于连接不同城市、州或国家之间的网络,它通过互联网服务提供商(ISP)提供的线路来实现连接。
设备基本角色
CE (Customer Edge):客户端的设备,它连接到一个或多个服务提供商边缘(PE)设备,以便用户可以访问服务。CE 设备通常是路由器、防火墙或者路由安全一体机等,它们位于企业的分支机构或总部,负责与服务提供商的网络建立连接。
PE (Provider Edge):服务提供商边缘设备,它同时连接CE和P设备。PE 设备在服务提供商的网络中扮演着网关的角色,负责处理来自CE的流量,并将其转发到服务提供商的核心网络或互联网。
P (Provider):服务提供商设备,不直连CE。P 设备通常位于服务提供商的网络核心,负责在服务提供商的不同网络节点之间转发流量。
PPP(Point-to-Point Protocol)协议
概述
PPP协议是一种点到点链路层协议,用于在两个节点之间建立点对点的数据通信连接。它是TCP/IP协议族中的一员,可以在串行通信线路上传输IP数据包,并支持多种网络层协议,如IP、IPX、AppleTalk等。
PPP帧格式
PPP帧包含一个帧校验序列(FCS),用于检测在传输过程中是否发生了错误。如果在接收端检测到FCS不匹配,那么该帧将被丢弃,因为这表示数据在传输过程中被损坏了。
LCP协议(0xC021):完成数据链路的建立、配置、维护和终止
PAP协议(0xC023)和CHAP协议(0xC223):完成用户的身份认证
IPCP协议(0x8021):协商网络层配置,为用户分配IP地址
IP协议(0x0021):发送和接收用户的数据。
FCS:帧校验字段,PPP采用CRC校验。当CRC校验错误时,PPP就丢弃数据帧
PPP协议的工作过程
- 建立物理连接:用户通过调制解调器呼叫ISP(例如电信)的路由器,路由器的调制解调器给予应答,双方建立物理连接
- 建立数据链路:进入数据链路创建阶段,此时用到的协议是LCP。用户首先向ISP发出PPP帧,帧中封装LCP配置请求包(Configurer-quest),协商数据链路选项(最大的传输单元、所采用的认证协议等)。ISP端如果接受选项,就给用户发送LCP配置确认包(Configure-ack)。数据链路创建完毕
- 用户认证阶段:进人用户认证阶段,用户向ISP发出PAP协议的Authenticate-request,请求认证;如果认证通过,,ISP回应Authenticate-ack。认证的方式是在建立数据链路阶段协商确定的
- 进入网络层配置阶段:此时用到的协议是IPCP。用户向ISP发出IPCP 协议的Configure- request,协商网络层参数;ISP如果接受选项,回应Configure-ack。用户分配到了IP地址,网络层配置完毕,用户接入因特网
- 数据传输阶段:此时用到的协议是IP。用户将自己的数据封装在IP报文中,通过PPP链路发送出去,同时通过PPP链路接收因特网中的数据
- 数据传输完毕,用户断开网络连接:用户端向ISP发送IPCP的Terminate-request,请求断开网络层连接;ISP端回应Terminate-ack,同意断开并收回IP地址
- 断开数据链路:用户端向ISP发送LCP的Terminate request,请求断开数据链路;ISP端回应Terminate-ack ,链路断开
数据链路层协商(LCP)
物理链路建立后,通信双方需要建立数据链路,通信完毕后还需要拆除数据链路。数据链路的建立、配置、维护和终止都是由链路控制协议LCP来完成。LCP包封装在PPP帧的数据字段中
编码字段占1字节,用来说明LCP包的类型
标识字段相当于LCP包的编号,用来匹配请求和应答的LCP包
长度字段给出LCP包的长度
LCP数据部分通常包含LCP协议的一些选项,如最大的接收单元、所采用的认证协议等。
编码 | LCP包类型 | 含义 |
0x0001 | Configurate-request | 提出链路配置的选项和特定的值 |
0x0002 | Configurate-acl | 接受对方提出的选项 |
0x0003 | Configurate-nak | 不接受某些选项 |
0x0004 | Configurate-reject | 不识别某些选项 |
0x0005 | Terminate-request | 请求关闭连接 |
0x0006 | Terminate-ack | 接受关闭连接 |
在发送数据前,通信双方要建立链路,建立链路时无论哪一方都需要发送Config-request报文并携带每一端自已所希望协商的配置参数选项。
当收到Configure-quest报文后,分为以下三种情况:
(1)如果能够识别Configure-request报文的所有配置参数选项且认可所有配置参数选项数据域的内容,将给对方回应Configure-ack报文,并将配置Configure-request报文中的配置参数复制到Configure-ack报文的数据域内。当对方收到Configure-ack后,则会从当前阶段进入到下一个阶段
(2)如果能够识别发送端所发送过来的所有配置参数选项,但对部分配置参数选项数据域中的内容不认可时,回应一个Configure-nak报文,该报文中携带不认可的配置参数选项,这些配置参数选项的数据内容为本端希望的值。当对端收到Configure-nak报文后,会重新发送Configure-request报文,而这个Configure-request报文与上一次所发送的Configure-request报文的区别在于,那些被对端不认可的配置参数选项的内容被填写到刚刚协商完后再次发送的Configure-request报文中(即Configure-nak报文发送回来的那些配置参数选项)
(3)如果不能识别发送过来的配置参数选项时,那么就向对方回应一个Configure-reject报文,该报文中的数据域只携带那些不能识别的配置参数选项。当对端接收到Configure-reject报文后,会再次发送一个Configure-request报文,这个配置请求报文与上一次发送的区别在于删除了可识别的那些配置参数选项
通信结束
当通信结束,需要拆除链路,这时使用的是Terminate-request和 Terminate-ack报文。想要关断链路的一端会持续发送Terminate-request报文,直到收到一个 Terminmte-reply为止,接收端一旦收到了一个Terminate-request报文后,必须回应一个Terminate-reply报文,同时等待对端先将链路断开后,再完成本的所有断开的操作
认证协商
通过LCP协议建立连接后,通常需要做用户的身份认证,只有合法的用户才能接入系统。身份认证采用的协议由LCP协议协商决定。常用的身份认证协议由口令认证协议(Password Authentication Protocol,PAP)和挑战握手协议(Challenge Handshake Authentication Protocol,CHAP)
PAP协议(Password Authentication Protocol)
PAP协议非常简单,用户向系统发送用户名和口令,系统验证用户名和口令,如果正确就接受连接,否则就拒绝连接。PAP直接发送用户名和口令,所以存在较大的安全隐患
PAP包封装在PPP帧中,当封装的是PAP包时,PPP帧的字段是0xC023,格式如下
PAP包编码类型
编码 | PAP包类型 | 含义 |
0x0001 | Authenticate-request | 请求认证,发送用户名和口令 |
0x0002 | Authenticate-ack | 认证通过,允许访问 |
0x0003 | Authenticate-nak | 认证失败,禁止访问 |
PAP的工作过程
(1)用户首先向系统发送PAP包,编码字段置为1,代表Authenticate-request报文,数据部分存放用户名和口令
(2)系统对收到的用户名和口令进行验证,并向用户放回PAP包,如果用户名和口令正确,则返回Authenticate-ack报文,通过认证;否则返回Authenticate-nak报文,拒绝用户接入
CHAP协议(Challenge Handshake Authentication Protocol)
CHAP协议对PAP协议进行了改进,不直接发送用户的密码。CHAP包封装在PPP帧中,当封装的是CHAP包时,PPP帧的协议字段值为0xC223。CHAP的包格式如下
CHAP包编码类型
编码 | CHAP包类型 | 含义 |
0x0001 | Challenge | 系统向用户发送查问值 |
0x0002 | Response | 用户向系统返回计算结果和用户名 |
0x0003 | Success | 认证通过,允许访问 |
0x0004 | Failure | 认证失败,禁止访问 |
CHAP的工作过程
(1)系统首先向用户发送一个Challenge包,数据部分包含一个随机数,这个随机数为查问值
(2)用户收到后,使用事先定义好的函数作用于查问值和自己的口令,生成一个值,将这个值和用户名放到Response包发给系统
(3)系统收到用户的Response包后,根据其中的用户名查到对应的口令,用同一个函数可查到的口令和查问值进行运算,如果计算结果与用户Response包中的值相同,说明是合法用户,并且口令正确,那么系统就给用户发送Success包,通过认证;否则发送Failure包,认证失败
网路层协商
用户认证通过后,PPP协议会使用网络控制协议NCP(Network Control Protocol)来建立两端网络层的连接,协商网络层的选项和传递网络层数据。NCP不是一个协议,是一组协议,包括IPCP、IP、IPX等
互联网协议控制协议IPCP(Internet Protocol Control Protocol)主要用来写上网络层选项,设置用户的IP地址。IPCP的格式如下
IPCP编码类型
编码 | IPCP包类型 |
0x0001 | Configure-request |
0x0002 | Configure-ack |
0x0003 | Configure-nak |
0x0004 | Configure-reject |
0x0005 | Terminate-request |
0x0006 | Terminate-ack |
0x0007 | Code-Reject |
配置命令
1、配置接口封装PPP协议
# 在接口视图下,将接口封装协议改为ppp
[Huawei-Serial2/0/0]link-protocol ppp
2、配置协商超时时间间隔
# LCP协商过程中,超过时间间隔,会重新发送
[Huawei-Serial2/0/0]ppp timer negotiate seconds
3、配置PAP认证
在服务器端,需要配置用户名和密码,并在接口上启用PAP认证
# 进入AAA认证视图,配置用户认证信息
[Huawei]aaa # 在AAA视图下,添加一个本地用户。'cipher'关键字表示密码将以加密形式存储
[Huawei-aaa]local-user username password cipher password # 配置该用户的服务类型为PPP,这意味着这个用户将被用于PPP连接的认证
[Huawei-aaa]local-user username service-type ppp
[Huawei-aaa]quit # 进入Serial2/0/0接口的视图,准备配置该接口的PPP认证模式
[Huawei]interface Serial 2/0/0 # 配置Serial2/0/0接口的PPP认证模式为PAP
[Huawei-Serial2/0/0]ppp authentication-mode pap
在客户端,也需要配置相应的用户名和密码,以便在认证过程中发送给主认证端
4、配置CHAP认证
CHAP认证的配置过程与PAP类似,但更为安全,因为它使用加密的密码进行认证
# 进入AAA认证视图,配置用户认证信息
[Huawei]aaa # 在AAA视图下,添加一个本地用户。'cipher'关键字表示密码将以加密形式存储,
[Huawei-aaa]local-user username password cipher password # 配置该用户的服务类型为PPP,这意味着这个用户将被用于PPP连接的认证
[Huawei-aaa]local-user username service-type ppp
[Huawei-aaa]quit # 进入Serial2/0/0接口的视图,准备配置该接口的PPP认证模式
[Huawei]interface Serial 2/0/0 # 配置Serial2/0/0接口的PPP认证模式为CHAP
[Huawei-Serial2/0/0]ppp authentication-mode chap
5、配置MRU(Maximum Receive Unit,最大接收单元)
# 设置MRU为1500字节
[Huawei-Serial2/0/0]ppp mru 1500
实例
PAP认证
在路由器上面本身是没有我们要配置的Serial接口,需要我们接入这个S口,右键路由器,进入设置,然后如下图
选择Serial线,连接两个路由器
AR1配置命令
[AR1]aaa #添加待认证用户信息
[AR1-aaa]local-user ren password cipher ren123456
Info: Add a new user.
[AR1-aaa]local-user ren service-type ppp
[AR1-aaa]q#指定认证用户业务类型
[AR1]int Serial 4/0/0
[AR1-Serial4/0/0]link-protocol ppp 认证模式为:PAP
[AR1-Serial4/0/0]ppp authentication-mode pap
[AR1-Serial4/0/0]ip address 10.1.1.1 30
[AR1-Serial4/0/0]q
AR2配置
[AR2]int Serial 4/0/0
[AR2-Serial4/0/0]link-protocol ppp#添加PPP认证用户信息
[AR2-Serial4/0/0]ppp pap local-user ren password cipher ren123456
[AR2-Serial4/0/0]ip address 10.1.1.2 30
[AR2-Serial4/0/0]q
查看状态,尝试ping通
CHAP认证
AR1配置
[AR1]aaa #添加待认证用户信息
[AR1-aaa]local-user ren password cipher ren123456
Info: Add a new user.
[AR1-aaa]local-user ren service-type ppp
[AR1-aaa]q#指定认证用户业务类型
[AR1]int Serial 4/0/0
[AR1-Serial4/0/0]link-protocol ppp 认证模式为:CHAP
[AR1-Serial4/0/0]ppp authentication-mode chap
[AR1-Serial4/0/0]ip address 10.1.1.1 30
[AR1-Serial4/0/0]q
AR2配置
[AR2]int Serial 4/0/0
[AR2-Serial4/0/0]link-protocol ppp#添加PPP认证用户信息
[AR2-Serial4/0/0]ppp chap local-user ren
[AR2-Serial4/0/0]ppp chap password cipher ren123456
[AR2-Serial4/0/0]ip address 10.1.1.2 30
[AR2-Serial4/0/0]q
PPPoE协议
PPPoE(PPP over Ethernet,以太网承载PPP协议)是一种把PPP帧封装到以太网帧中的链路层协议。PPPoE可以使以太网网络中的多台主机连接到远端的宽带接入服务器
PPPoE集中了PPP和Ethernet两个技术的有点。由以太网的组网灵活,又可以利用PPP协议实现认证、计费等功能
PPPoE会话的建立通过不同的PPPoE报文交互实现。
PPPoE会话建立
PPPoE会话建立有三个阶段:发现阶段、会话阶段、终结阶段
(1)PPPoE发现阶段
PPPoE协商----用户接入,创建PPPoE虚拟链路。有四个步骤:客户端发送请求、服务端响应请求、客户端确认响应、建立会话
(2)PPPoE会话阶段
PPP协商----PPP协商内容包括LCP协商、PAP/CHAP认证、NCP协商等阶段
(3)PPPoE终结阶段
PPPoE断开----用户下线,客户端断开连接或者服务器断开连接
配置实例--PPPoE服务器端
需求:
- 在PPPoE服务器端上创建客户端分配IP的地址
- PPPoE服务器端完成PPPoE客户端认证并分配合法的IP地址
AR8配置
# 创建地址池和虚拟模板
[AR8]ip pool server
Info: It's successful to create an IP address pool.
[AR8-ip-pool-ren]network 192.168.10.0 mask 255.255.255.0
[AR8-ip-pool-ren]gateway-list 192.168.10.254
[AR8-ip-pool-ren]q
[AR8]interface Virtual-Template 1
[AR8-Virtual-Template1]ppp authentication-mode chap
[AR8-Virtual-Template1]ip address 192.168.10.254 255.255.255.0
[AR8-Virtual-Template1]remote address pool server
[AR8-Virtual-Template1]q# 将物理接口和虚拟模板绑定
[AR8]interface GigabitEthernet 0/0/0
[AR8-GigabitEthernet0/0/0]pppoe-server bind virtual-template 1
[AR8-GigabitEthernet0/0/0]quit# 创建访问用户
[AR8]aaa
[AR8-aaa]local-user renuser password cipher ren123456
Info: Add a new user.
[AR8-aaa]local-user renuser service-type ppp
[AR8-aaa]q
AR7配置
[AR7]ip pool client
Info: It's successful to create an IP address pool.
[AR7-ip-pool-client]network 192.168.10.0 mask 255.255.255.0
[AR7-ip-pool-client]gateway-list 192.168.10.254
[AR7-ip-pool-client]q
[AR7]interface Virtual-Template 1
[AR7-Virtual-Template1]ppp chap user renuser
[AR7-Virtual-Template1]ppp chap password cipher ren123456
[AR7-Virtual-Template1]q
[AR7]interface GigabitEthernet 0/0/0
[AR7-GigabitEthernet0/0/0]pppoe-client dial-pool-number 1
[AR7-GigabitEthernet0/0/0]quit
配置完后,查看PPPoE-Client会话初始状态信息
[AR7]display pppoe-client session summary