跳到内容

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 范围。这可以是像 X.X.X.Y-Z 这样的 IP 范围,也可以是像 X.X.X.X/MASK 这样的 CDIR 格式。

随后,让我们添加一个简化的 /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 场景中的第 2 层广播域时可以提供安全性,在这些场景中,要求 802.1X 或 MACsec 并不理想,例如允许客户拥有的路由器或静态 IP 地址。现在您就是您自己的小型 ISP,恭喜!

作者:Neel Chauhan