- 基本概念:简单了解 PPPoE 和 Cisco 路由器上的相关术语。
- 拓扑与准备:配置前需要明确的网络信息。
- 详细配置步骤:提供完整的命令行配置示例。
- 验证与排错:如何检查配置是否生效,以及常见的故障排查方法。
- 高级配置(可选):如配置地址池、认证方法等。
基本概念
- PPPoE (Point-to-Point Protocol over Ethernet):一种在以太网上建立 PPP 连接的技术,它结合了 PPP 的强大功能(如认证、加密)和以太网的广泛部署。
- BAS (Broadband Access Server):在 Cisco 路由器上,我们配置的 PPPoE 服务器就扮演了 BAS 的角色,它负责终结客户端的 PPPoE 连接。
- Virtual-Template (虚拟模板):这是 Cisco PPPoE 服务器配置的核心,我们创建一个虚拟接口(如 Virtual-Template1),并在这个接口上配置 PPP 相关的参数(如 IP 地址、认证方法等),当一个新的 PPPoE 客户端连接时,路由器会动态地克隆这个虚拟模板,为该客户端创建一个临时的 PPP 会话接口(如 Virtual-Access1)。
拓扑与准备
假设我们有以下网络环境:

- Cisco 路由器:作为 PPPoE 服务器。
- 客户端:一台支持 PPPoE 拨号的 PC 或其他设备。
- 物理接口:假设客户端连接在路由器的
GigabitEthernet0/0接口上。 - 网络信息:
- PPPoE 服务器拨号接口(虚拟模板)IP 地址:
168.100.1/24 - 客户端拨号后获取的 IP 地址范围:
168.100.2-168.100.100 - PPPoE 用户名:
testuser - PPPoE 密码:
testpass
- PPPoE 服务器拨号接口(虚拟模板)IP 地址:
准备工作:
- 确保客户端连接的物理接口(
GigabitEthernet0/0)是up/up状态。 - 在该接口上启用
pppoe enable命令,使其能够接收 PPPoE 包。
详细配置步骤
以下是完整的 CLI 配置过程,你可以将它们逐条复制到你的路由器上。
步骤 1: 进入全局配置模式
Router> enable Router# configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#
步骤 2: 创建地址池(推荐)
为了给客户端自动分配 IP 地址,我们创建一个本地地址池。
Router(config)# ip local pool PPPOE-POOL 192.168.100.2 192.168.100.100
PPPOE-POOL是我们给地址池起的名字。168.100.2是池中第一个 IP 地址。168.100.100是池中最后一个 IP 地址。
步骤 3: 创建虚拟模板接口
这是最关键的一步,我们在这个模板上定义所有 PPPoE 客户端共有的属性。

Router(config)# interface Virtual-Template1 Router(config-if)# ip address 192.168.100.1 255.255.255.0 Router(config-if)# peer default ip address pool PPPOE-POOL Router(config-if)# ppp authentication chap
interface Virtual-Template1:创建一个编号为 1 的虚拟模板。ip address 192.168.100.1 255.255.255.0:定义服务器端拨号接口的 IP 地址,这个地址将成为客户端的网关。peer default ip address pool PPPOE-POOL:指定客户端连接后,从名为PPPOE-POOL的地址池中获取一个 IP 地址。ppp authentication chap:指定使用 CHAP 协议进行客户端认证,CHAP 比 PAP 更安全,因为它在认证过程中不直接传输明文密码。
步骤 4: 在物理接口上启用 PPPoE
我们需要在客户端实际连接的物理接口上激活 PPPoE 服务器功能。
Router(config)# interface GigabitEthernet0/0 Router(config-if)# pppoe enable Router(config-if)# pppoe group global
pppoe enable:在GigabitEthernet0/0接口上启用 PPPoE 服务器。pppoe group global:将此接口加入一个名为global的 PPPoE 组,虚拟模板将与此组关联,使用global是一个通用做法,也可以自定义组名。
步骤 5: 创建用户名和密码
创建用于 CHAP 认证的用户名和密码。
Router(config)# username testuser password testpass
username testuser:定义客户端使用的用户名。password testpass:定义与该用户名对应的密码。
步骤 6: (可选) 配置 DHCP 服务器
如果你的客户端除了获取 PPPoE 的 IP 地址外,还需要获取其他 DHCP 信息(如 DNS),你可以在路由器上配置 DHCP 服务,并指向 PPPoE 接口的网关。
Router(config)# ip dhcp POOL PPPOE-CLIENTS Router(dhcp-config)# network 192.168.100.0 255.255.255.0 Router(dhcp-config)-> default-router 192.168.100.1 Router(dhcp-config)-> dns-server 8.8.8.8 1.1.1.1 Router(dhcp-config)-> exit
验证与排错
配置完成后,你需要进行验证,并知道如何排查问题。

验证命令
-
检查虚拟模板和物理接口状态
Router# show interface Virtual-Template1
- 查看
Line protocol state是否为up,它应该是up,即使没有客户端连接,因为它是一个模板。
- 查看
-
检查 PPPoE 会话 这是验证客户端是否成功连接的最重要命令。
Router# show pppoe session
- 如果有客户端连接,你会看到类似下面的输出:
Uniq ID PEAPPPoE Rem MAC Interface State VPDN ------ -------------- ----------------- ------------- -------------- ------ 1001 1 aaaa.bbbb.cccc Virtual-Access1 UP ACTIVE State为UP表示会话已建立。Interface为Virtual-Access1,表示为该客户端动态创建的会话接口。
- 如果有客户端连接,你会看到类似下面的输出:
-
检查地址池使用情况
Router# show ip local pool
- 你会看到
PPPOE-POOL的使用情况,Total addresses in pool: 99,Used addresses: 1。
- 你会看到
-
检查用户名
Router# show username
- 确认
testuser是否存在且密码正确。
- 确认
常见排错
-
问题:客户端拨号失败,
show pppoe session中没有会话。- 排查:
- 物理连接:检查客户端和路由器之间的网线是否连接正常,交换机端口灯是否亮起。
- PPPoE 启用:确认在物理接口(
GigabitEthernet0/0)上执行了pppoe enable。 - 防火墙/ACL:检查物理接口上是否有访问控制列表阻止了 PPPoE 协议包(UDP 端口 1701)或 IP 协议 47 (GRE)。
- 客户端配置:确保客户端的用户名和密码与路由器上配置的完全一致。
- 排查:
-
问题:客户端可以连接,但无法获取 IP 地址(
show pppoe session显示会话为UP,但客户端 IP 是 169.254.x.x)。- 排查:
- 地址池:检查
show ip local pool,确认地址池PPPOE-POOL中还有可用地址。 - 虚拟模板配置:确认
Virtual-Template1上配置了 `peer default ip address pool PPP
- 地址池:检查
- 排查:
