跳至内容

accel-ppp PPPoE 服务器

简介

PPPoE 是一种主要由 DSL 和光纤到户 ISP 使用的协议,客户通过用户名和密码组合进行身份验证。PPPoE 在要求原有 ISP 与其他 ISP 共享其网络的国家/地区中使用,因为客户可以通过域名路由到所需的 ISP。

accel-ppp 是一个 Linux 内核加速实现的 PPPoE 和相关协议,如 PPTP、L2TP 等。

先决条件

  • 具有两个网络接口的服务器
  • 支持 PPPoE 的客户端路由器或机器

安装 accel-ppp

首先安装 EPEL

dnf install -y epel-release

然后,安装 accel-ppp

dnf install -y accel-ppp

设置 accel-ppp

首先,我们需要启用 IP 转发

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

然后,将以下内容添加到 /etc/accel-ppp.conf

[modules]
log_file
pppoe
auth_mschap_v2
auth_mschap_v1
auth_chap_md5
auth_pap
chap-secrets
ippool

[core]
log-error=/var/log/accel-ppp/core.log
thread-count=4

[ppp]
ipv4=require

[pppoe]
interface=YOUR_INTERFACE

[dns]
dns1=YOUR_DNS1
dns2=YOUR_DNS2

[ip-pool]
gw-ip-address=YOUR_GW
YOUR_IP_RANGE

[chap-secrets]
gw-ip-address=YOUR_GW
chap-secrets=/etc/chap-secrets

替换以下信息

  • YOUR_INTERFACE 替换为监听 PPPoE 客户端的接口。
  • YOUR_DNS1YOUR_DNS2 替换为要分发给客户端的 DNS 服务器。
  • YOUR_GW 是 PPPoE 客户端服务器的 IP 地址。此地址必须与服务器的面向 WAN 的 IP 地址或默认网关不同。
  • YOUR_IP_RANGE 替换为要分发给客户端的 IP 地址范围。这可以是一个 IP 地址范围,如 X.X.X.Y-Z,或者以 CDIR 格式,如 X.X.X.X/MASK。

接下来,我们添加一个最简化的 /etc/chap-secrets 文件

user    *   password    *

您可以通过替换 userpassword 为所需的用户名和密码来添加更多用户。

配置 PPPoE 客户端

设置好 PPPoE 服务器后,我们就可以开始添加 PPPoE 客户端了。作者喜欢使用 MikroTik CHR 作为他们首选的 PPPoE 客户端进行测试,所以我们将使用它。

在将 MikroTik CHR 安装到与 PPPoE 服务器监听接口连接到同一以太网网络的系统后,我们将配置 PPPoE。

[admin@MikroTik] > /interface pppoe-client
[admin@MikroTik] > add add-default-route=yes disabled=no interface=ether1 name=pppoe-out1 \
    password=password user=user

如果一切正常,我们应该会获得一个 IPv4 地址。

[admin@MikroTik] > /ip/address/print
Flags: D - DYNAMIC
Columns: ADDRESS, NETWORK, INTERFACE
#   ADDRESS      NETWORK   INTERFACE 
0 D 10.0.0.1/32  10.0.0.0  pppoe-out1

结论

PPPoE 常常受到诟病,原因很容易理解:您需要手动配置用户名和密码。尽管如此,它在连接到二层广播域时提供了安全性,特别是在 ISP 场景中,当 802.1X 或 MACsec 是不希望采用的选项时,例如允许客户自有路由器或静态 IP 地址。现在您就是自己的迷你 ISP,恭喜您!

作者:Neel Chauhan