PPPoE服务搭建与交互流程

2023-12-19 10:48

本文主要是介绍PPPoE服务搭建与交互流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境使用Ubuntu 16.04.5 LTS系统主机,使用apt-get安装pppoe服务端:

$ sudo apt-get install pppoe       
$ pppoe-server -h

PPPoE-Server Version 3.11, Copyright (C) 2001-2009 Roaring Penguin Software Inc.
PPPoE-Server comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License, version 2
or (at your option) any later version.
http://www.roaringpenguin.com

由pppoe-server的-h的帮助信息可见,ubuntu集成的是Roaring Penguin开发的pppoe服务端程序,版本为3.11。通过查看RP的官网,可看到其pppoe服务端已经更新到了3.13版本,源代码可由此下载:https://dianne.skoll.ca/projects/rp-pppoe/download/rp-pppoe-3.13.tar.gz。此处我们仍使用ubuntu集成的3.11版本。


安装完成之后,需要修改三个配置文件,设置pppoe-server工作。


文件1:/etc/ppp/pppoe-server-options,如果此文件不存在,需要手动创建,填写一下三行内容,设置认证方式为CHAP,log文件保存位置/var/log/pppoed.log,log文件的名字可任意指定。 

$ cat /etc/ppp/pppoe-server-options 
auth
require-chap
logfile /var/log/pppd.log

文件2:/etc/ppp/options,此处包含三个配置,为windows客户端指定DNS服务器;禁用PAP认证,打开CHAP认证。

$ cat /etc/ppp/options
# /etc/ppp/options# Specify which DNS Servers the incoming Win95 or WinNT Connection should use
# Two Servers can be remotely configured
ms-dns 192.168.1.1# Don't agree to authenticate using PAP.
-pap# Require the peer to authenticate itself using CHAP [Cryptographic
# Handshake Authentication Protocol] authentication.
+chap

文件3:/etc/ppp/chap-secrets,此处设置CHAP认证方式使用的用户名与密码,以及客户端IP地址。可为不同的客户端指定不同的认证用户名和密码。这里使用*代表所有的客户端使用相同的认证信息。

$ sudo cat /etc/ppp/chap-secrets     
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
test * 123456 * 


至此pppoe服务端配置完成。如果需要转发数据包,还要打开本机的转发选项。

修改配置,重启之后有效
sudo vi  /etc/sysctl.conf

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

临时打开转发,重启后失效:
echo 1 > /proc/sys/net/ipv4/ip_forward


启动PPPoE服务端,指定绑定的接口,本地IP地址,以及为客户端分配的IP起始地址(30.30.3.13),-N指定允许连接的客户端数量:

sudo pppoe-server -I eth3 -L 30.30.3.9 -R 30.30.3.13 -N 10

使用PPPoE客户端连接成功之后,可通过log文件查看:

$ cat /var/log/pppoed.log Using interface ppp0
Connect: ppp0 <--> /dev/pts/9
local  IP address 30.30.3.9
remote IP address 30.30.3.13

查看本地接口信息,与log信息相符,ppp0接口的本地IP为30.30.3.9,远端(PPPoE客户端)的IP地址为30.30.3.13:

$ ip addr6: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:90:27:fe:d0:04 brd ff:ff:ff:ff:ff:ffinet 30.30.3.9/24 brd 30.30.3.255 scope global eth4valid_lft forever preferred_lft forever
16: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN group default qlen 3link/ppp inet 30.30.3.9 peer 30.30.3.13/32 scope global ppp0valid_lft forever preferred_lft forever

使用TCPDUMP抓取PPPoE交互的数据包,流程如下:

 

上图可见,首先是4个PPPoED交互数据包,仅看一下第一个数据包PADI的格式:

其后为典型的PPP协商数据包。LCP协商认证方式与压缩算法等:

客户端的认证过程由3个PPP CHAP数据包完成(我们配置使用CHAP方式认证),PPPoE服务端发送CHAP Challenge数据包到客户端,客户端基于test用户的密码对Challenge数据进行hash计算,将结果返回给服务端,服务端验证一致性,返回认证成功给客户端,即最后一个PPP CHAP报文(Access granted),第二个客户端发往服务端的交互报文携带明文的用户名称(test),存在泄漏风险。

最后看一下IPCP Nak报文,其传输分配给客户端的IP地址(30.30.3.13)与DNS配置信息(192.168.1.1)。

至此初始的交互完成。LCP将一直发送echo/replay数据包检测链路,如下为Echo Reply(10), Echo Request的Code代码为(9):

 

完。

这篇关于PPPoE服务搭建与交互流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/511896

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于