PPPoE

PPPoE 支持在以太网链路上通过 PPP 与 MLPPP 进行 IPv6 前缀委派,支持客户端到服务器及服务器到客户端配置,并包含发现、会话、LCP 与 CHAP/PAP 等阶段。

PPPoE

本节介绍 PPPoE 示例。可使用本节配置通过 PPP 的 IPv6 前缀委派,以及在一条或多条链路上的 MLPPP。

以太网上的点对点协议(PPPoE)是一种将 PPP 数据包封装到以太网帧中的方法。PPPoE 是标准点对点协议(PPP)的扩展,也是 PPPoA 的后继协议。PPPoE 标准定义于 RFC 2516。RouterOS PPPoE 客户端与服务器可运行在路由器的任何二层以太网接口上,例如无线、以太网、EoIP 等。PPPoE 根据用户名(必要时还包括工作站)认证后向客户端分配 IP 地址,不同于仅按工作站认证时使用静态地址或 DHCP。出于安全原因,请勿在与 PPPoE 相同的接口上使用静态 IP 地址或 DHCP。

简介

PPPoE 可通过简单的桥接接入设备,将主机网络连接到远程接入集中器。

支持的连接:

  • MikroTik RouterOS PPPoE 客户端连接任意 PPPoE 服务器。
  • MikroTik RouterOS 服务器(接入集中器)连接多个 PPPoE 客户端。

PPPoE 工作方式

PPPoE 有两个阶段:

  1. 发现阶段。
  2. 会话阶段。

发现阶段

发现阶段包含四个步骤。完成后,两端都知道 PPPoE 的 SESSION_ID 与对端以太网地址,两者共同唯一确定 PPPoE 会话:

  1. PADI(PPPoE 主动发现初始化):客户端向广播地址发送 PADI 数据包。如果 PPPoE 客户端的拨号网络属性中填写了服务名称,数据包也会填充 service-name 字段;未填写时该字段为空。
  2. PADO(PPPoE 主动发现提供):如果接入集中器能够提供 PADI 中列出的服务名称,PPPoE 服务器或接入集中器会回复 PADO。未列出服务名称时,PADO 会填充接入集中器能够提供的服务名称。PADO 发送到 PPPoE 客户端的单播地址。
  3. PADR(PPPoE 主动发现请求):收到 PADO 后,客户端回复 PADR,并将其发送到接入集中器的单播地址。客户端可能收到多个 PADO,但会回复第一个有效 PADO。若初始 PADI 的服务名称为空,客户端会使用 PADO 返回的第一个服务名称填充 PADR。
  4. PADS(PPPoE 主动发现会话确认):收到 PADR 后,接入集中器为 PPP 会话生成唯一会话 ID,并通过 PADS 返回给 PPPoE 客户端。该数据包发送到客户端的单播地址。

PPPoE 会话终止

  • PADT(PPPoE 主动发现终止):会话建立后的任何时间都可以发送,用于表示 PPPoE 会话已终止。服务器或客户端都可以发送。

会话阶段

发现阶段完成后,两端知道 PPPoE 会话 ID 与对端以太网 MAC 地址,它们共同定义 PPPoE 会话。PPP 帧封装在 PPPoE 会话帧中,帧类型为 0x8864。

服务器发送确认且客户端收到后,PPP 会话依次进入:

  1. LCP 协商。
  2. 认证(CHAP/PAP)。
  3. IPCP 协商,客户端在此阶段获得 IP 地址。

警告

如果任一过程失败,LCP 协商建立阶段会重新开始。 PPPoE 服务器向客户端发送 Echo-Request 数据包以确定会话状态。否则,当客户端未发送 Terminate-Request 就结束会话时,服务器无法判断会话已经终止。

MTU

通常,未分片可传输的最大以太网帧为 1500 字节。PPPoE 增加 6 字节开销,PPP 字段再增加 2 字节,因此 IP 数据报可用 1492 字节。PPPoE 的最大 MRU 与 MTU 不应大于 1492。

TCP 栈会尽量避免分片,因此使用 MSS(最大报文段大小)。默认情况下,MSS 取出接口 MTU 减去 TCP 与 IP 头通常占用的 40 字节,以太网接口的结果为 1460 字节。经过更低 MTU 的中间链路时可能发生分片,此时 TCP 栈会执行路径 MTU 发现。无法在不分片情况下转发数据报的路由器应丢弃数据包,并向源主机发送 ICMP-Fragmentation-Required。主机收到后会尝试降低 MTU。实际网络中许多路由器不会生成该 ICMP 数据包,许多防火墙也会丢弃全部 ICMP 数据包。

解决方法是在 MSS 过大时调整 MSS。

MRRU

指定 MRRU 表示在单条链路上启用 MP(多链路 PPP)。该协议用于将大数据包拆分为较小数据包。MRRU 固定为 1614。此设置有助于解决路径 MTU 发现失败。两端都应启用 MP。在 Windows 中,可在 Networking 选项卡的 Settings 按钮中启用 "Negotiate multi-link for single link connections"。

接入集中器

PPPoE 服务器(接入集中器)支持在每个接口上配置多个服务器,并使用不同的服务名称。接入集中器名称与 PPPoE 服务名称用于让客户端识别要注册的接入集中器。接入集中器名称与命令提示符前显示的路由器 identity 相同,identity 在 /system/identity 子菜单中设置。

接入集中器在 /interface/pppoe-server/server 菜单中配置。

提示

不要为接收 PPPoE 请求的接口分配 IP 地址。 警告

默认 keepalive-timeout 值 10 秒在大多数情况下都适用。设置为 0 时,除非客户端显式注销或路由器重启,否则路由器不会断开客户端。可使用 one-session-per-host 属性解决此问题。

快速示例

PPPoE 客户端

要将 MikroTik RouterOS 配置为 PPPoE 客户端,添加具有以下参数的 PPPoE 客户端:

[admin@MikroTik] > interface pppoe-client add interface=ether2 password=StrongPass service-name=pppoeservice name=PPPoE-Out disabled=no user=MT-User
[admin@MikroTik] > interface pppoe-client print
Flags: X - disabled, I - invalid, R - running 
 0  R name="PPPoE-Out" max-mtu=auto max-mru=auto mrru=disabled interface=ether2 user="MT-User" 
      password="StrongPass" profile=default keepalive-timeout=10 service-name="pppoeservice" ac-name="" 
      add-default-route=no dial-on-demand=no use-peer-dns=no allow=pap,chap,mschap1,mschap2

PPPoE 服务器

将 MikroTik RouterOS 配置为接入集中器(PPPoE 服务器):

  • 为客户端添加 10.0.0.2-10.0.0.5 的 IP 地址池。
  • 添加 PPP profile。
  • 添加 PPP secret(用户名/密码)。
  • 添加 PPPoE 服务器本身。
[admin@MikroTik] > /ip/pool
add name=pppoe-pool ranges=10.0.0.2-10.0.0.5
[admin@MikroTik] > /ppp/profile
add local-address=10.0.0.1 name=for-pppoe remote-address=pppoe-pool
[admin@MikroTik] > /ppp/secret
add name=MT-User password=StrongPass profile=for-pppoe service=pppoe
[admin@MikroTik] > /interface/pppoe-server/server
add default-profile=for-pppoe disabled=no interface=ether3 service-name=pppoeservice

PPPoE over VLAN 范围

避免在某接口上配置 pppoe-over-vlan-range 的同时,在该接口上创建 VLAN ID 落入此范围的 VLAN 接口。例如:

/interface/vlan
add interface=ether2 name=vlan15 vlan-id=15
/interface/pppoe-server/server
add disabled=no interface=ether2 pppoe-over-vlan-range=10-20

需要此类设置时,请从 pppoe-over-vlan-range 中移除重叠 VLAN ID,并直接在 VLAN 接口上创建独立 PPPoE 服务器实例:

/interface/vlan
add interface=ether2 name=vlan15 vlan-id=15
/interface/pppoe-server/server
add disabled=no interface=ether2 pppoe-over-vlan-range=10-14,16-20
add disabled=no interface=vlan15

说明

请勿在一台设备上使用大量 PPPoE 客户端。