大分部ISP(Internet服务提供商)在网络上使用PPPoE(Point to Point Over Ethernet,以太网上的点对点协议)来验证用户的计算机。大家在家里上网的时候会进行ADSL拨号连接,中小型公司的路由器进行ADSL连接,使用的都是PPPoE协议。今天为大家讲解一下PPPoE的基本原理、演示如何在思科路由器上配置服务器和客户端。
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。
第二阶段中的一个数据包
以下面的拓扑图来讲解cisco路由器上的ppoe服务端和客户端配置,上面的抓包也是这个拓扑图的
r5做为pppoe服务器端,r8做为pppoe客户端
要注意cisco路由器的IOS的版本
R5#sho ver
Cisco IOS Software, Linux Software (I86BI_LINUX-ADVENTERPRISEK9-M), Version 15.7(3)M2, DEVELOPMENT TEST SOFTWARE
R8#sho ver
Cisco IOS Software, Linux Software (I86BI_LINUX-ADVENTERPRISEK9-M), Version 15.7(3)M2, DEVELOPMENT TEST SOFTWARE
两台都是15.7(3)M2的版本,网上有很多都是12.4的版本,cisco路由器的配置有些不同.我是折腾了半天才发现版本不一样,配置也不一样.
R5上的配置如下:
!
username cisco password 0 cisco #ppp chap验证的用户名和密码
!
bba-group pppoe ABC #创建BBA(BroadBand Aggregation)组
virtual-template 1 #关联一个虚拟模板
!
!
interface Ethernet0/0
ip address 10.10.40.5 255.255.255.0
duplex auto
!
interface Ethernet0/3
no ip address
duplex auto
pppoe enable group ABC #物理接口开启pppoe
!
interface Virtual-Template1 #创建虚拟模板
mtu 1492 #配置接口中的mtu
ip address 172.16.1.2 255.255.255.0 #配置ip
peer default ip address pool cisco #使用本地地址池为客户端分配ip地址
ppp authentication chap #配置ppp封装
!
ip local pool cisco 172.16.1.10 172.16.10.100 #创建本地地址池
!
R8上的配置
!
interface Ethernet0/3
no ip address
duplex auto
pppoe enable group global #开启pppoe
pppoe-client dial-pool-number 1 #将物理端口与虚拟拨号端口进行关联
!
interface Dialer0 #创建拨号接口
mtu 1492 #配置mtu
ip address negotiated #ip地址采用ppp协商方式获得
encapsulation ppp #配置ppp封装
ip tcp adjust-mss 1450 #通过调整tcp三次握手期间的mss值来防止丢弃tcp会话
dialer pool 1 #配置拨号池
dialer-group 1 #配置拨号组
ppp chap hostname cisco #当采用chap验证时发送的用户名
ppp chap password 0 cisco #当采用chap验证时发送的密码
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
ip route 0.0.0.0 0.0.0.0 Dialer0 #配置默认路由,拨号接口为出接口
查看所有的pppoe会话
R8#show pppoe session all
Total PPPoE sessions 1
session id: 2
local MAC address: aabb.cc00.8030, remote MAC address: aabb.cc00.5030
virtual access interface: Vi2, outgoing interface: Et0/3
VLAN Priority: 0
6363 packets sent, 0 received
91444 bytes sent, 0 received
R5#show pppoe sess
R5#show pppoe session all
Total PPPoE sessions 1
session id: 2
local MAC address: aabb.cc00.5030, remote MAC address: aabb.cc00.8030
virtual access interface: Vi1.1, outgoing interface: Et0/3
12344 packets sent, 12343 received
172820 bytes sent, 172811 received
可以看到pppoe服务端和客户端的会话信息,包括会话id,本地和远程mac地址.虚拟访问接口中.路由器自己的出接口,以及发送和接收数据包的个数和字节数.
查看路由信息
R8#show ip route
Gateway of last resort is 0.0.0.0 to network 0.0.0.0
S* 0.0.0.0/0 is directly connected, Dialer0
172.16.0.0/32 is subnetted, 2 subnets
C 172.16.1.2 is directly connected, Dialer0 #接口ppp封装的特性,对方接口的地址会在本地路由表中生成主机路由
C 172.16.1.11 is directly connected, Dialer0 #该条路由是通过ppp 的ipcp协商从R5的本地地址池分配来的
R5#show ip route
Gateway of last resort is 10.10.40.1 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 10.10.40.1
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.10.40.0/24 is directly connected, Ethernet0/0
L 10.10.40.5/32 is directly connected, Ethernet0/0
172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
C 172.16.1.0/24 is directly connected, Virtual-Access1.1
L 172.16.1.2/32 is directly connected, Virtual-Access1.1
C 172.16.1.11/32 is directly connected, Virtual-Access1.1 #分配给R8 拨号接口的地址,由于链路是ppp封装,所以本地路由表中会出现此主机路由
查看拨号接口信息
R8#show ip int brief
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 unassigned YES unset administratively down down
Ethernet0/1 unassigned YES unset administratively down down
Ethernet0/2 unassigned YES unset administratively down down
Ethernet0/3 unassigned YES manual up up
Dialer0 172.16.1.11 YES IPCP up up
Virtual-Access1 unassigned YES unset up up
Virtual-Access2 unassigned YES unset up up
#拨号接口dialer0的ip地址是通过ppp的ipcp协商获得的