pppoe-server 使用方法
2026/5/12 7:25:49 网站建设 项目流程

pppoe-server

pppoe-server是一个用户空间的 PPPoE 服务器,常用于搭建 PPPoE 拨号服务器。


核心网络与地址参数

参数说明
-I if_name指定服务器监听哪个网络接口(如-I eth0)。默认是eth0
-L ip指定服务器的本地 IP 地址。通常是 PPP 连接建立后分配给服务器端的地址。
-l每个会话自动递增本地 IP 地址。如果只指定-L 1.1.1.1,每多一个用户,服务器 IP 会变成 1.1.1.2、1.1.1.3 …
-R ip指定为客户端分配的 IP 地址池的起始地址。例如-R 10.0.0.10,则客户端可能依次获得 10.0.0.10、10.0.0.11 …
-p fname从文件中读取 IP 地址池(每行一个 IP 或范围,如192.168.1.100-192.168.1.200)。

会话控制与并发

参数说明
-N num服务器允许的最大并发会话数。
-x n限制每个 MAC 地址最多同时建立n个会话。防止单用户耗尽资源。
-o offset会话编号从offset+1开始。例如-o 100,第一个会话编号为 101。
-r随机分配会话编号(而不是从 1 开始顺序分配)。
-i如果没有空闲会话(达到-N上限),则忽略新的 PADI(请求包),不回应。

服务与控制标识

参数说明
-C name设置接入集中器(AC)名称。客户端可能会显示此名称。
-S name通告的服务名称。客户端可指定要连接的特定服务。
-T timeout不活动超时秒数。如果无数据传输,断开连接。
-m MSS修改 TCP 的 MSS 值,避免因 PPPoE 额外开销导致分片。常用如-m 1452

后端与 PPPD 整合

参数说明
-O fname指定传递给pppd的选项文件。默认是/etc/ppp/pppoe-server-options
-q /path/pppd指定pppd程序的完整路径。
-Q /path/pppoe指定pppoe(PPPoE 客户端)程序的路径(一般服务器不需要)。
-k使用内核模式 PPPoE(需要内核支持),效率更高。
-u将会话的 unit 编号传递给pppd,便于脚本管理。
-s使用同步 PPP 模式(通常默认是异步)。

调试与信息

参数说明
-d调试模式,打印会话创建的详细信息。
-X pidfile写入 PID 文件并锁定。如-X /var/run/pppoe-server.pid
-P仅检查 IP 地址池文件是否正确,然后退出。
-h显示帮助信息。

高级/扩展参数

参数说明
-M msg在 PADM 包(断线通知)中向客户端发送 MOTM(题外消息)。
-H url在 PADM 包中发送 HURL 标签(用于向客户端传递 URL,例如自助服务页面)。
-f disc:sess设置发现阶段和数据阶段使用的以太网帧类型(十六进制)。通常默认是8863:8864,一般无需改动。

使用示例

基础 PPPoE 服务器
pppoe-server-Ieth0-L192.168.1.1-R192.168.1.100-N50
  • 监听eth0
  • 服务器自身地址192.168.1.1
  • 客户端地址从192.168.1.100开始
  • 最大用户数 50
完整生产案例
pppoe-server-Ieth1-L10.10.0.1-l-R10.10.0.100-p/etc/ppp/ip-pool-N200-x3-m1400-O/etc/ppp/pppoe-options-d
  • 监听 eth1
  • 递增服务器地址(-l
  • IP 池从文件读取
  • 最多 200 并发,每 MAC 最多 3 个会话
  • 修改 MSS 为 1400
  • 使用自定义 pppd 选项文件
  • 调试模式

注意事项

  1. 需要 pppd 支持:必须安装并正确配置pppd,并且通常需要pppoe-server-options文件启用认证方式(如require-paprequire-chap)。
  2. iptables 转发:如果要让客户端上网,必须启用 IP 转发并配置 NAT。
    echo1>/proc/sys/net/ipv4/ip_forward iptables-tnat-APOSTROUTING-oeth0-jMASQUERADE
  3. mtu/mss 问题:PPPoE 会带来 8 字节开销,所以建议客户端 MTU 设为 1492,服务器用-m强制 MSS。
  4. 内核模式:如果编译时未启用内核 PPPoE 支持,不要用-k

如果你有具体的场景(例如路由器上搭建、学校机房认证模拟等),我可以帮你写一份完整的配置示例。

pppd

pppoe-server-options文件是pppd(PPP 守护进程) 的配置文件。当客户端成功连接后,pppoe-server会启动pppd来管理 PPP 链路,这个文件里的选项会直接传递给pppd

你可以通过-O参数指定其他文件,默认位置是/etc/ppp/pppoe-server-options


1. 核心必选选项:认证方式

你必须至少指定一种认证方式,否则客户端可能无法通过验证。

参数说明
require-pap要求客户端使用 PAP(密码认证协议)验证。
require-chap要求客户端使用 CHAP(挑战握手认证协议)验证,比 PAP 更安全。
auth要求客户端必须提供认证信息,但不强制指定是 PAP 还是 CHAP。服务器会与客户端协商,选择双方都支持的最高安全级别认证方式(优先 CHAP,降级到 PAP)。

2. 网络基础选项:IP 与 DNS

参数说明
ms-dns <IP地址>指定主 DNS 服务器地址,会下发给客户端。可以设置两次,分别对应主、备 DNS。
ms-wins <IP地址>指定主 WINS 服务器地址,主要用于 Windows 网络环境。
netmask <掩码>指定分配给客户端的子网掩码,默认是255.255.255.255
mtu <字节>设置最大传输单元 (MTU),建议 1492(PPPoE 开销后)。
mru <字节>设置最大接收单元 (MRU),通常与 MTU 保持一致。

3. 服务与链路控制选项

参数说明
login允许使用系统/etc/passwd中的用户名和密码进行验证,通常和chap-secrets配合使用。
lcp-echo-interval <秒>LCP 心跳包的发送间隔,用于检测链路是否存活。
lcp-echo-failure <次数>允许连续丢失心跳包的最大次数,超过则断开连接。
logfile <路径>指定 PPP 日志输出文件,方便调试。
idle <秒>空闲超时时间,链路无流量超过该时间后自动断开。
noauth不要求客户端认证自己(服务端通常不需要)。
default-asyncmap设置默认的异步映射,用于转义控制字符。

4. 性能与压缩选项

为了最大兼容性和稳定性,通常建议禁用压缩。

参数说明
noaccomp禁用地址和控制字段压缩。
nopcomp禁用协议字段压缩。
novj禁用 Van Jacobson 压缩(TCP/IP 头压缩)。
novjccomp禁用 Van Jacobson 连接 ID 压缩。
nobsdcomp禁用 BSD 压缩。
nodeflate禁用 Deflate 压缩。

文件配置示例

下面是一个典型的/etc/ppp/pppoe-server-options配置,包含常见选项:

# 认证方式 require-chap login # DNS 设置 ms-dns 8.8.8.8 ms-dns 8.8.4.4 # 链路检测 lcp-echo-interval 10 lcp-echo-failure 2 # 日志 logfile /var/log/pppoe.log # 禁用压缩(提高兼容性) noaccomp nopcomp novj novjccomp nobsdcomp nodeflate

注意事项

  • 该文件必须存在:即使为空文件也可以,但文件必须存在,否则pppoe-server会报错。
  • 用户名密码存储:认证凭据不在这个文件里,而是在/etc/ppp/chap-secrets(CHAP 用)或/etc/ppp/pap-secrets(PAP 用)文件中。
  • 服务端 IP 分配:服务端的 IP 由pppoe-server-L参数指定,而非此配置文件。

配合配置:用户名密码存储

认证凭据需要同时存在于 PAP 和 CHAP 的配置文件中:

1./etc/ppp/chap-secrets

# 客户端名 服务器名 密码 允许的IP "user1" * "pass123" * "user2" * "pass456" *

2./etc/ppp/pap-secrets

# 内容格式与 chap-secrets 相同 "user1" * "pass123" * "user2" * "pass456" *

注意:必须同时配置这两个文件。因为pppd会根据最终协商的认证方式去对应的文件中查找凭据。如果只配置了chap-secrets而协商结果是 PAP,认证会失败。


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询