配置PPPoE多播绑定vlanID并开启IPV6

准备工作

确保你的系统已安装ppprp-pppoe包:

sudo apt-get install pppoe ppp

创建VLAN接口

假设你有两个VLAN ID,分别为100和200。我们首先创建VLAN接口eth0.100和eth0.200。

sudo ip link add link eth0 name eth0.100 type vlan id 100
sudo ip link add link eth0 name eth0.200 type vlan id 200# 启用VLAN接口
sudo ip link set up dev eth0.100
sudo ip link set up dev eth0.200

配置文件

首先,在/etc/ppp/peers/目录中为每个PPPoE连接创建一个配置文件。假设你有两个PPPoE账号,可以创建两个文件:provider1provider2

/etc/ppp/peers/provider1

plugin rp-pppoe.so
eth0.100  # 使用VLAN接口
user "pppoe账号_1"
noauth
persist
usepeerdns
+ipv6
noipdefault
nodefaultroute  # 不设置默认路由

/etc/ppp/peers/provider2

plugin rp-pppoe.so
eth0.100  # 使用VLAN接口
user "pppoe账号_2"
noauth
persist
usepeerdns
+ipv6
noipdefault
nodefaultroute  # 不设置默认路由

不设置默认路由是为了不影响管理口的网络连接。如果要设置负载均衡请注释该选项。或者有更好的办法可以在评论区留言。互相学习。

pppoe密码文件

/etc/ppp/chap-secrets/etc/ppp/pap-secrets文件中添加你的PPPoE账号和密码。

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
"pppoe账号_1" * "pppoe密码_1"
"pppoe账号_2" * "pppoe密码_2"

也可以将密码直接写进/etc/ppp/peers/provider*的文件里

参考:
nic-enp6s0.104  # 确保这个接口存在
user "pppoe账号"
password "pppoe密码"

启动脚本

以下是一个简化后的脚本,直接使用已存在的VLAN接口进行PPPoE连接

#!/bin/bash# 定义连接名称数组
CONNECTIONS=("provider1" "provider2")# 启动每个PPPoE连接
for conn in "${CONNECTIONS[@]}"; dopppd call $conn nodetach &
done# 等待所有连接启动
sleep 5  # 等待连接建立# 检查每个连接是否启动成功
for conn in "${CONNECTIONS[@]}"; doif ip a | grep -q "ppp"; thenecho "$conn connected successfully!"elseecho "Failed to connect $conn"fi
done#!/bin/bash# 定义连接名称数组
CONNECTIONS=("provider1" "provider2")# 启动每个PPPoE连接
for conn in "${CONNECTIONS[@]}"; dopppd call $conn nodetach &
done# 等待所有连接启动
sleep 5  # 等待连接建立# 检查每个连接是否启动成功
for conn in "${CONNECTIONS[@]}"; doif ip a | grep -q "ppp"; thenecho "$conn connected successfully!"elseecho "Failed to connect $conn"fi
done

验证

可以通过ifconfig 或者 ip r 来看是否已经拨号成功且已经获取到 IPV6 的地址

停止拨号

两种方式任选其一都可以。目前尚未考虑平滑停止的问题。

#!/bin/bash# 定义PPPoE配置文件名称数组
CONFIG_FILES=("provider_1" "provider_2")# 停止每个PPP连接
for config in "${CONFIG_FILES[@]}"; dosudo poff $config
done# 或者通过进程名来停止所有pppd连接
# ps aux | grep 'pppd call' | grep -v grep | awk '{print $2}' | xargs sudo kill

使用kill命令时要小心,确保只杀掉pppd进程,避免误杀其他进程。

提醒事项

  • 确保你的VLAN接口已经正确创建和启动。
  • 在配置文件中,将eth0.100和eth0.200替换为你的实际VLAN接口名称和ID。
  • 确保所有PPPoE连接都支持IPv6。

这个脚本应该能帮助你在Linux系统上更方便地实现支持VLAN ID的PPPoE多拨账号的连接,并且不设置默认路由和开启IPv6支持。如果仍有问题,请检查日志文件(/var/log/messages/var/log/ppp.log),以获取更多调试信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/19207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自学新标日第十六课(完结)

第十五课 单词 单词假名声调词义ボート1小船ベンチ1长椅、长凳市役所しやくしょ2市政府携帯電話けいたいでんわ5手机禁煙きんえん0禁止吸烟風邪かぜ0感冒熱ねつ2发烧睡眠すいみん0睡眠お風呂おふろ2澡堂、浴室薬局やっきょく0药…

C++ 进阶(3)虚函数表解析

个人主页:仍有未知等待探索-CSDN博客 专题分栏:C 请多多指教! 目录 一、虚函数表 二、单继承(无虚函数覆盖) 继承关系表: 对于实例:derive d 的虚函数表: 对于实例:b…

QT系列教程(5) 模态对话框消息传递

模态对话框接受和拒绝消息 我们创建一个模态对话框,调用exec函数后可以根据其返回值进行不同的处理,exec的返回值有两种,Qt的官方文档记录的为 QDialog::Accepted QDialog::RejectedAccepted 表示接受消息, Rejected表示拒绝消息…

如何将前端项目打包并部署到不同服务器环境

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈(笔记是根据b站尚硅谷的前端讲师【张天禹老师】整理的,用于自己复盘,有需要学习的可以去b站学习原版视频&…

AI-driven Robotics专栏目录

本文是机器人学和人工智能相关专题文章的目录,记录了作者在AI和Robotics方面的学习心得,欢迎参与互动讨论,一起学习进步。作者很懒,但文章持续更新中… ROS相关 建议按顺序阅读下列文章 基于Docker的ROS开发 ROS2基础编程 ROS…

wxPython Demo大全系列:ActivityIndicator控件分析

一、ActivityIndicator介绍 wx.ActivityIndicator 控件是 wxPython 中用于显示活动指示器的控件,通常用于指示程序正在执行某些后台任务或操作。它在用户界面中以动画的形式表现出活动状态,让用户知道应用程序正在进行处理而不是被挂起。 主要特点 可视…

数据源不同?奥威BI软件是这么做的

面对数据源不同的情况,BI(商业智能)软件如奥威BI软件通常通过一系列技术和方法来实现数据的整理。以下以奥威BI软件为例,详细解释其如何整理不同数据源的数据: 数据收集: 爬虫技术:奥威BI软件…

eNSP学习——理解OSPF的Router-ID

目录 相关命令 原理概述 实验内容 实验目的 实验步骤 实验拓扑 实验编址 具体步骤 1、验证Router-ID选举机制 2、基本配置 3、理解OSPF的Router-ID 加深理解 相关命令 [R1]router id 1.1.1.1 //手动强制指定Router-ID[R1]int g0/0/0 [R1-GigabitEthernet0/0/0]…

透视AI技术:探索折射技术在去衣应用中的奥秘

引言: 随着人工智能技术的飞速发展,其在图像处理和计算机视觉领域的应用日益广泛。其中,AI去衣技术作为一种颇具争议的应用,引发了广泛的讨论和关注。本文将深入探讨折射技术在AI去衣中的应用及其背后的原理。 一、AI去衣技术简介…

Java进阶指南:高级面试问题与精辟解答(二)

Java 面试问题及答案 1. 什么是Java中的多线程?请简述Java中实现多线程的两种方式。 答案: Java中的多线程指的是程序能够同时执行多个任务的能力。Java提供了两种主要的方式来实现多线程: 继承Thread类:创建一个继承自Thread类…

精通Java异常机制,写出高质量代码

作为一名Java开发人员,异常处理是一个无法回避的话题。无论你是初学者还是老手,精通异常处理对于写出高质量、可维护的代码至关重要。今天,我将与大家分享关于Java异常处理的一切,助你在代码质量的道路上突飞猛进! 一、什么是异常…

java小技能: 数字和字母组合的验证码图片(生成验证码字符并加上噪点,干扰线)

文章目录 引言I 验证码的作用1.1 验证使用计算机的是一个人,而非计算机程序。1.2 提供一个很短的时间窗的一次性密码。II 数字和字母组合的验证码图片2.1 获取验证码图片2.2 生成验证码字符并加上噪点,干扰线see also引言 世界上没有绝对的信息安全,但是有防范得好和坏的分…

打造云计算时代的仿真软件

2024年5月25日,北京云道智造科技有限公司(下称“云道智造”)在深圳成功举办了2024新品发布会暨用户大会。来自全国各地的近500位客户和合作伙伴代表齐聚一堂,共同见证了云道智造新产品的隆重发布,交流分享了仿真领域的…

C++到底是如何从代码到游戏的?

很难用一篇回答说明怎样从C代码一路写出游戏,中间涉及的知识和技术太多了。 但是换一个角度看,从基本的C代码开始写出任何东西都不至于难到无法理解的程度,任何复杂的软件都是有迹可循的。刚好我有一些资料,是我根据网友给的问题…

ehcache3的使用

springboot使用 启动类EnableCaching 方法使用 Cacheable(cacheNames “empCache”,key “#id”) 钩子实现: EnableCaching Configuration public class CacheConfig {/*** 配置缓存 */Beanpublic CustomerCache redisCache(){CustomerCache cache new Custo…

一文带你搞懂Java-final关键字

引言 阅读《Java并发编程实战》的基础知识篇发现java中的final作用实在是太大了,故结合实例深入剖析final关键字。 基础 修饰类 final修饰类时意味着该类不能被继承,所有方法都将为final,所有在final类中给任何方法添加final是没有任何意义的。 修饰方法 priv…

Java SE 深入总结:核心概念与实践

Java SE(Standard Edition)是Java平台的核心,为开发者提供了丰富的API和工具来构建各种桌面和移动应用。本文将深入探讨Java SE的核心概念,并通过代码示例来展示这些概念的应用。 1. 面向对象编程(OOP) J…

2024-05-29 blue-VH-driver-对外接口的并行调用-设计与思考

摘要: VH的driver的对外接口, 要做到可以并行,也就是两个不同的线程,分别调用,不能互相阻塞。 本文记录对其的思考和设计。 上下文: 2024-05-28 blue-VH-driver-需求分析及问题分析-CSDN博客 2024-05-27 blue-vh-问题点-CSDN博客 2024-05…

Wpf 使用 Prism 实战开发Day28

首页汇总方块点击导航功能 点击首页汇总方块的时候,跳转到对应的数据页面 step1: 在IndexViewModel 中,给TaskBar 里面Target 属性,赋上要跳转的页面 step2: 创建导航事件命令和方法实现 step3: 实现导航的逻辑。通过取到 IRegionManager 的…

免费,Python蓝桥杯等级考试真题--第17级(含答案解析和代码)

Python蓝桥杯等级考试真题–第17级 一、 选择题 答案:B 解析:(x-y)%25%21,故答案为B。 答案:B 解析:x16,所以i的值为range(1,16),取值为1-15&…