在 CentOS 7 上搭建 PPPoE 服务器


一、前言

PPPoE 是一款运行在以太网之上的点到点协议。

PPPoE 可用于在以太网上的两个节点之间建立一条点到点的隧道。

PPPoE 目前常用于以太网的接入控制,比如宽带连接。

本文将介绍如何在 CentOS 7 系统上搭建 PPPoE 服务器。


二、网络拓扑图及说明


如图,某园区需要在其出口网关上部署 PPPoE 服务器来确保只有授权的用户才能访问外网。

为了确保密码不被嗅探,PPPoE 服务器将使用 CHAP 作为认证协议。

网关侧 PPPoE 接口使用的 IP 地址固定为 192.168.1.1;用户侧 PPPoE 接口将被随机分配一个 192.168.1.0/24 网段中未被使用的地址。

园区内网主机使用 NAT 连接外网。

园区的出口网关使用 CentOS 7.5.1804 系统。

PPPoE 服务器搭建完成后,选择内网中的一台主机使用以下认证信息来测试连接:

用户名 密码
linux 123

三、配置步骤

3.1 安装所需软件

执行以下命令:

yum -y install rp-pppoe

3.2 修改配置文件

请使用 vim 之类的文本编辑器打开 /etc/ppp/pppoe-server-options

删掉或注释掉以下两行:

require-pap
login

然后在文件末尾加上以下内容:

ms-dns 后面是为客户端分配的 DNS 服务器,一行一个,可自行更改。)

require-chap
auth
logfile /var/log/ppp/pppoe-server.log
ms-dns 8.8.8.8
ms-dns 8.8.4.4

修改完成后保存退出即可。

再执行以下命令:

cat << EOF > /etc/ppp/pppoe-server-env

请按实际情况修改以下内容,完成后粘贴到命令行窗口中按回车即可。

INT=<提供服务的接口>
LOCAL=<网关侧 PPPoE 接口的 IP 地址>
START=<为用户分配的起始 IP>
NUMBER=<最大用户数>
EOF

例如这里是:

INT=eth1
LOCAL=192.168.1.1
START=192.168.1.2
NUMBER=253
EOF

3.3 添加 PPPoE 用户

请使用 vim 之类的文本编辑器打开 /etc/ppp/chap-secrets

然后按照以下格式添加用户条目(一行对应一个用户):

<用户名> * <密码> *
<用户名> * <密码> *
...

例如这里是:

linux * 123 *

修改完成后保存退出即可。

3.3 创建服务文件

执行以下命令:

cat << EOF > /etc/systemd/system/pppoe-server.service

以下内容直接粘贴到命令行窗口中按回车即可。

[Unit]
Description=PPPoE Server.
After=syslog.target

[Service]
Type=forking
EnvironmentFile=/etc/ppp/pppoe-server-env
ExecStart=/sbin/pppoe-server -I \$INT -L \$LOCAL -R \$START -N \$NUMBER

[Install]
WantedBy=multi-user.target
EOF

3.4 开启 NAT 功能(基于 iptables)

命令用法

iptables -t nat -A POSTROUTING -s <PPPoE 客户端所在网段/掩码> -j MASQUERADE

例如这里是:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

可将该命令追加写入到 /etc/rc.local 中以确保重启后仍然有效。

3.5 开启 IPv4 地址转发功能

执行以下命令:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && \
sysctl -p

3.6 开启 PPPoE 服务器

执行以下命令:

systemctl start pppoe-server

如需开机自启动,请执行以下命令:

systemctl enable pppoe-server

四、测试

以 Windows 7 为例,按照标准操作创建一个 PPPoE 连接(方法略),然后使用在 3.3 中设置的用户名密码来拨号。

如果能获取到指定的 IP 地址且连接到 Internet 即成功。如下图:

发表评论