路由器经常用于构建广域网,广域网链路的封装和以太网上的封装有着非常大的差别。常见的广域网封装有HDLC,PPP和Frame-relay等,本章介绍HDLC和PPP。相对而言,PPP比HDLC有较多的功能。
1 HDLC和PPP简介
1.1 HDLC介绍
HDCL是点到点串行线路上(同点电路)的帧封装格式,其帧格式和以太网帧格式有很大的差别,HDLC帧没有源MAC地址和目的MAC地址。Cisco公司对HDLC进行了专有化,Cisco的HDLC封装和标准的HDLC不兼容。如果链路的两端都是Cisco设备,如果HDLC封装没有问题,但如果Cisco设备与非Cisco设备进行连接,应使用PPP协议。HDLC不能提供验证,缺少了对链路的安全保护。默认时,Cisco路由器的串口是采用Cisco HDLC封装的。如果串口的封装不是HDLC,要把封装改为HDLC,使用”encapsulation hdlc”命令。
1.2 PPP介绍
1.概述
和HDLC一样,PPP也是串行线路上(同步电路或异步电路)的一种帧封装格式,但是PPP可以提供对多种网络层协议的支持。PPP支持认证、多链路捆绑、回拨和压缩等功能。PPP经过4 个过程在一个点到点的链路上建立通信连接:
- 链路的建立和配置协调——通信的发起方发送LCP帧来配置和检测数据链路;
- 链路质量检测——在链路已经建立、协调之后进行,这一阶段是可选的;
- 网络层协议配置协调——通信的发起方发送NCP帧以选择并配置网络层协议;
- 关闭链路——通信链路将一直保持到LCP或NCP帧关闭链路或发生一些外部事件。
2.PPP认证:PAP和CHAP
(1)PAP(Password Authentication Protocol)利用2次握手的简单方法进行认证。在PPP链路建立完毕后,源节点不停地在链路上发送用户名和密码,直到验证通过。在PAP的验证中,密码在链路上是以明文传输的,而且由于是源节点控制验证重试频率和次数,PAP不能防范再生攻击和重复的尝试攻击。
(2)CHAP——询问握手验证协议
CHAP(Challenge Handshake Authentication Protocol)利用3次握手周期地验证源端节点的身份。CHAP验证过程在链路建立之后进行,而且在以后的任何时候都可以再次进行。这使得链路更为安全;CHAP不允许连接发起方在没有收到询问消息的情况下进行验证尝试。CHAP每次使用不同的询问消息,每个消息都是不可预测的唯一的值,CHAP不直接传送密码,只传送一个不可预测的询问消息,以及该询问消息与密码经过MD5加密运算后的加密值。所以CHAP可以防止再生攻击,CHAP的安全性比PAP要高。
2 实验1:HDLC和PPP封装
1.实验目的
通过本实验,读者可以掌握如下技能:
- 串行链路上的封装概念;
- HDLC封装;
- PPP封装。
2.实验拓扑
实验拓扑图如图7-1所示。
图7-1 实验1~实验3拓扑图
(注意:在两个路由器上分别连接两台机器,并配上IP地址,用于测试)
3.实验步骤
(1)步骤1:在路由器R1和R2上配置IP地址,保证直接链路的连通性
R1(config)#int s0/0/0
R1(config-if)#ip address 192.168.12.1 255.255.255.0
R1(config-if)#no shutdown
R2(config)#int s0/0/0
R2(config-if)#clock rate 128000
R2(config-if)#ip address 192.168.12.2 255.255.255.0
R2(config-if)#no shutdown
R1#show interfaces s0/0/0
Serial0/0/0 is up, line protocol is up
Hardware is GT96K Serial
Internet address is 192.168.12.1/24
MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation HDLC, crc 16, loopback not set //该接口的默认封装为HDLC封装
(此处省略)
(2)步骤2:改变串行链路两端的接口封装为PPP封装
R1(config)#int s0/0/0
R1(config-if)#encapsulation ppp
R2(config)#int s0/0/0
R2(config-if)#encapsulation ppp
R1#show int s0/0/0
Serial0/0/0 is up, line protocol is up
Hardware is GT96K Serial
Internet address is 192.168.12.1/24
MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation PPP, LCP Open //该接口的封装为PPP封装
Open; CDPCP, IPCP, crc 16, loopback not set //网络层支持IP和CDP协议
(此处省略)
4.实验调试
(1)测试R1和R2之间串行链路的连通性
R1#ping 192.168.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds;
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/13/16 ms
如果链路的两端封装相同,则ping测试应该正常。
(注意学习使用扩展的ping命令)
(2)链路两端封装不同协议
R1(config)#int s0/0/0
R1(config-if)#encapsulation ppp
R2(config)#int s0/0/0
R2(config-if)#encapsulation hdlc
R1#show int s0/0/0
Serial0/0/0 is up, line protocol is down
(此处省略)
//两端封装不匹配,导致链路故障
【提示】
当显示串行接口时,常见以下几种状态。
Serial0/0/0 is up, line protocol is up
//链路正常
Serial0/0/0 is administratively down, line protocol is down
//没有打开该,执行”no shutdown”可以打开接口
Serial0/0/0 is up, line protocol is down
//物理层正常,数据链路层有问题,通常是没有配置时钟、两端封装不匹配或PPP认证错误
Serial0/0/0 is down, line protocol is down
//物理层故障,通常是连线问题
3 实验2:PAP认证
1.实验目的
通过本实验,读者可以掌握PAP认证的配置方法这项技能。
2.实验拓扑
如图7-1所示。
图7-1 实验1~实验3拓扑图
3.实验步骤
在实验1基础上继续本实验。首先配置路由器R1(远程路由器,被认证方)在路由器R2(中心路由器,认证方)取得验证:
①两端路由器上的串口采用PPP封装,用”encapsulation”命令:
R1(config)#int s0/0/0
R1(config-if)#encapsulation ppp
②在过程路由器R1上,配置在中心路由器上登录的用户名和密码,使用”ppp pap sent-username 用户名 password 密码”命令:
R1(config-if)#ppp pap sent-username R1 password 123456
③在中心路由器上的路口采用PPP封装,用”encapsulation”命令:
R2(config)#int s0/0/0
R2(config-if)#encapsulation ppp
④在中心路由器上,配置PAP验证,使用”ppp authentication pap”命令:
R2(config-if)#ppp authentication pap
⑤中心路由器上为远程路由器设置用户名和密码,使用”username 用户名 password 密码”命令:
R2(config-if)#username R1 password 123456
以上的步骤只是配置了R1(远程路由器)在R2(中心路由器)取得验证,即单向验证。然而,在实际应用中,通常采用双向验证,即R2要验证R1,而R1也要验证R2.我们要采用类似的步骤配置R1,对R2进行验证,这时R1为中心路由器,R2为远程路由器。
⑥在中心路由器R1上,配置PAP验证,使用”ppp authentication pap”命令:
R1(config-if)#ppp authentication pap
⑦在中心路由器R1上为远程路由器R2设置用户名和密码,使用”username 用户名 password 密码”命令:
R1(config-if)#username R2 password 654321
⑧在远程路由器R2上,配置以什么用户名和密码在远程路由器上登录,使用”ppp pap sent-username 用户名 password 密码”命令:
R2(config-if)#ppp pap sent-username R2 password 654321
【提示】
在ISDN拨号上网时,却通常只是电信运营商对用户进行验证(要根据用户名来收费),用户不能对电信进行验证,即验证是单向的。
4.实验调试
使用”debug ppp authentication”命令可以查看PPP认证过程
R1#debug ppp authentication
PPP authentication debugging is on
//以上打开PPP认证调试
R1(config)#int s0/0/0
R1(config-if)#shutdown
R1(config-if)#no shutdown
//由于PAP认证是在链路建立后进行一次,把接口关闭重新打开以便观察认证过程
*Feb 22 12;18;20.355; %LINK-3-UPDOWN; Interface Serial0/0/0, changed state to up
*Feb 22 12;18;20.355; Se0/0/0 PPP; Using default call direction
*Feb 22 12;18;20.355; Se0/0/0 PPP; Treating connection as a dedicated line
*Feb 22 12;18;20.355; Se0/0/0 PPP; Session handel[C0000006] Session id [15]
*Feb 22 12;18;20.355; Se0/0/0 PPP; Authorization required
*Feb 22 12;18;20.359; Se0/0/0 PAP; Using hostname from interface PAP
*Feb 22 12;18;20.359; Se0/0/0 PAP; Using password from interface PAP
*Feb 22 12;18;20.359; Se0/0/0 PAP; O AUTH-REQ id 13 len 14 from “R1”
*Feb 22 12;18;20.363; Se0/0/0 PAP; I AUTH-REQ id 2 len 14 from “R2”
*Feb 22 12;18;20.363; Se0/0/0 PAP; Authenticating peer R2
*Feb 22 12;18;20.363; Se0/0/0 PPP; Sent PAP LOGIN Request
*Feb 22 12;18;20.363; Se0/0/0 PPP; Received LOGIN Response PASS
*Feb 22 12;18;20.363; Se0/0/0 PPP; Sent LCP AUTHOR Request
*Feb 22 12;18;20.363; Se0/0/0 PPP; Sent IPCP AUTHOR Request
*Feb 22 12;18;20.363; Se0/0/0 LCP; Received AAA AUTHOR Response PASS
*Feb 22 12;18;20.363; Se0/0/0 IPCP; Received AAA AUTHOR Response PASS
*Feb 22 12;18;20.363; Se0/0/0 PAP; O AUTH-ACK id 2 len 5
*Feb 22 12;18;20.363; Se0/0/0 PAP; I AUTH-ACK id 13 len 5
*Feb 22 12;18;20.363; Se0/0/0 PPP; Sent CDPCP AUTHOR Request
*Feb 22 12;18;20.363; Se0/0/0 CDPCP; Received AAA AUTHOR Response PASS
*Feb 22 12;18;20.363; Se0/0/0 PPP; Sent IPCP AUTHOR Request
*Feb 22 12;18;20.363; %LINEPROTO-5-UPDOWN; Line protocol on Interface Serial0/0,
changed state to up
//以上是认证成功的例子
*Feb 22 12;22;0391; Se0/0/0 PPP; Authorization required
*Feb 22 12;22;09.411; Se0/0/0 PAP; Using hostname from interface PAP
*Feb 22 12;22;09.411; Se0/0/0 PAP; Using password from interface PAP
*Feb 22 12;22;09.411; Se0/0/0 PAP; O AUTH-REQ id 15 len 14 from “R1”
*Feb 22 12;22;09.411; Se0/0/0 PAP; I AUTH-REQ id 4 len 14 from “R2”
*Feb 22 12;22;09.411; Se0/0/0 PAP; Authenticating peer R2
*Feb 22 12;22;09.411; Se0/0/0 PPP; Sent PAP LOGIN Request
*Feb 22 12;22;09.415; Se0/0/0 PPP; Received LOGIN Response FAIL
*Feb 22 12;22;09.415; O AUTH-NAK id 4 len 26 msg is “Authentication failed”
//以上是认证失败的例子,如密码错误等
4实验3: CHAP认证
1.实验目的
通过本实验,读者可以掌握CHAP认证的配置方法这项技能。
2.实验拓扑
如图7-1所示。
图7-1 实验1~实验3拓扑图
3.实验步骤
在实验1基础上继续本实验
①使用”username 用户名 password 密码”命令为对方配置用户名和密码,需要注意的是双方的密码要相同:
R1(config)#username R2 password hello
R2(config)#username R1 password hello
②路由器的两端串口采用PPP封装,并采用配置CHAP验证:
R1(config)#int s0/0/0
R1(config-if)#encapsulation ppp
R1(config-if)#ppp authentication chap
R2(config)#int s0/0/0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp authentication chap
上面是CHAP验证的最简单配置,也是实际应用中最常用的配置方式。在配置时,要求用户为对方路由器,而双方密码必须一致。原因是:由于CHAP默认使用本地路由器的名字作为建立PPP连接时的标识符,路由器在收到对方发送过来的询问消息后,将本地路由器的名字作为身份标识发送给对方;而在收到对方发过来的身份标识之后,默认使用本地验证方法,即在配置文件中寻找,看看有没有用户身份标识和密码;如果,计算加密值,结果正确则验证通过;否则验证失败,连接无法建立。
【提示】在配置验证时也可以选择同时使用PAP和CHAP如:
R2(config-if)#ppp authentication chap pap或
R2(config-if)#ppp authentication pap chap
如果同时使用两种验证方式,那么在链路协商阶段将先用第一种验证方式进行验证;如果对方建议使用第二种验证方式或者只是简单拒绝使用第一种方式,那将采用第二种方式。
5 HDLC、PPP命令汇总
表7-1 本章命令汇总
命令 |
作用 |
encapsulation hdlc |
把接口的封装改为HDLC |
encapsulation PPP |
把接口的封装改为PPP |
ppp pap sent-username R1 password 123456 |
PAP认证时,向对方发送用户名R1和密码123456 |
PPP authentication pap |
PPP的认证方式为PAP |
user R1 password 123456 |
为对方创建用户R1,密码为123456 |
debug ppp authentication |
打开PPP的认证调试过程 |
ppp authentication chap |
PPP的认证方式为CHAP |
转载自原文链接, 如需删除请联系管理员。
原文链接:HDLC和PPP协议的配置,转载请注明来源!