在Ubuntu上配置PPPoE服务:从安装到自动化启动的全指南

在Ubuntu上配置PPPoE服务:从安装到自动化启动的全指南

PPPoE(点对点协议以太网)是一种广泛用于DSL和光纤宽带连接的协议。在本篇技术博客中,我们将详细介绍如何在Ubuntu系统上配置PPPoE服务,包括安装、配置、启动以及设置自动启动等步骤。

1. 安装pppoe-server

首先,我们需要安装pppoe-server工具。使用以下命令进行安装:

bash 复制代码
sudo apt-get update
sudo apt-get install pppoe

安装完成后,可以使用pppoe-server -h命令查看软件版本以确认安装成功。

2. 配置服务器

配置基本选项

/etc/ppp目录下编辑配置文件:

编辑/etc/ppp/options
bash 复制代码
sudo nano /etc/ppp/options

修改以下内容:

  • 找到# ms-dns行,去掉注释并将其改为实际可用的DNS服务器地址,如114.114.114.1148.8.8.8
  • 注释掉+pap,取消注释-pap
  • 取消注释+chap,注释掉-chap

PAP和CHAP是两种不同的认证协议,根据需要选择其一。

编辑/etc/ppp/chap-secrets
bash 复制代码
sudo nano /etc/ppp/chap-secrets

添加以下内容,设置用户名和密码:

复制代码
123456  *   123456   *

表示用户名为123456,服务器名为任意,密码为123456,IP为任意的IP。

创建并编辑/etc/ppp/pppoe-server-options

如果文件不存在则创建该文件,并添加以下内容:

bash 复制代码
sudo nano /etc/ppp/pppoe-server-options
复制代码
auth
require-chap
logfile /var/log/pppd.log

3. 设置IP策略

开启IP转发功能

打开/etc/sysctl.conf文件,找到并取消注释net.ipv4.ip_forward=1行,然后运行以下命令以启用IP转发:

bash 复制代码
sudo sysctl -p

配置iptables的IP策略

在超级用户权限下运行以下命令:

bash 复制代码
sudo iptables -A POSTROUTING -t nat -s 192.168.156.0/24 -j MASQUERADE

其中192.168.156.0/24为实际的网络地址,需要根据你的实际情况填写。

4. 运行PPPoE服务器

使用以下命令启动PPPoE服务器:

bash 复制代码
sudo pppoe-server -I ens33 -L 192.168.156.117 -R 192.168.156.118 -N 10

参数说明:

  • -I:指定网络端口名称。
  • -L:指定PPPoE服务器的IP地址。
  • -R:指定客户连接到服务器时分配的IP地址范围。
  • -N:指定最多允许的客户连接数。

示例

bash 复制代码
sudo pppoe-server -I eth0 -L 172.168.0.1 -R 172.168.0.210 -N 20

5. 添加开机自启动

配置rc-local服务

编辑rc-local.service文件
bash 复制代码
sudo chmod 777 /lib/systemd/system/rc-local.service
sudo nano /lib/systemd/system/rc-local.service

在文件尾部添加以下内容:

复制代码
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
编辑/etc/rc.local文件

如果文件不存在则创建该文件,并添加以下内容:

bash 复制代码
sudo nano /etc/rc.local
复制代码
#!/bin/sh
echo "看到这行字,说明添加自启动脚本成功。" > /usr/local/test.log
pppoe-server -I ens33 -L 200.200.156.117 -R 200.200.156.118 -N 10
iptables -A POSTROUTING -t nat -s 200.200.156.0/24 -j MASQUERADE
exit 0

/etc/rc.local文件加上执行权限:

bash 复制代码
sudo chmod +x /etc/rc.local
创建软链接

/etc/systemd/system目录下创建软链接:

bash 复制代码
sudo ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/

停止 PPPoE 服务器

  1. 查找并终止 PPPoE 服务器进程
    使用以下命令查找 pppoe-server 进程:

    bash 复制代码
    ps aux | grep pppoe-server

    终止进程:

    bash 复制代码
    sudo kill <pppoe-server进程ID>

    或者使用以下命令停止所有 pppoe-server 进程:

    bash 复制代码
    sudo killall pppoe-server

使用pppoeconf配置PPPOE服务

在 Ubuntu 上开启和关闭 PPPoE 服务也可通过安装并配置 pppoeconf 工具完成。

开启 PPPoE 服务

  1. 安装 pppoeconf 工具

    如果没有安装 pppoeconf,可以使用以下命令进行安装:

    bash 复制代码
    sudo apt-get update
    sudo apt-get install pppoeconf
  2. 配置 PPPoE 连接

    运行 pppoeconf 工具进行 PPPoE 连接配置:

    bash 复制代码
    sudo pppoeconf

    按照屏幕上的提示进行配置,输入 ISP 提供的用户名和密码等信息。

  3. 启动 PPPoE 连接

    配置完成后,可以使用以下命令启动 PPPoE 连接:

    bash 复制代码
    sudo pon dsl-provider

    dsl-providerpppoeconf 创建的默认配置文件名称。

  4. 验证连接

    使用以下命令查看 PPPoE 连接状态:

    bash 复制代码
    ifconfig ppp0

    或者:

    bash 复制代码
    ip addr show ppp0

    如果看到 ppp0 接口的 IP 地址,说明 PPPoE 连接已经成功启动。

关闭 PPPoE 服务

  1. 停止 PPPoE 连接

    使用以下命令停止 PPPoE 连接:

    bash 复制代码
    sudo poff dsl-provider

    这将断开当前的 PPPoE 连接。

  2. 验证连接断开

    再次查看网络接口状态,确保 ppp0 接口已经消失或不再有 IP 地址:

    bash 复制代码
    ifconfig ppp0

    或者:

    bash 复制代码
    ip addr show ppp0

示例

以下是一个完整的示例过程,包括安装、配置、启动和关闭 PPPoE 服务的命令:

bash 复制代码
# 更新软件包列表并安装 pppoeconf 工具
sudo apt-get update
sudo apt-get install pppoeconf

# 运行 pppoeconf 配置 PPPoE 连接
sudo pppoeconf

# 按照提示输入 ISP 提供的用户名和密码,完成配置

# 启动 PPPoE 连接
sudo pon dsl-provider

# 验证 PPPoE 连接状态
ifconfig ppp0
# 或者
ip addr show ppp0

# 停止 PPPoE 连接
sudo poff dsl-provider

# 验证连接断开
ifconfig ppp0
# 或者
ip addr show ppp0

通过以上步骤,你可以在 Ubuntu 上成功开启和关闭 PPPoE 服务。如果遇到问题,确保你的网络设备和 ISP 提供的设置正确,并检查系统日志获取更多信息。

结论

通过以上步骤,你可以在Ubuntu上成功配置并运行PPPoE服务,并设置其为开机自启动。这样不仅可以确保网络服务的持续性,还能提供稳定的PPPoE连接服务。希望本教程对你有所帮助,如果在操作过程中遇到问题,欢迎留言讨论。

相关推荐
sun0077003 小时前
mysql索引底层原理
数据库·mysql
12点一刻5 小时前
搭建自动化工作流:探寻解放双手的有效方案(2)
运维·人工智能·自动化·deepseek
未来之窗软件服务5 小时前
东方仙盟AI数据中间件使用教程:开启数据交互与自动化应用新时代——仙盟创梦IDE
运维·人工智能·自动化·仙盟创梦ide·东方仙盟·阿雪技术观
workflower6 小时前
MDSE和敏捷开发相互矛盾之处:方法论本质的冲突
数据库·软件工程·敏捷流程·极限编程
Tony小周6 小时前
实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
开发语言·数据库·qt
lifallen6 小时前
Paimon 原子提交实现
java·大数据·数据结构·数据库·后端·算法
ajassi20006 小时前
开源 python 应用 开发(三)python语法介绍
linux·python·开源·自动化
TDengine (老段)7 小时前
TDengine 数据库建模最佳实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Elastic 中国社区官方博客7 小时前
Elasticsearch 字符串包含子字符串:高级查询技巧
大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene
Gauss松鼠会7 小时前
GaussDB应用场景全景解析:从金融核心到物联网的分布式数据库实践
数据库·分布式·物联网·金融·database·gaussdb