
1. 从一次“神秘”的通信故障说起最近在帮一个朋友排查他们内部网络两个站点间专线不通的问题现象很典型物理链路显示是通的但就是ping不通对端。登录路由器一看接口协议状态始终是“down”配置了IP地址也没用。这种场景但凡有点经验的网络工程师脑子里第一个蹦出来的词很可能就是“PPP”以及它的认证。没错在很多广域网专线场景尤其是早期的帧中继、HDLC向IP化过渡以及现在一些运营商提供的二层专线如MSTP接入中PPPPoint-to-Point Protocol协议依然是数据链路层的常客。而为了确保链路安全避免未经授权的设备接入CHAPChallenge Handshake Authentication Protocol认证几乎是标配。这让我想起很多网络初学者在eNSPEnterprise Network Simulation Platform上做实验时的一个共同感受看理论觉得PPP和CHAP挺简单不就是两端配个用户名密码嘛。但真上手配置总会遇到各种“灵异事件”比如认证明明配了却不通或者通了但感觉稀里糊涂。其实PPP链路建立是一个有状态的、多阶段的协商过程CHAP认证只是其中一个环节而且这个环节里藏着不少细节。今天我们就以eNSP为实验环境彻底把PPP链路和CHAP验证的“里子”和“面子”都扒清楚。我会带你从零搭建一个实验不仅把配置命令敲对更要弄明白每条命令背后的逻辑以及那些eNSP模拟器和真实设备上可能遇到的“坑”。2. PPP协议不仅仅是“点对点”那么简单在直接动手敲命令之前我们有必要花点时间理解PPP到底是什么以及它为什么要设计得比简单的HDLC更复杂。如果你觉得协议理论枯燥可以把它想象成两个人打电话建立通话的过程这个过程和PPP链路建立惊人地相似。2.1 PPP的三层“握手”与状态机PPP链路建立不是一个瞬间动作而是一个标准化的、分阶段的状态转换过程。它主要包含三个协商阶段我们可以用打电话来类比链路建立阶段Link Establishment Phase类比你拿起电话听到拨号音然后输入对方的电话号码并按下呼叫键。这个阶段你的电话交换机正在尝试与对方交换机建立一条物理和逻辑上的连接通道。协议这个阶段使用LCPLink Control Protocol数据包。双方设备会发送LCP配置请求帧协商一些基本的链路参数比如最大接收单元MRU、是否进行认证、以及使用哪种认证协议PAP或CHAP等。只有LCP协商成功链路才会进入下一个阶段。这就好比电话拨通了对方振铃。认证阶段Authentication Phase类比电话接通了对方拿起听筒说“喂”。但你还不确定接电话的是不是你要找的人。于是你可能会问“是张三吗请说出我们的暗号。” 这就是一个认证过程。协议这是一个可选但强烈推荐的阶段。如果LCP协商时双方同意进行认证就会进入此阶段。常用的就是PAP或CHAP。CHAP的优势在于它不会在链路上直接传输密码而是通过挑战-应答机制避免了密码被窃听的风险。认证成功通话对象身份确认认证失败链路直接断开对方挂断电话。网络层协议阶段Network Layer Protocol Phase类比身份确认无误后你们才开始真正的谈话内容。比如你们约定接下来都用中文相当于IP协议交流并且讨论一下见面地点相当于交换路由信息。协议这个阶段使用NCPNetwork Control Protocol。对于IP网络使用的是IPCPIP Control Protocol。在这个阶段双方会协商网络层参数最核心的就是互相为对方分配IP地址或者确认自己使用的IP地址。只有IPCP协商成功接口上才会出现我们熟悉的IP地址协议状态才会变为“up”此时才能开始传输IP数据包。理解这个状态机至关重要。很多人在eNSP里配完IP地址发现接口还是“down”根本原因就是链路还卡在前面的阶段通常是LCP或认证阶段根本没进入到IPCP协商这一步。你可以通过display interface serial X/X/X命令查看接口的LCP和IPCP状态来定位问题。2.2 为什么在eNSP里常用Serial接口你可能会注意到在eNSP的路由器上我们通常用Serial接口来模拟广域网链路而不是Ethernet接口。这背后有历史和模拟两方面的原因历史原因Serial接口串行接口是早期广域网技术的典型代表如T1/E1、帧中继等它们天然适合运行PPP、HDLC等协议。以太网Ethernet最初是为局域网设计的。模拟原因eNSP作为模拟器需要一种方式来模拟一条独占的、点对点的链路。在两个路由器的Serial接口之间拉一条线正好完美模拟了运营商提供的一根专线。虽然现实中也存在以太网专线运行PPP over Ethernet简称PPPoE但在基础实验里用Serial接口来学习PPP核心概念更加直观。注意在eNSP中连接Serial接口时需要区分DCE数据通信设备和DTE数据终端设备端。通常运营商侧设备是DCE用户侧设备是DTE。DCE端需要配置时钟频率clock rate来提供同步时钟信号否则链路物理层无法up。在eNSP中你可以通过线缆的图标来判断或者在一端配置clock rate 64000例如来充当DCE角色。这是实验中最容易忽略的第一步导致接口物理状态始终是“down”。3. 实验环境搭建与基础配置理论铺垫得差不多了我们开始动手。为了保证实验的清晰度我们搭建一个最简单的拓扑两台华为AR系列路由器例如AR2220通过Serial接口背对背连接。实验拓扑[AR1] Serial 1/0/0 ---- Serial 1/0/0 [AR2]实验目标在AR1和AR2之间建立PPP链路。配置CHAP双向认证确保链路安全。通过IPCP协商使两端接口获得IP地址并互通。3.1 第一步连接设备与物理层检查首先在eNSP中拖出两台AR路由器选择带有Serial接口的型号。然后从侧边栏选择“串口线”通常图标是闪电状带一个时钟符号进行连接。连接后先不启动设备。右键点击AR1的Serial1/0/0接口选择“设置”。我们需要手动指定一端为DCE并配置时钟。在“链路层”或“物理层”设置中将“端口类型”改为DCE并设置一个时钟频率比如64000单位是bps。AR2的接口保持默认的DTE即可。这个操作模拟了运营商在DCE端提供时钟。启动两台设备。等待系统初始化完成后首先检查物理层状态。# 在AR1上执行 AR1 display interface serial 1/0/0查看输出关注Physical状态。如果显示UP说明物理链路包括时钟没问题。如果显示DOWN请检查线缆是否连接正确DCE端时钟是否配置在AR1上配置clock rate 64000接口是否被管理员关闭shutdown使用undo shutdown开启。3.2 第二步配置PPP链路层与CHAP认证物理链路通了现在开始配置数据链路层协议和认证。这里有一个关键顺序先配置PPP和CHAP再配置IP地址。因为IP地址是在IPCP阶段NCP阶段才协商或配置的。在AR1上的配置system-view sysname AR1 # 进入Serial接口 interface serial 1/0/0 # 将链路层协议从默认的HDLC改为PPP link-protocol ppp # 启用PPP的CHAP认证。ppp authentication-mode chap 表示本接口要求对端进行CHAP认证。 ppp authentication-mode chap # 配置CHAP认证的用户名和密码。这里的用户名是发送给对端AR2用于认证本端的身份。 # 格式是ppp chap user username # ppp chap password [ cipher | simple ] password # 我们使用simple明文密码实验环境生产环境务必用cipher加密。 ppp chap user AR1 ppp chap password simple Huawei123 # 注意此时先不要配置IP地址在AR2上的配置system-view sysname AR2 interface serial 1/0/0 link-protocol ppp ppp authentication-mode chap # AR2认证AR1时使用的用户名必须是AR1上配置的 ppp chap user 后面的名字即“AR1”。 # 密码也必须与AR1上配置的 ppp chap password 后的密码一致即“Huawei123”。 ppp chap user AR2 ppp chap password simple Huawei123配置要点解析ppp authentication-mode chap这是一个“要求”表示“我这个接口需要对方用CHAP方式来认证我”。所以两端都需要配置此命令实现双向认证。如果只在一端配就是单向认证。ppp chap user这个用户名是本端告诉对端“我叫什么名字”。在CHAP验证过程中这个用户名会被放在应答报文里发送给对端。ppp chap password这个密码是本端用于计算应答消息摘要的密钥。对端会用它配置的用户名即本端的ppp chap user和这个密码来计算一个值与本端发送的摘要进行比对。对应关系是认证的关键当AR1要认证AR2时AR1会查找本地配置的“用户名”即AR2的ppp chap user值AR2对应的密码即AR2的ppp chap password值Huawei123并用它们来验证AR2发来的应答。反之亦然。因此两端的(user, password)组合必须是交叉匹配的。配置完成后使用display interface serial 1/0/0查看接口状态。此时你应该能看到LCP状态是opened这表示链路层协议协商成功。但IPCP状态可能还是initial因为还没配IP。4. CHAP认证过程深度拆解与排错配置看似简单但为什么有时候就是不通呢我们深入到CHAP的报文交互过程中看看问题可能出在哪。4.1 CHAP的三次握手报文流CHAP认证发生在PPP链路建立之后。其过程是一个典型的三次握手挑战Challenge认证方例如AR1向被认证方例如AR2发送一个“挑战”报文。这个报文包含一个随机生成的“挑战字”Challenge Value和一个本端生成的标识符ID。应答Response被认证方AR2收到挑战后将“挑战字”、标识符ID和自己配置的密码ppp chap password一起通过MD5哈希算法计算出一个“应答值”Response Value。然后它将自己的用户名ppp chap user和这个应答值一起封装成“应答”报文发回给认证方AR1。成功/失败Success/Failure认证方AR1收到应答报文后取出其中的用户名这里是AR2。然后它根据这个用户名在本地查找为该用户名配置的密码注意是AR1本地为AR2这个用户配置的密码。用找到的密码、之前发送的“挑战字”和标识符ID同样进行MD5计算得到一个值。将这个值与应答报文中的“应答值”进行比较。如果一致则发送“成功”报文如果不一致则发送“失败”报文链路会被终止。这个过程的核心秘密在于密码本身从未在链路上传输过传输的只是用户名、挑战字和用密码计算出的哈希值。这大大提升了安全性。4.2 常见配置错误与排查命令理解了过程排查就有的放矢了。最常见的错误就是密码不匹配。根据上面的流程密码不匹配有两种情况本地密码配置错误AR2在计算应答时用的是自己本地配置的密码。如果这个密码配错了算出来的哈希值肯定不对。对端为用户名存储的密码错误AR1在验证时是根据收到的用户名AR2去本地找对应的密码。如果AR1本地为AR2这个用户配置的密码通常是通过local-user命令但在简单的接口CHAP配置中就是ppp chap password吗这里有个关键点不对那么计算出的哈希值也会不匹配。等等这里引出了一个关键问题在刚才的接口配置方式 (ppp chap user/password) 下认证方AR1的密码库在哪里它怎么知道用户AR2的密码是Huawei123这就是eNSP和真实设备中一个容易混淆的点在简单的接口CHAP配置中认证方默认使用ppp chap password命令设置的密码作为验证所有对端的密码也就是说在这种配置下AR1并不区分对端是AR2还是其他路由器它都用同一个密码去计算和验证。这就要求双向认证时两端的ppp chap password必须设置成相同的值让我们修正一下理解AR1:ppp chap user AR1ppp chap password simple Huawei123AR2:ppp chap user AR2ppp chap password simple Huawei123当AR1认证AR2时AR1用自己本地配置的密码Huawei123和收到的挑战字计算与AR2用Huawei123计算出的应答进行比对。密码相同认证通过。所以在双向认证且使用接口CHAP配置时两端的密码必须设置为相同的。如果希望不同用户有不同的密码就需要使用更复杂的aaa认证方案在本地创建用户数据库 (local-user)。排查命令display ppp interface serial 1/0/0查看PPP会话的详细信息包括LCP、IPCP、认证协议的状态。如果CHAP失败这里可能会有提示。debugging ppp all或debugging ppp chap开启PPP调试信息。这是最强大的排错工具。在用户视图下执行然后重启接口 (shutdown/undo shutdown) 或等待认证触发就可以在终端看到详细的CHAP报文交互过程包括挑战字、应答值、成功/失败消息。通过调试信息可以清晰地看到是挑战没发出、应答没收到还是验证失败。注意调试信息会大量刷屏可能影响设备性能。实验完成后务必用undo debugging all关闭所有调试。5. 配置IP地址与最终连通性测试CHAP认证成功后PPP链路就进入了最后的网络层协议阶段。现在我们可以配置IP地址了。在PPP中配置IP地址有两种常见方式手动配置直接给接口配置一个IP地址。这种方式要求对端也手动配置一个同一网段的IP地址。通过IPCP协商一方配置ip address ppp-negotiate另一方配置remote address或手动指定IP。这种方式更接近某些拨号或专线场景。为了简单起见我们使用手动配置。在AR1上interface serial 1/0/0 ip address 10.1.1.1 255.255.255.252在AR2上interface serial 1/0/0 ip address 10.1.1.2 255.255.255.252配置完成后稍等片刻再次使用display interface serial 1/0/0查看。现在你应该能看到Physical状态: UPProtocol状态: UP (如果还是DOWN说明LCP或认证仍有问题)在协议状态下方会显示LCP opened, IPCP opened这表明PPP的两个核心协议都协商成功了。IP地址也正常显示。现在进行最终的连通性测试# 在AR1上ping AR2 AR1 ping -c 5 10.1.1.2如果能看到Reply from 10.1.1.2的回复并且丢包率为0%那么恭喜你一个完整的、经过CHAP认证的PPP链路就成功建立了6. 进阶思考与真实场景下的“坑”实验做通了但真实网络环境往往更复杂。结合eNSP实验和真实经验这里有几个进阶思考点和常见“坑”6.1 PAP vs CHAP为什么CHAP是更好的选择我们实验用的是CHAP。其实PPP还支持另一种更简单的认证协议PAPPassword Authentication Protocol。PAP的过程是被认证方直接将自己的用户名和密码以明文形式发送给认证方。认证方核对后返回确认。安全性PAP密码明文传输极易被截获。CHAP使用挑战-应答和哈希密码永不传输且每次挑战的随机数不同防止重放攻击。在绝大多数情况下都应该使用CHAP。配置差异PAP配置命令是ppp authentication-mode pap和ppp pap local-user/password。逻辑更简单但安全性是硬伤。6.2 eNSP模拟器特有的问题从你提供的热词里可以看到很多关于eNSP本身的问题比如“错误代码40”、“启动失败”、“吃内存”等。在做PPP实验时也可能遇到一些模拟器相关的问题设备启动失败Error 40这通常与虚拟化环境VirtualBox兼容性或权限有关。确保以管理员身份运行eNSP并正确安装对应版本的VirtualBox。有时需要彻底卸载重装。接口协议无法UP除了配置错误也可能是eNSP模拟的设备镜像存在小bug。尝试更换其他型号的AR路由器如AR1220, AR2240等或者重启设备、重新连线。性能问题PPP和CHAP的调试信息 (debugging) 在eNSP中可能会加剧资源消耗如果设备卡顿及时关闭调试。6.3 从eNSP到真机配置的细微差别在eNSP上实验成功配置搬到真机如华为AR系列路由器上大概率也能用。但需要注意接口名称真实设备可能有更多类型的接口如GigabitEthernet、ATM、POS等运行PPP over Ethernet (PPPoE) 或 PPP over SONET/SDH时配置逻辑相同但接口类型和部分参数不同。AAA集成在更复杂的企业网中CHAP认证的用户名和密码通常不是直接配在接口下而是通过AAA认证、授权、计费服务器如RADIUS来集中管理。这时接口配置会指向AAA方案本地只需配置ppp authentication-mode chap用户名密码在RADIUS服务器上维护。这也是你热词中“ensp radius认证实验”涉及的内容。MTU问题PPP协议有自己的帧头会占用一些字节。因此PPP接口的MTU通常比以太网接口的1500要小通常是1492。如果网络中有大量大数据包传输可能需要关注MTU协商和分片问题否则可能导致某些应用异常。搞懂了PPP和CHAP在eNSP上的这一套你不仅掌握了如何配置一条安全的广域网链路更重要的是理解了状态机、认证流程和排错思路。下次再遇到专线接口协议“down”的情况你就可以有条不紊地按照“物理层 - 链路层(LCP) - 认证(CHAP) - 网络层(IPCP)”的顺序去排查而不是对着配置干瞪眼了。网络技术的魅力就在于这种从原理到实践再从实践反馈加深原理理解的循环过程。