Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2433
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 12
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-15 23:59
文章分类
文章存档

2014年(1)

我的朋友
最近访客

分类: 系统运维

2014-09-07 13:46:23

原文地址:学习笔记:PPP协议 作者:bloodmanminmin

PPP协议相关(point to point protocol)

 
HDLC:同步链路上封装,每个厂商的HDLC都是私有,不兼容。HDLC用于租用线路的点到点连接,cisco路由器同步串行链路默认封装协议
cisco的hdlc和标准hdlc帧格式
HDLC缺点
  • 只支持点到点,不支持点到多点;
  • 不支持IP地址协商;
  • 只能封装在同步链路上,如果是同异步串口的话,只有当同异步串口工作在同步模式下才能使用;
PPP
 
PPP可以使用在异步串行连接比如拨号或者同步串行连接比如ISDN,PPP优点:
  • 支持同步、异步串行链路
  • 支持多种网络层协议
  • 支持各种连接参数的协商
  • 支持错误检测
  • 允许进行数据压缩
PPP协议栈:
使用LCP建立和保持连接-建立、配置、维护和结束点到点的连接的方法。
LCP提供不同的PPP封装选项(协商选项):
 
  • MRU:最大接收单元。通知对端节点,本端所能接受的PPP数据帧信息域的最大值。通常情况路由器接受到MRU协商后会根据MRU大小修改MTU值。
  • 验证:使用pap和chap;
  • 压缩:增加连接吞吐量,在接收方解压缩;
  • 错误检测:使用Quality和Magicnumber来保证数据可靠性;
  • 多链路捆绑:增加带宽
  • PPP回叫信号:客户端验证成功后,远端终止连接,然后重新初始化连接。
 
NCP配置上层网络层协议-建立、配置不同网络层协议的方法。可以同时使用多种网络层协议。(NCP包括IPCP和IPXCP等,但实际中最常用的是IPCP。
IPCP协商的参数有:
  • IP地址

如果是静态协商就是不进行协商,手动配置,只是对IP地址进行确认。双方在PPP协商前唯一做得就是将自己的IP地址发送给对方,对方收到后会回应一个确认报文,同时在自己的路由表中增加一条指向对端的静态路由。动态协商是一端不配IP地址,而由另一端在进行IPCP协商过程中分配一个IP地址。

在接口上使用(config-if)#IP address negotiated后,原来配置的IP将失效。分配IP方配置

(config-if)#peer default ip address XXX.XXX.XXX.XXX 

NCP会添加一个对方接口地址的直连路由/32,所以采用ppp封装2边接口地址可以不在同一网段。一般说路由器直连的2个接口要在一个网段,如果不在同一网段也可以,不过要手工添加一条静态路由,不写下一跳,直接写直连的本地接口也可以ping通对方,只是PPP的NCP会自动做这个事情。

HDLC是2层链路直连的2个路由器必须在同一网段,否则需要手动指定路由(缺少PPP的NCP过程)

PPP的NCP会自动向双方路由表添加对方路由,不过只会添加32位掩码的路由,而不是对方网段的路由。配置后,路由器会自动认为对方IP直连在自己的串口上。所以PPP直连的不需要配置在同一网段

比如2路由器直接通过s0/0直连,先都采取默认的HDLC封装,分别配上IP

RA#sh ip int bri s0/0
Interface                  IP-Address      OK? Method Status                Protocol
Serial0/0                  1.1.1.1         YES manual up                    up

RB#sh ip int bri s0/0
Interface                  IP-Address      OK? Method Status                Protocol
Serial0/0                  2.2.2.2         YES manual up                    up   

默认是ping不通的,我们手动在RA和RB上添加静态路由:

RA#p 2.2.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
...
Success rate is 0 percent (0/3)

RA(config)#ip route 2.0.0.0 255.0.0.0 s0/0 #指定本地出口

RB(config)#ip route 1.0.0.0 255.0.0.0 s0/0 #指定本地出口

RA#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    1.0.0.0/8 is directly connected, Serial0/0
S    2.0.0.0/8 is directly connected, Serial0/0
RA#p 2.2.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/49/136 ms

下面来看看PPP情况,将2个端口配置都删掉(静态路由也NO掉),再配置接口地址(地址还是上面的地址),采用ppp封装:

RA(config)#default int s0/0

RA(config)#no ip route 2.0.0.0 255.0.0.0 s0/0
RA(config)#int s0/0
RA(config-if)#ip add 1.1.1.1 255.0.0.0
RA(config-if)#encao
RA(config-if)#encapsulation ppp
RA(config-if)#no shu

RB做一样的设置,只是IP是2.2.2.2 255.0.0.0

端口双UP以后查看路由表发现自动添加了2.0.0.0/32的路由,认为2.2.2.2是自己直连的

RA#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    1.0.0.0/8 is directly connected, Serial0/0
     2.0.0.0/32 is subnetted, 1 subnets
C       2.2.2.2 is directly connected, Serial0/0

  • TCP头压缩
 
PPP连接的阶段:
1、连接建立阶段:每个设备发送LCP包来配置和测试链路;
2、认证阶段:如果配置了认证,在认证链路时可以使用chap或者pap,认证发生在读取网络层协议信息之前;
3、网络层协议配置阶段:网络层数据包进行交换前,LCP协调和配置参数。LCP可以容许有一个可选的链路质量检测来检测链路是否满足网络层协议需求,这个阶段是可选的,完成链路质量检测后,网络层协议通过NPC进行单独配置。首先要LCP OPEN以后NCP才能进行协商。
 
 
PPP的认证方法:
1、PAP(password authentication protocol):使用密文发送密码,PAP只在初始化连接的时候执行
配置 一次认证,2次握手。被认证方主动发起连接
RA(认证方)
RA(config-if)#encap ppp
RA(config-if)#ppp authentication pap
RA(config-if)#exit
RA(config)#username test password test
RA(config)#int s0/0
RA(config-if)#ip add 1.1.1.1 255.0.0.0
RA(config-if)#no shu
 
RB(被认证方)
RB(config-if)#encap ppp
RB(config-if)#ppp pap sent-username test passw test
RB(config-if)#ip add 2.2.2.2 255.0.0.0
RB(config-if)#no shu
这里做的是单向认证,当然可以做双向认证,如果做双向就在RA上做sent-username,在R2上建一个username就可以了
2、CHAP(challenge Handshark Authentication protocol):周期性检查以保证对方没有被替换或者改变,初始化连接完成后,本地发送一个挑战请求给远端,远端发送回一个MD5加密的信息,如果信息部匹配连接终止。 一次认证,3次握手。认证方主动发起挑战

CHAP也可以做单向或者双向的认证,单向认证配置

RA(config-if)#enca ppp            RB(config-if)#encap pp

RA(config-if)#ppp authen chap     RB(config-if)#ip add 2.2.2.2 255.0.0.0

RA(config-if)#ip add 1.1.1.1 255.0.0.0   RB(config-if)#no shu

RA(config-if)#no shu

RA(config)#username RB pass test  RB(config)#username RA pass test

                                  RB(config)#no username RA pass test

                                  RB(config-if)#ppp chap password test

 

其中RB作为被认证方,最后一句配置可以使用下面2句来替代。

单向认证ppp chap password的密码有效,但优先会使用username配置的密码,如果username的密码错误而chap password的密码正确也不能认证成功,只能no username以后才会使用chap password的密码,在双向认证中chap password无效。

双向认证只需在RB上启用ppp authentication chap就可以了。
还有一个参数ppp chap hostname 用来代替发送默认的主机名。
 
PPP multilink(多链路捆绑)
 
可以将多个串口链路捆绑成一个逻辑链路,增加带宽。类似于Etherchannel。
R0的s0/0-----R1的s0/0
R0的s0/1-----R1的s0/1
R0的s0/2-----R1的s0/2
 
RA(config)#
RA(config)#int s0/0
RA(config-if)#encap ppp
RA(config-if)#ppp multilink group 10
RA(config-if)#no shu
RA(config-if)#
*Mar  1 00:06:51.579: %LINK-3-UPDOWN: Interface Serial0/0, changed state to up
RA(config-if)#int s0/1
RA(config-if)#encap ppp
RA(config-if)#ppp multi gr 10
RA(config-if)#no shu
RA(config-if)#int s0/2
RA(config-if)#e
*Mar  1 00:07:17.387: %LINK-3-UPDOWN: Interface Serial0/1, changed state to upnc 
RA(config-if)#encap ppp
RA(config-if)#ppp multi gro 10
RA(config-if)#no shu
RA(config)#int multi 10 #定义虚接口 multilink,后面跟的数字代表所属的multilink group
RA(config-if)#ip add 192.168.1.1 255.255.255.0
 
 
右边那台相应的配置,就multilink的ip不一样,2边的虚接口的编号可以不一样。但对应的物理接口必须要非配到正确的multilink group
 
那么如果做ppp的认证呢?在哪个端口上做呢?直接在multilink上做就行了(双向认证)
RA(config)#user RB pass test
RA(config)#int multi 10
RA(config-if)#ppp authentication chap
 
RB(config)#username RA pass test
RB(config)#int multi 10
RB(config-if)#ppp authentication chap
阅读(389) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~