大家好!我是书记,今天我来小谈一下网络中的PPPOE技术。

        PPPOE(Point to Point Protocol over Ethernet)以太网点到点协议,简单的说,是以太网协议和PPP协议结合后所产生的协议,是在PPP协议的基础上发展而来的。因为PPP协议只能直接封装在点到点链路上,因此要在以太网上链路上封装PPP协议,必须借助于PPPOE协议。这种技术目前广泛的应用在ADSL接入方式中。
生活中的我们大多说是通过这种方式接入互联网的。Internet的发展的的确确改变了我们的日常生活,信息化走进了我们的生活当中。当我们点击“连接”的时候,我们是如何连接上去的,神秘的背后到底是什么东东?我们要知其然,还要知其所以然。
        家庭用户通过ADSL(非对称数据用户环线)拨号的方式接入的网络,还需要一个调制解调器(数模转换的工具)的配合,也就是我们通常说的“猫”(Modem),如果使用的电话线上网的话,还需要一个分离器(电话线路中的高频信号和低频信号分离)的配合,在运营提供商那里提供的设备才是今天的重点,这应该也是最有神秘色彩的地方。首先,ISP(因特网服务提供商)会在提供一个接入服务器(NAS)来接受用户的拨号请求,接入服务器自身只负责验证用户的合法性。在接入服务器的后方还有验证服务器,主要就是审计,计费等工作。其实,就是我们常说的AAA服务器;那么这个接入服务器是怎样配置的呢?又是如何提供公网IP地址的呢?下面,我们一步一步的来揭开它的神秘面纱。

       首先,我们要了解的是PPPOE的工作过程,其过程可以分为两个阶段:

第一,PPPOE discovery phase ====》PPPOE 的发现阶段
第二,PPPOE sessions  phase ====》PPPOE 的会话阶段

PPPoE的详细配置信息:(图1==》我们以路由器来模拟NAS)
 

ADSL之PPPOE_ASDL

1.配置VPDN----VPDN的中文含义:虚拟专用拨入网
vpdn enalbe          =====>开启vpdn的功能
vpdn-group 1         =====>定义vpdn-group 1
accept-dialin        =====>接受客户端的拨入
protocol pppoe       =====>客户端使用pppoe协议拨入
virtual-template 1   =====>定义虚拟接口模块 
   
注意:以上的命令是在老版本的配置命令(IOS 12.3以前命令格式)。
在高版本的路由器中的配置如下:

vpdn enable                   =====>开启vpdn的功能
bba-group pppoe global        =====>全局启用了PPPOE协议
virtual-template 1            =====>创建虚拟接口模板(用于动态创建虚拟接口)

2.定义IP地址池(客户端拨入是获取的IP地址的地址集合)

ip local pool ADSL 202.106.1.1 202.106.1.10

3.定义virtual-template(虚拟接口模板)
interface virtual-template 1
ip add xxxx.xxxx.xxxx.xxx  ===>ISP自定义的IP地址(最好是lookback地址)
peer default ip address pool ADSL   ==>从ADSLpool 地址池中分配IP地址
enc ppp                =====>封装PPP协议
ppp authentication pap    =====>链路通过PAP验证     
  
4.定义本地用户数据库(用于PPPoE客户端拨入的账号信息)
username tangsir password linux%@!
username husir password h3cte%@!
username liusir password mcitp%@!
  
5.在接口激活PPPOE
   int e0/0
   pppoe enable =====>接口下激活pppoe

下面我以脚本的形式来配置IOS:(Internet 即NAS)

enable
conf t
enable secret cisco
service password-encryption
security passwords min-length 6
no ip domain-lookup
no cdp run
line console 0
no exec-timeout
logging synchronous
exit
line console 0
password cisco
login
exit
line vty 0 4
password cisco
login
exit
alias exec shuji sh ip int b
alias exec vl sh vlan-s
alias exec route sh ip route
hostname Internet
vpdn enable
bba-group pppoe global
virtual-template 1
exit
ip local pool ADSL 202.106.1.1 202.106.1.10
int virtual-template 1
ip add 1.1.1.1 255.255.255.0
no shut
encap ppp
ppp authentication pap
peer default ip address pool ADSL
compress stac
exit
username tangsir password linux%@!
username husir password h3cte%@!
username liusir password mcitp%@!
int e0/1
pppoe enable
no shut
int e0/2
pppoe enable
no shut
end
wr

好的,基本的的配置结束了,当我们要管理用户信息的时候,怎么办?
我们可以使用以下的命令来实现:
1.show vpdn         ====>查看所有的VPDN连接
2.show user         ====> 查看当前正在使用的用户
当然,如果是这样管理用户的话,也太麻烦了吧!而且功能上有些不足。不用担心,现在已经是桌面化管理了,就是咱们所说的AAA服务器。如果你不会操作的话,那你太对不起微软了,呵呵!!

  主认证方设置完毕后,如何设置被认证方呢?即如何设置PPPOE虚拟拨号工具。我们就拿XP OS 为例,此系统自带了PPPOE的虚拟拨号工具,下面是如何创建的方法:首先,打开“网络连接”;接着单击窗口左侧“网络任务”下的“创建一个新的连接”打开“新建连接向导”,单击“下一步”;在网络连接类型中选择“连接到Internet”,单击“下一步”;然后在出现的窗口中选择“手动设置我的连接”,单击“下一步”;在Internet连接窗口中选择“用要求用户名和密码的宽带连接来连接”,单击“下一步”;输入ISP名称,比如“ADSL”,单击“下一步”;依次输入用户名、密码、确认密码,单击“下一步”;最后,单击“完成”即可。当然这也是PPP协议用户认证的典型例子(PAP);

    企业想要于互联网通信的话,那么企业的边界路由器或者是企业的外缘防火墙于外界相连的接口必须要是公网的IP地址才是可以通信的。大多数企业都是通过ISP(因特网服务提供商)来申请公有的IP地址,那么就没有别的办法了吗?答案是有的。接下来,我们通过路由器设备PPPOE拨号,从internet获取IP地址。

配置信息:
1.路由器接口下启用pppoe,并创建一个拨号地址池 1
pppoe enable
pppoe-client dial-pool-number 1

2.定义一个虚拟接口dial 1 ,并调用拨号地址池 1

3.虚拟拨号接口封装PPP协议

4.向主认证方发送认证用户和密码

5.启用地址协商方式获取IP地址

边界路由器上的相关配置信息:
interface Ethernet0/1
no ip address
half-duplex
pppoe enalbe
pppoe-client dial-pool-number 1

int Dialer1
ip address negotiated
encapsulation ppp
dialer pool 1
ppp pap sent-username tangsir password linux%@!

在试验的环境下,需要指定虚拟接口dialer 1的默认路由:ip route 0.0.0.0 0.0.0.0 dialer 1

       特别注意:实际的网络工程当中,我的这个拓扑图是一定不存在的,这里只是为了模拟的需要。真是环境中有很多的链路连接设备,以PPP协议为例:大家不要以为就是电信的一根线拉到了你的公司,事实上是运营商在本地的交换机上拉一根光纤到一个称为SDH(可以认为是光端机,光信号转电信号的设备)设备上,然后CPE的SDH设备会提供接口给公司的边界路由器。作为网络工程人员,我们所负责的是公司内部的边界路由器和CPE设备之间的连接,其余的基本上都是电信的事情。

小弟水平有限,有不足之处请多多指教!!