实验目的

  • 掌握PPPoE接入控制模式结构、原理及特点;

  • 掌握PPPoE本地认证和PPPoE + RADIUS远端认证两种接入控制模式的配置方法;

  • 通过抓包分析PPPoE协议和RADIUS协议的运行过程,进一步加深对协议的理解。

实验内容

  • 基于 PPPoE本地认证的LAN接入实验

    根据拓扑图互连设备搭建实验环境,按实验要求进行设备配置,接入测试,并通过抓包,记录并分析PPPoE协议的运行过程。

  • 基于PPPoE + RADIUS远端认证的LAN接入实验

    根据拓扑图互连设备搭建实验环境,按实验要求进行设备配置,接入测试,并通过抓包,记录并分析PPPoE和RADIUS协议前后台的协同工作过程。

实验器材

  • 以太交换机2台(配置线1根,用于交换机故障时排查问题);

  • PC级6-8台(用途:1台PPPoE服务器,1台Radius服务器,1台外网主机,3-5台PPPoE客户机);

  • USB接口的以太网卡:科B119房间1个,科B121房间7-9个;

  • USB转串口配置线1根(用于交换机故障时排查问题);

  • 网线:科B119房间1根,科B121房间7-9根。

实验原理

PPPoE协议主要用于多点链路的接入控制。工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是与每一个NAR主机建立一条虚拟点到点链路,并用唯一的会话ID标识。发现阶段结束后,就进入标准的PPP会话阶段。

NAS和NAA是两个独立的逻辑实体,位于同一物理设备时称为本地认证。适合于接入用户不多的小网,用户接入认证和接入控制都有PPPoE服务器完成。用户身份认证通过后,由PPPoE服务器通过IP池为用户分配IP地址上网。

对于接入用户数多或多种接入用户的综合接入控制,通常采用基于PPPoE+RADIUS的远端认证方式。该方式下,用户认证由RADIUS服务器完成,对于通过认证的用户进行授权,并将授权信息通过RADIUS协议发送到PPPoE服务器设备的RADIUS客户端,PPPoE服务器据此为接入用户分配IP地址上网。

实验拓扑

本地认证实验拓扑

远端认证实验拓扑

实验操作与记录

网络连接端口记录与IP地址规划

本实验中,PPPoE客户IP地址池(内网地址),外网地址,网络连接端口等规划如表1和表2。

表1 交换机连接端口规划
端口号连接设备端口号连接设备
2 @交换机1PPPoE客户11 @交换机2PPPoE服务器eth0外网口
6 @交换机1PPPoE客户214 @交换机2RADIUS服务器
12 @交换机1PPPoE客户310 @交换机2外网PC
16 @交换机1PPPoE客户4
1 @交换机1PPPoE服务器eth1内网口
表2 IP地址规划
设备或端口IP地址(若需要,可含掩码)
PPPoE客户端IP地址池192.168.4.2/24~192.168.4.11/24
PPP连接中服务器端地址 (与IP地址池在同一网段的地址)192.168.4.1/24
PPPoE服务器外网网卡 (eth0)192.168.5.1/24
RADIUS服务器网卡 (eth0)192.168.5.2/24
外网主机192.168.5.3/24

PPPoE本地认证

(1)关键步骤与主要内容

  1. 进入桌面终端,运行配置脚本,根据提示配置PPPoE服务器参数。

  2. 启动PPPoE服务器(开启服务)。

  3. 配置IP转发与NAT。

    1. 开启转发:sysctl -w net.ipv4.ip_forward=1

    2. 配置NAT:iptables -t nat -A POSTROUTING -s X.X.X.X/M –j MASQUERADE

  4. 开启wireshark,抓PPPOE客户端的报文。

  5. 客户机使用PPPoE拨号接入,重启相应网卡,即启用PPPoE连接。

  6. 客户机ping外网测试,能够ping通外网PC说明已经可以连接外网。

(2)实验记录

表3 PPPoE本地认证实验测试记录
客户端帐户名密码认证后获取的 IP地址Ping外网主机 (通,不通)
PPPoE客户1user11192.168.4.5
PPPoE客户2user21192.168.4.4
PPPoE客户3user31192.168.4.6
PPPoE客户4user4`192.168.4.8

PPPoE+RADIUS远程认证

(1)关键步骤与主要内容

  1. 进入桌面终端,运行配置脚本,根据提示配置PPPoE服务器参数。

  2. 输入命令 ~/Desktop/radius.sh ,运行radius脚本。(如果需要输入密码,则输入123456)

  3. 根据提示输入PPPoE服务器的IP地址,并回车。

  4. 根据提示输入NAS和NAA之间的共享密钥,并回车。

  5. 进入用户管理数据库。在终端内输入mysql -u radius -p后回车,输入密码:321,进入数据库。

  6. 在mysql>提示后输入use radius后回车,进入radius数据库。

  7. 在mysql> 提示符后输入如下命令,命令中的用户名、密码请自行更改。

    insert into radcheck (username,attribute,op,value)

    values('用户名', 'Cleartext-Password', ':=', '密码');

  8. 在Radius服务器上开启抓包。

  9. 客户端配置过程同本地认证实验,各PPPoE客户机ping外网主机,观察通信结果。

(2)实验记录

表4 基于PPPoE + RADIUS远程认证实验记录表1
科目具体配置的数据
PPPoE服务器和RADIUS服务器的共享密钥 key123
在PPPoE服务器上配置的RADIUS服务器的IP地址192.168.5.2/24
在RADIUS服务器上配置的PPPoE服务器的IP地址192.168.5.1/24
表5 PPPoE + RADIUS远程认证实验记录表2
配置事项账户名密码认证后获取的 IP地址Ping外网主机 (通,不通)
PPPoE客户11user1192.168.4.7/24
PPPoE客户22user1192.168.4.2/24
PPPoE客户33user1192.168.4.5/24
PPPoE客户44user1192.168.4.8/24

本地认证分析

客户机网络连接状态

user3的网络状态

发现阶段报文分析

该阶段的本质是建立主机和PPPOE服务器之间的一条虚拟点到点通道,并由唯一会话标识表征。该阶段的协议交互如下图所示。下面逐一分析每次交互报文内容。

发现阶段协议交互

如下图所示,PADI报文中,主机使用广播MAC地址进行广播,用于寻找合适的PPPoE服务器。

有效启动发现(PADI)

如下图所示,PADO报文中,满足要求的服务器均可以应答,把自己的MAC地址作为源地址,单播出去;载荷部分中AC Cookie的内容由PPPOE服务器自由定义和解释,携带tag的类型、长度和值。

有效发现提供(PADO)

如下图所示,PADR报文中主机单播,发向主机选择的服务器,进行请求。可以看到载荷中的AC-Cookie与PADO的完全一致,主机并未解析和处理它。

有效发现请求(PADR)

如下图所示,PADS报文中服务器应答主机,分配唯一的会话标识5,成功建立P2P隧道。

有效发现会话证实(PADS)

会话阶段报文分析

该阶段即在每条虚拟链路中承载PPP帧,进行PPP链路的建立,认证和网络层协议协商等。

PPP链路建立

从下面两张图可以看出PPP链路建立是主机和服务器相互请求,建立双向连接。最大接收单元指发送端PPP报文中信息域的长度不能超过MRU,否则接收端不负责处理,可能会将报文丢弃。图中可以看出二者最大接收单元都为1492字节;对于魔术字,两端不能重复,可以用来检测链路的环回情况,这是一个必要选项,必须被确认否则LCP不能UP。

服务器的请求还会对认证协议及算法进行协商,这里使用的是CHAP with MD5。

主机配置请求

服务器配置请求

CHAP认证

PPP链路建立完成后,开始进行CHAP认证对用户身份进行鉴别。CHAP协议交互如下图所示。下面逐一分析每次交互报文内容。

CHAP协议交互

如下图所示,PPPOE通过单播给对等端(主机)发送质询分组,质询值应该是唯一的和不可预知的值,并且应该在随后的每个询问中改变,增强了安全性。

质询报文

如下图所示,主机接收到质询报文后,将质询值通过哈希计算进行加密再发送,因为使用的是MD5算法,所以输出为16字节。

响应报文

认证通过报文

网络层配置

认证通过后,有IPCP对网络层协议进行配置,分配IP地址。协议交互过程如图3-12所示。下面逐一分析每次交互报文内容。

认证通过报文

下图可以看到,由于主机还没有IP地址,此时将参数配置选项中的IP地址填充全0,表示请求对端分配IP。

主机配置请求

当服务器收到报文时,会发送NAK应答表示不接受对端IP。又检测到对端IP为全0,则将分配给对方的IP地址(192.168.4.6)填充到报文内,并给定DNS服务器进行应答,如下图所示。

服务器应答

下图可以看出,主机收到Config-Nak报文后,使用服务器提供的IP地址(192.168.4.6)和DNS服务器重新发送一个Config-Request报文。

主机配置请求

下图可以看出服务器接受对端主机IP(192.168.4.6)并发送ACK。由于连接是双向的,服务器也要发送配置请求,然后主机发送ACK表示接受IP,这里不再赘述。

服务器应答

PPPOE终止阶段

该阶段主机和服务器均可发起终止,发送PADT。

远程认证分析

客户机网络连接状态

2user的网络状态

报文分析

整个认证授权协议交互过程如下图所示,下面逐一分析每次交互报文内容。

RSA交互过程

下图可以看出,在一个二层网络中,PPPOE服务器向2user主机发起CHAP 质询,质询值为随机23字节值,服务器用户为misaka

PPPOE服务器向2user主机发起质询

下图可以看出主机收到质询报文后通过MD5算法使用共享密钥对质询值进行加密,生成16字节的值,发送过去。

2user主机响应质询

下图可以看出,PPPOE服务器通过三层网络把接入请求发送给Radius服务器应用层,且使用的是UDP无连接的方式。

PPPOE服务器向Radius服务器发送接入请求

接入请求报文中,鉴别码是一个16字节的随机数,这个值应该是不可预测的,并且是唯一的,因为具有相同密码的重复请求值,使黑客有机会用已截取的响应回复用户。可以看到报文中直接发送了认证用户名和质询响应,PPPOE服务器并未对质询响应做处理,这是与其本地认证最大的不同。

下图可以看出Radius服务器接收请求报文后接受了请求并发出响应,回应鉴别码是对整个数据包进行MD5演算产生的16字节索引,防止伪造服务器的回应。

Radius服务器向PPPOE服务器发送接入响应

下图可以看出PPPOE向主机发送接入成功报文,用户认证成功。

PPPOE服务器向用户发送认证成功报文

认证通过后,PPPOE服务器开始为用户2user分配IP地址,从图5-3可以看出该阶段过程与本地认证阶段别无二致,这里不再详细介绍,详见7.1(3)中网络层配置分析部分。我们这里可以通过下图可以看出,PPPOE服务器给用户分配的地址是192.168.4.2。

PPPOE服务器向用户发送NAK

分配完IP地址后,PPPOE会向Radius服务器发送记账请求,如下图所示。

PPPOE服务器向Radius服务器发送记账请求

Radius服务器收到记账请求报文后发送响应,开始记账,即记录用户的网络行为,如下图所示。

Radius服务器向PPPOE服务器发送记账响应