昨天有个朋友找我说他们公司的思科出口路由器PPPoE没连接成功,今天为大家讲解一下PPPoE的基本原理、演示如何在思科路由器上配置服务器和客户端,以及在Windows操作系统上配置客户端。
01
前言
大分部ISP(Internet服务提供商)在网络上使用PPPoE(Point to Point Over Ethernet,以太网上的点对点协议)来验证用户的计算机。大家在家里上网的时候会进行ADSL拨号连接,中小型公司的路由器进行ADSL连接,使用的都是PPPoE协议。
02
PPPoE概述
PPPoE是一个二层协议,用于把PPP的数据帧封装在以太网帧中。借助PPP的优势,可以很好地实现认证、会话检测、计费等,主要用于运营商及小区宽带。
03
PPPoE基本原理
PPPoE分为控制层面和数据层面,控制层面就是如何建立PPPoE会话,如何进行用户的认证,而数据层面就是我们数据包的转发。PPPoE在控制层面分为两个阶段,第一阶段是Discovery(发现)阶段,第二阶段是会话建立阶段。
第一阶段:
发现阶段的主要目的就是寻找PPPoE服务器,此时的以太网类型是0x8863.此阶段分为4个步骤:
1.客户端(PC或路由器)广播一个PPPoE Active Discovery Initiantion(PADI)报文,源MAC地址是它自己的MAC地址,目标MAC地址是全F的广播MAC地址。
2.PPPoE服务器发送一个PPPoE Active Discovery Offer报文(PADO),描述它能提供哪些服务。目标MAC是客户端的MAC地址。
3.PPPoE客户端发送一个单播PPPoE Active Discovery Request报文(PADR)给PPPoE服务器。
4.PPPoE服务器发送一个单播PPPoE Acitve Discovery Session-confirm报文(PADS)给客户端。这是一个确认报文,会话建立完成。
当发现阶段完成后,PPPoE客户端和被选择的PPPoE服务器具有用来在以太网上建立PPP连接的信息。这时候开始PPP建立过程,包括LCP和NCP过程。
第二阶段:
第二阶段是PPPoE的会话阶段,以太网类型是0x8864,这一阶段会完成PPP的建立,在建立完成中最重要的是完成认证,基本上有两种认证协议,包括PAP和CHAP。
PPPoE的报文封装:
PPPoE报文(发现阶段)
PPPoE报文(会话阶段)
接下来在进行实验:
路由器上配置PPPoE的服务器,把思科IOS的路由器做为PPPoE的服务器;
使用Win7和XP内建的客户端进行拨号连接;
使用思科路由器做为PPPoE的客户端进行拨号。
04
实验环境
Cisco Router
IOS Version:Version 12.4(15)T5
Device Type: Cisco 3660
Client:
Windows XP
Windows7
Cisco Router
以下实验均可以通过模拟器实现,在Vmware workstation上安装Windows XP和windows7操作系统,通过网卡桥接的方式与R2和R1相连。通过dynamips模拟器加载真实的36路由器的IOS来模拟思科路由器。大家只有多做实验才能更加深刻的理解和吃透技术。纸上得来终觉浅,觉知此事要躬行。
网络拓扑如下:
路由器基本配置如下:
R1(config)#int lo 0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#int f0/0
R1(config-if)#ip add 12.1.1.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#router rip
R1(config-router)#ver 2
R1(config-router)#no auto
R1(config-router)#net 1.0.0.0
R2(config)#int f0/0
R2(config-if)#ip add 12.1.1.2 255.255.255.0
R2(config-if)#no shut
R2(config-if)#int lo 0
R2(config-if)#ip add 23.1.1.2 255.255.255.0
R2(config-if)#router rip
R2(config-router)#ver 2
R2(config-router)#no auto
R2(config-router)#net 12.0.0.0
R2(config-router)#net 23.0.0.0
PPPoE Server配置:
R2(config)#int f1/0
R2(config-if)#no ip add
R2(config-if)#no shut
R2(config-if)#pppoe enable
R2(config)#ip local pool ippool 23.1.1.100 23.1.1.200
R2(config)#bba-group pppoe global
R2(config-bba-group)#virtual-template 1
R2(config-bba-group)#exit
R2(config)#int virtual-template 1
R2(config-if)#ip unnumbered loopback 0
R2(config-if)#peer default ip address pool ippool
R2(config-if)#ppp authentication pap
R2(config-if)#exit
R2(config)#username user1 password cisco
R2(config)#username user2 password cisco
Win7客户端配置:
WinXP客户端配置:
05
路由器作为客户端配置
不仅电脑可以拨号,如果家里或公司有多台电脑,就需要一台支持PPPoE客户端功能的路由器。一般的家用级别路由器设置比较简单,如tp-link等。思科属于企业级的路由器,通过命令行的方式配置相对复杂一点,以下介绍把思科路由器配置为PPPoE的客户端,并配置NAT,使内网用户可以上网。
PPPoE配置:
interface FastEthernet1/0
no ip address
pppoe enable
pppoe-client dial-pool-number 1
nterface Dialer1
ip address negotiated
ip mtu 1492
encapsulation ppp
dialer pool 1
ppp authentication pap callin
ppp pap sent-username user1 password 0 cisco
路由配置:
ip route 0.0.0.0 0.0.0.0 Dialer1
NAT配置:
interface Loopback0
ip address 3.3.3.3 255.255.255.0
ip nat inside
interface Dialer1
ip nat outside
access-list 100 permit ip 3.3.3.0 0.0.0.255 any
ip nat inside source list 100 interface Dialer1 overload
测试:
按需拨号配置
今天宽带大部分都是包月包年了,如果是按小时计费的话,可能按需拨号就更为划算,就是当有流量的时候才会拨号,没有的时候就不会拨号,能省下不少银子。以下是在路由器上按需拨号的配置:
R3(config)#interface f1/0
R3(config-if)#no pppoe-client dial-pool-number 1
R3(config-if)#pppoe-client dial-pool-number 1 dial-on-demand
R3(config)#access-list 101 permit tcp any any eq 23
R3(config)#dialer-list 1 protocol ip list 101
R3(config)#interface dialer 1
大家可以进行测试,在没有telnet流量以前,是没有拨号的,在R3上telnet一个地址,触发流量后自动进行拨号。
下面是PPPoE报文的下载地址,感兴趣的读者可以使用软件查看。
链接:https://pan.baidu.com/s/1PxPrDsYHs9_ts3ncAr0_ug 密码:ii0v
06
思科路由PPPoE拨号精简配置+命令说明
#开启虚拟拨号VPDN
r1(config)#vpdn enable
#定义组名(pppoe)
r1(config)#vpdn-group pppoe
#这里是请求拨入
r1(config-vpdn)#request-dialin
#设置拨号协议为PPPOE
r1(config-vpdn-req-in)#protocol pppoe
# 进入E0端口
r1(config)#in ethernet 0
#半双工
r1(config-if)#half-duplex
#使用PPPOE
r1(config-if)#pppoe enable
#把该物理端口加入到拨号池1中
r1(config-if)#pppoe-client dial-pool-number 1
#宽带640
r1(config-if)#bandwidth 640
# 关闭CDP协议
r1(config-if)#no cdp enable
r1(config-if)#no sh
#建立一个虚拟拨号端口
r1(config)#interface dialer 1
#宽带640
r1(config-if)#bandwidth 640
#由于局端提供动态地址
r1(config-if)#ip address negotiated
#修改MTU值适用于ADSL网络,默认为1500,我们要修改为1452
r1(config-if)#ip mtu 1492
# IP 的TCP调整
r1(config-if)#ip tcp adjust-mss 1452
#启用NAT转换,设置外网端口为外部网
r1(config-if)#ip nat outside
#使用拨号池,因为ETH0加入到拨号池,实际使用ETH0
r1(config-if)#dialer pool 1
# 拨号闲置-超时0(保持连接)
r1(config-if)#dialer idle-timeout 0
#断线了可以保持100个封包
r1(config-if)#dialer hold-queue 100
#拨号持久 (上不了网就连线)
r1(config-if)#dialer persistent
r1(config-if)#dialer-group 1
#使用PPP的帧格式
r1(config-if)#encapsulation PPP
#设置拨号的验证方式为PAP 和CHAP
r1(config-if)#PPp authentication pap chap callin
#用户帐号和密码
r1(config-if)#ppp pap sent-username bj147258 password 123456
#不走CDP
r1(config-if)#no cdp enable
# 是关闭快速交换
r1(config-if)#no ip mroute-cache
本文分享自微信公众号 - 网络技术联盟站(wljslmz)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4869160/blog/4834014