20 广域网技术PPP(Point to Point)协议/实验+理论

发布时间 2023-09-25 14:41:38作者: 搞笑一下

广域网

广域网是连接不同地区局域网的网络,通常所覆盖的范围从几十公里到几千公里。它能连接多个地区、城市和国家,或横跨几个洲提供远距离通信,形成国际性的远程网络。

image

广域网和局域网的区别

局域网是一种覆盖地理区域比较小的计算机网络。广域网是一种通过租用ISP网络或者自建专用网络来构建的覆盖地理区域比较广的计算机网络。早期广域网与局域网的区别在于数据链路层和物理层的差异性,在TCP/IP参考模型中,其他各层无差异。

image

广域网络设备角色介绍

广域网络设备基本角色有三种,CE(Customer Edge,用户边缘设备) 、PE (Provider Edge,服务提供商边缘设备) 和P(Provider ,服务提供商设备) 。具体定义是:
CE:用户端连接服务提供商的边缘设备。CE连接一个或多个PE,实现用户接入。
服务提供商连接CE的边缘设备。PE同时连接CE和P设备,是重要的网络节点。
服务提供商不连接任何CE的设备。

image

PPP协议

早期的广域网技术主要是针对不同的物理链路类型,在数据链路层进行不同的二层封装。在CE与PE之间常用的广域网封装协议有PPP/HDLC/FR等,用于解决用户接入广域网的长距离传输问题。PPP(Point-to-Point Protocol,点到点协议)是一种常见的广域网数据链路层协议,主要用于在全双工的链路上进行点到点的数据传输封装。PPP提供了安全认证协议族PAP(Password Authentication Protocol,密码验证协议)和CHAP(Challenge Handshake Authentication Protocol,挑战握手认证协议)。
PPP协议具有良好的扩展性,例如,当需要在以太网链路上承载PPP协议时,PPP可以扩展为PPPoE。
PPP协议提供LCP(Link Control Protocol,链路控制协议),用于各种链路层参数的协商,例如最大接收单元,认证模式等。
PPP协议提供各种NCP(Network Control Protocol,网络控制协议),如IPCP(IP Control Protocol ,IP控制协议),用于各网络层参数的协商,更好地支持了网络层协议。

PPP链路建立流程

PPP链路的建立有三个阶段的协商过程,链路层协商、认证协商(可选)和网络层协商。PPP协商由链路两端的接口完成。接口的状态表示了协议的协商阶段
链路层协商:通过LCP报文进行链路参数协商,建立链路层连接。
认证协商(可选):通过链路建立阶段协商的认证方式进行链路认证。
网络层协商 :通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。

PPP链路接口状态机
image

LCP报文格式(了解)

PPP报文可由Protocol字段标识不同类型的PPP报文。例如,当Protocol字段为0xC021时,代表是LCP报文。此时又由Code字段标识不同类型LCP报文,如下表所示。
Flag字段标识一个物理帧的起始和结束,该字节为二进制序列01111110(0X7E)。
PPP帧的Address字段字节固定为11111111 (0XFF),是一个广播地址。
PPP数据帧的Control字段默认为00000011(0X03),表明为无序号帧。
帧校验序列(FCS)字段是个16 bit的校验和,用于检查PPP帧的完整性。
Protocol字段用来说明PPP所封装的协议报文类型,0XC021代表LCP报文,0XC023代表PAP报文,0XC223代表CHAP报文。
Information字段包含Protocol字段中指定协议的内容,该字段的最大长度被称为最大接收单元MRU,缺省值为1500。
当Protocol字段为0XC021时,Information结构如下:
Identifier字段为1个字节,用来匹配请求和响应。
Length域的值就是该LCP报文的总字节数据。
Data字段则承载各种TLV(Type/Length/Value)参数用于协商配置选项,包括最大接收单元,认证协议等等。

LCP协商过程

LCP协商由不同的LCP报文交互完成。协商由任意一方发送Configure-Request报文发起。如果对端接收此报文且参数匹配,则通过回复Configure-Ack响应协商成功。

image

协商过程不匹配

image

参数不识别

image

PPP认证模式 - PAP

PAP认证双方有两次握手。协商报文以明文的形式在链路上传输。

image

PPP认证模式 - CHAP

CHAP认证双方有三次握手。协商报文被加密后再在链路上传输。

image

NCP协商(静态IP地址协商)

NCP主要用来建立和配置不同的网络层协议,协商在该数据链路上所传输的数据包的格式与类型。常见的有IPCP等,静态IP地址协商过程如下:
一. 每一端都要发送Configure-Request报文,在此报文中包含本地配置的IP地址;
二. 每一端接收到此Configure-Request报文之后,检查其中的IP地址,如果IP地址是一个合法的单播IP地址,而且和本地配置的IP地址不同(没有IP冲突),则认为对端可以使用该地址,回应一个Configure-Ack报文。

NCP协商 - 动态IP地址协商

动态IP地址协商支持PPP链路一端为对端配置IP地址。
动态协商IP地址的过程如下:
R1向R2发送一个Configure-Request报文,此报文中会包含一个IP地址0.0.0.0,表示向对端请求IP地址;
R2收到上述Configure-Request报文后,认为其中包含的地址(0.0.0.0)不合法,使用Configure-Nak回应一个新的IP地址10.1.1.1;
R1收到此Configure-Nak报文之后,更新本地IP地址,并重新发送一个Configure-Request报文,包含新的IP地址10.1.1.1;
R2收到Configure-Request报文后,认为其中包含的IP地址为合法地址,回应一个Configure-Ack报文;
同时,R2也要向R1发送Configure-Request报文请求使用地址10.1.1.2,R1认为此地址合法,回应Configure-Ack报文。

实验

了解PPP配置命令
抓包分析协商过程

拓扑

分别配置PAP认证,配置CHAP认证,配置NCP动态分配对端地址

image

配置PAP认证+静态NCP协商

AR1配置

<Huawei>sys
[Huawei]sys AR1
[AR1]aaa
[AR1-aaa]local-user gls password cipher abc.123/  /创建PPP用于PAP认证的用户
[AR1-aaa]local-user gls service-type ppp
[AR1]inte Serial 4/0/0    //进入串口4/0/0
[AR1-Serial4/0/0]link-protocol ppp   //配置链路协议为PPP
[AR1-Serial4/0/0]ip addr 12.1.1.1 30   //配置串口地址
[AR1-Serial4/0/0]ppp authentication-mode pap   //设置认证模式为PAP
[AR1-Serial4/0/0]ppp pap local-user gls password cipher abc.123   //设置用于PAP认证的用户和密码

AR2配置

<Huawei>sys
[Huawei]sys AR2
[AR2]aaa
[AR2-aaa]local-user gls password cipher abc.123
[AR2-aaa]local-user gls service-type ppp
[AR2]inte ser 4/0/0
[AR2-Serial4/0/0]link-protocol ppp
[AR2-Serial4/0/0]ip addr 12.1.1.2 30
[AR2-Serial4/0/0]ppp authentication-mode pap 
[AR2-Serial4/0/0]ppp pap local-user gls password cipher abc.123

协商过程(AR1的Serial 4/0/0抓包)
一.AR1发送LCP报文,类型为Configuration Request,以此来发送自己的协商参数,有MRU,认证类型,和模式字
image

对端回了Configuration ACK,标识链路层协商完毕
image

进入PAP认证阶段,双方发送认证的用户和密码在Authenticate-Request中,认证成功则回复Authenticate-ACK,如下图,双方的验证都通过了

image

进入LCP协商阶段,这边使用的IP协议且静态配置IP,使用IPCP进行协商,发送自己的IP地址配置给对端
image

对端确认IP没有和本接口冲突后,回复Configuration-ACK确实已知道对端IP地址
image

至此PPP链路协商完成,在AR1上查看路由表并测试通信

<AR1>dis ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 8        Routes : 8        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       12.1.1.0/30  Direct  0    0           D   12.1.1.1        Serial4/0/0
       12.1.1.1/32  Direct  0    0           D   127.0.0.1       Serial4/0/0
       12.1.1.2/32  Direct  0    0           D   12.1.1.2        Serial4/0/0  //PPP链路对端的路由信息
       12.1.1.3/32  Direct  0    0           D   127.0.0.1       Serial4/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

<AR1>ping 12.1.1.2
  PING 12.1.1.2: 56  data bytes, press CTRL_C to break
    Reply from 12.1.1.2: bytes=56 Sequence=1 ttl=255 time=50 ms
    Reply from 12.1.1.2: bytes=56 Sequence=2 ttl=255 time=20 ms
    Reply from 12.1.1.2: bytes=56 Sequence=3 ttl=255 time=10 ms
    Reply from 12.1.1.2: bytes=56 Sequence=4 ttl=255 time=20 ms

  --- 12.1.1.2 ping statistics ---
    4 packet(s) transmitted
    4 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 10/25/50 ms

配置CHAP认证

AR1

建立在原本配置PAP时已经配置好AAA用户,并用户服务类型为PPP
[AR1-Serial4/0/0]ppp authentication-mode chap   //认证模式为CHAP
[AR1-Serial4/0/0]ppp chap user gls   //用于CHAP认证用户名为gls
[AR1-Serial4/0/0]ppp chap password cipher abc.123   //用户认证CHAP的密码为abc.123

AR2

[AR2-Serial4/0/0]ppp authentication-mode chap
[AR2-Serial4/0/0]ppp chap user gls
[AR2-Serial4/0/0]ppp chap password cipher abc.123

AR1的Serial的4/0/0口抓包认证

CHAP的认证相比PAP是加密传输密码的,而PAP明文传输不安全

image

配置NCP阶段动态分配地址

AR1配置

[AR1]ip pool ppp   //创建地址池,用于向PPP对端分配的地址池
[AR1-ip-pool-ppp]network 12.1.1.0 mask 30  //分发的地址为12.1.1.0/30段的
[AR1]inte Serial 4/0/0
[AR1-Serial4/0/0]remote address pool ppp  //开启向对端分配地址模式

AR2配置

[AR2-Serial4/0/0]undo ip address  //删除串口地址
[AR2-Serial4/0/0]ip address ppp-negotiate  //开启自动获取地址

在AR1的Serial 4/0/0抓包分析动态获取过程
AR2发送Configuration Request的IPCP报文时,将本接口IP设置为0.0.0.0,标识向对端请求IP
image

AR1回复Configuration Nak的IPCP报文标识对端的IP不合法,并且发送分配给对端的IP地址
image

AR2再次发送Configuration Request,包含动态获取到的IP地址,AR1接收后检测没有冲突,则回复Configuration Ack数据包
image

通信测试(AR1 ping AR2)

<AR1>ping 12.1.1.2
  PING 12.1.1.2: 56  data bytes, press CTRL_C to break
    Reply from 12.1.1.2: bytes=56 Sequence=1 ttl=255 time=30 ms
    Reply from 12.1.1.2: bytes=56 Sequence=2 ttl=255 time=20 ms
    Reply from 12.1.1.2: bytes=56 Sequence=3 ttl=255 time=20 ms
    Reply from 12.1.1.2: bytes=56 Sequence=4 ttl=255 time=20 ms

  --- 12.1.1.2 ping statistics ---
    4 packet(s) transmitted
    4 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 20/22/30 ms