首页> 中国专利> 用于PPPoE透传的方法、PPPoE服务器及电子设备

用于PPPoE透传的方法、PPPoE服务器及电子设备

摘要

本发明公开用于PPPoE透传的方法、PPPoE服务器及电子设备,其中,该方法包括:PPPoE服务器接收终端的拨号请求,并从所述拨号请求中获取用户名和密码;PPPoE服务器利用所述用户名和所述密码向上级运营商拨号,并从上级运营商获取IP地址和DNS,再将所述IP地址和所述DNS返回给终端。该PPPoE服务器执行上述用于PPPoE透传的方法,既能降低小区网络接入商的运维成本,又能使用户获得上级运营商分配的公网IP。

著录项

  • 公开/公告号CN112448878A

    专利类型发明专利

  • 公开/公告日2021-03-05

    原文格式PDF

  • 申请/专利权人 全讯汇聚网络科技(北京)有限公司;

    申请/专利号CN202110133922.X

  • 发明设计人 刘剑英;

    申请日2021-02-01

  • 分类号H04L12/46(20060101);H04L29/06(20060101);H04L29/12(20060101);

  • 代理机构11111 北京市万慧达律师事务所;

  • 代理人黄玉东

  • 地址 100071 北京市丰台区南四环西路186号3区6号楼5层02单元(园区)

  • 入库时间 2023-06-19 10:06:57

说明书

技术领域

本发明涉及网络通信技术领域,尤其涉及用于PPPoE透传的方法、PPPoE服务器及电子设备。

背景技术

小区网络接入商经常需要同时为用户提供多个网络的接入服务,既有自有运营的网络接入服务,也有透传到上级运营商的网络接入服务。其中,自有运营的网络接入服务是指:小区接入商利用其从上级运营商(如电信、联通等)购买的专线带宽自行架设PPPoE接入服务器并为每个用户分配上网账号,用户使用各自的账号通过PPPoE拨入接入服务器,与其他用户共享这条专线的带宽上网;透传到上级运营商的网络接入服务是指:小区接入商将从上级运营商购买的每条PPPoE宽带线路直接提供给用户,以使用户独享这条线路上网。

针对PPPoE透传接入上级运营商的服务需求,目前主要有两种实现方案:

一种方案是修改交换机的VLAN设置,将交换机上相应内网用户对应的网口与接入上级运营商宽带的网口划分到同一个VLAN中,这样用户就可以直接通过PPPoE拨入上级运营商,独享这条线路上网。

另一种方案被称为“代拨”, 如图1所示,即先在接入服务器用从上级运营商购买的PPPoE账号拨通这条宽带线路,并为用户创建与之对应的内网账号,待用户拨入接入服务器后为其分配内网IP,然后将该用户的上网流量单独分流到这条线路,并在内网用户的内网IP和上级运营商分配的公网IP之间做一对一NAT转换,用户即可独享这条线路上网。

第一种方案虽然可以让用户获得完美的上网体验,但小区网络接入商需要根据不同用户的业务需求频繁修改网络拓扑和交换机的VLAN设置,运维工作量大、容易出错,也不利于统一管理。第二种方案中,虽然小区网络接入商的运维简单,也方便统一管理,但用户无法获得上级运营商分配的公网IP,使得部分需要公网IP的功能可能无法支持,同时也容易使用户对线路的独享性产生怀疑。

发明内容

本发明的目的在于提供用于PPPoE透传的方法、PPPoE服务器及电子设备,既能降低小区网络接入商的运维成本,又能使用户获得上级运营商分配的公网IP。

为了实现上述目的,本发明提供如下技术方案:

一种用于PPPoE透传的方法,包括:

PPPoE服务器接收终端的拨号请求,并从所述拨号请求中获取用户名和密码;

PPPoE服务器启动父pppd进程,所述父pppd进程用于认证拨号请求中的用户名和密码;

当所述父pppd进程识别到所述用户名为外网账号时,PPPoE服务器创建子pppd进程,利用所述子pppd进程基于所述用户名和所述密码向上级运营商拨号以获取IP地址和DNS;

PPPoE服务器将所述IP地址和所述DNS返回给终端。

优选地,PPPoE服务器的认证模式设为PAP模式。

较佳地,PPPoE服务器创建子pppd进程,并利用所述子pppd进程向上级运营商拨号获取IP地址和DNS,再返回给终端的方法包括:

当所述父pppd进程识别到所述用户名为外网账号时,PPPoE服务器创建子pppd进程,同时将所述用户名和所述密码发送给所述子pppd进程;

所述子pppd进程利用所述用户名和所述密码向上级运营商发起认证请求,在认证成功后向所述父pppd进程返回认证成功标识,同时将上级运营商分配的IP地址和DNS转发给父pppd进程;

所述父pppd进程向所述终端发送上级运营商认证成功的响应信息,同时将上级运营商分配的IP地址和DNS发送给终端。

进一步地,当所述子pppd进程利用所述用户名和所述密码向上级运营商认证失败时,向所述父pppd进程返回上级运营商认证失败标识;

所述父pppd进程向所述终端发送上级运营商认证失败的响应信息。

优选地,当所述父pppd进程识别到所述用户名为外网账号时,父pppd进程还创建通信管道;

所述通信管道用于子pppd进程向父pppd进程发送上级运营商分配的IP地址和DNS。

较佳地,PPPoE服务器将所述IP地址和所述DNS返回给终端后,接入服务器创建一对配合使用的第一虚拟网卡和第二虚拟网卡,所述第一虚拟网卡用于父pppd进程与终端通信,所述第二虚拟网卡用于子pppd进程与上级运营商通信,且所述第一虚拟网卡和所述第二虚拟网卡之间建立通信并进行数据转发。

具体地,利用修改接入服务器的系统内核、编写接入服务器的内核模块或策略路由的方式实现所述第一虚拟网卡和所述第二虚拟网卡之间的数据转发。

优选地,当所述父pppd进程识别所述用户名不是外网账号时,进一步判断所述用户名和密码能否通过内网账号验证;

若能通过内网账号验证,则向终端返回PPPoE服务器分配的IP地址和DNS;

若不能通过内网账号验证,则向终端返回内网认证失败的响应信息。

一种PPPoE服务器,运行于接入服务器上,所述PPPoE服务器包括第一认证模块和第二认证模块,其中,所述第一认证模块用于在接收终端的拨号请求后启动父pppd进程,并利用所述父pppd进程从所述拨号请求中获取用户名和密码,以及利用所述父pppd进程将IP地址和DNS返回给终端;

所述第二认证模块用于利用当所述父pppd进程识别到所述用户名为外网账号时创建子pppd进程,利用所述子pppd进程基于所述用户名和所述密码向上级运营商拨号,并从上级运营商获取IP地址和DNS。

一种电子设备,所述电子设备包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述用于PPPoE透传的方法。

与现有技术相比,本发明提供的用于PPPoE透传的方法、PPPoE服务器及电子设备具有以下有益效果:

本发明提供的用于PPPoE透传的方法,将传统的“代拨”方案中前置的向上级运营商的PPPoE拨号操作改为后置,当终端使用相应的透传账号(或外网账号)拨入接入服务器时,PPPoE服务器从终端的拨号请求中获取用户名和密码,然后利用用户名和密码向上级运营商拨号,并从上级运营商获取IP地址和DNS,再将IP地址和DNS返回给终端,既可以在不修改网络拓扑或VLAN设置的情况下让用户直接拨入上级运营商,又可以在接入服务器上对内网用户进行统一管理。

本发明提供的PPPoE服务器,运行在接入服务器上,执行上述用于PPPoE透传的方法,既能降低小区网络接入商的运维成本,又能使用户获得上级运营商分配的公网IP。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为现有技术中实现PPPoE透传的方法执行过程示意图;

图2为本发明实施例用于PPPoE透传的方法流程示意图;

图3为本发明实施例用于PPPoE透传的方法执行过程示意图;

图4为本发明实施例中一种电子设备的模块结构示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。

实施例一

请参阅图2,一种用于PPPoE(Point-to-Point Protocol Over Ethernet)透传的方法,包括:

PPPoE服务器接收终端的拨号请求,并从拨号请求中获取用户名和密码;

PPPoE服务器利用用户名和密码向上级运营商拨号,并从上级运营商获取IP地址和DNS,再将IP地址和DNS返回给终端。

本发明提供的用于PPPoE透传的方法,将传统的“代拨”方案中前置的向上级运营商的PPPoE拨号操作改为后置,当终端使用相应的透传账号(或外网账号)拨入接入服务器时,PPPoE服务器从终端的拨号请求中获取用户名和密码,然后利用用户名和密码从上级运营商获取IP地址和DNS,再将IP地址和DNS返回给终端,既可以在不修改网络拓扑或VLAN设置的情况下让用户直接拨入上级运营商,又可以在接入服务器上对内网用户进行统一管理。

其中,将接入服务器上的PPPoE服务器的认证模式配置为PAP(密码认证协议)模式,从而强制终端使用明文密码进行PPPoE认证。在具体实施中,在PPPoE服务器启动pppd(点对点守护协议进程)所使用的options配置文件中增加“require-pap”选项,以强制PPPoE终端使用PAP模式进行认证,从而确保了在后续认证过程中终端提交的密码为明文密码,以确保PPPoE服务器可以获取到终端提交的拨号请求中获取用户名和密码。

请参阅图3,PPPoE服务器利用用户名和密码从上级运营商获取IP地址和DNS,并返回给终端的方法包括:

PPPoE服务器接收到终端的拨号请求后启动父pppd进程,父pppd进程用于认证拨号请求中的用户名和密码;

当父pppd进程识别到用户名为外网账号时,PPPoE服务器创建子pppd进程,同时将用户名和密码发送给子pppd进程;

子pppd进程利用用户名和密码向上级运营商发起认证请求,在认证成功后所述父pppd进程返回认证成功标识,同时将上级运营商分配的IP地址和DNS并转发给父pppd进程;

父pppd进程向终端发送上级运营商认证成功的响应信息,同时将上级运营商分配的IP地址和DNS发送给终端。

具体实施中,可以通过修改pppd软件的代码文件auth.c的方式在check_passwd函数中以下配置PPPoE服务器关于父pppd进程和子pppd进程的操作方式为:当父pppd进程识别到用户名为外网账号时,则PPPoE服务器调用fork创建子pppd进程,同时将用户名和密码发送给所述子pppd进程,子pppd进程与外网账号一一对应,然后子pppd进程执行pppd任务使用exec系统调用的方式向上级运营商拨号认证请求以获取上级运营商分配的IP地址和DNS,其中,子pppd进程向上级运营商发起的拨号认证请求中包括以下信息:连接上级运营商宽带线路的物理网卡名称“eth1”,与拨号成功后与上级运营商通信的PPP虚拟网卡名称“ppp2”,终端提交的用户名“user1”,终端提交的明文密码“pass1”。

为了让子pppd进程能将向上级运营商拨号的认证状态以及认证成功返回的IP地址、DNS等信息传递给父pppd进程,还需要在父pppd进程识别到所述用户名为外网账号时,PPPoE服务器在调用fork之前先使用pipe系统调用创建通信管道,对应于父pppd进程和一个子pppd进程之间的通信,当有多个子pppd进程时,则有多个与子pppd进程一一对应的通信管道。一条通信管道由两个文件描述符组成,分别对应于通信管道的读端和写端,并且该通信管道的读写是单向的,即从子pppd进程向父pppd进程发送数据,并且数据发送使用FIFO的方式。之后父pppd进程从通信管道的读端读取子pppd进程返回的认证成功标识以及从上级运营商获取的IP地址、DNS等信息,将上述信息解析并转换成终端可以识别的数据格式,以将认证成功的响应信息以及上级运营商分配的IP地址、DNS等参数发送给终端,这样一来终端就直接分配得到了上级运营商的IP地址和DNS等参数,可以在不修改网络拓扑或VLAN设置的情况下让用户直接拨入上级运营商,同时降低了维护难度。

此外,当子pppd进程利用用户名和密码向上级运营商认证失败时,向父pppd进程返回上级运营商认证失败标识;父pppd进程向终端发送上级运营商认证失败的响应信息,数据传输的过程与上述认证成功时的数据传输过程相同,在此不再赘述。

进一步地,PPPoE服务器将IP地址和DNS返回给终端后,接入服务器创建一对配合使用的第一虚拟网卡和第二虚拟网卡,其中,第一虚拟网卡用于父pppd进程与终端通信,第二虚拟网卡用于子pppd进程与上级运营商通信,且第一虚拟网卡和第二虚拟网卡之间建立通信并进行数据转发,以实现终端与上级运营商的数据连接,其中,第一虚拟网卡和第二虚拟网卡都为PPP(Point to Point Protocol)虚拟网卡。

为了实现在上述父pppd进程和子pppd进程的两个PPP虚拟网卡之间的数据转发,可以选用以下方案:

(1) 修改接入服务器的Linux系统内核中的ppp驱动程序——将原有的将第一虚拟网卡和第二虚拟网卡接收到的数据包送入内核协议栈的行为改为:从第一虚拟网卡接收到的数据包直接从第二虚拟网卡发送出去,从第二虚拟网卡接收到的数据包直接从第一虚拟网卡发送出去。

(2) 编写接入服务器的Linux系统内核模块——向内核注册一个packet_typehook,其hook函数中,对接收到的任一虚拟网卡的数据包调用dev_queue_xmit从另一虚拟网卡发出,然后丢弃数据包以防止送入内核协议栈。

(3) 利用策略路由实现——借助Linux系统的“ip rule”命令将任一虚拟网卡接收的数据包转发到另一虚拟网卡,例如:

ip rule add iif ppp1 lookup 200

ip rule add iif ppp2 lookup 100

ip route add default dev ppp1 table 100

ip route add default dev ppp2 table 200

以上操作都完成后,终端就可以像直接拨入上级运营商一样使用上级运营商分配的IP地址上网了,直至用户断开连接或子pppd进程退出。

除此之外,PPPoE服务器接收终端的拨号请求,并从拨号请求中获取用户名和密码后,若父pppd进程识别用户名不是外网账号,进一步判断该用户名和密码能否通过内网账号验证;若能通过内网账号验证,则向终端返回认证成功的响应信息以及PPPoE服务器分配的IP地址和DNS;若不能通过内网账号验证,则向终端返回内网认证失败的响应信息。

本公开实施例中的终端可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端,终端上安装有用于PPPoE透传的客户端。

实施例二

一种PPPoE服务器,该PPPoE服务器运行于接入服务器上,且PPPoE服务器包括第一认证模块和第二认证模块,其中,第一认证模块用于在接收终端的拨号请求后启动父pppd进程,并利用父pppd进程从拨号请求中获取用户名和密码,以及利用父pppd进程将IP地址和DNS返回给终端;第二认证模块用于利用当父pppd进程识别到用户名为外网账号时创建子pppd进程,利用子pppd进程基于用户名和密码向上级运营商拨号,并从上级运营商获取IP地址和DNS。

本发明提供的PPPoE服务器,采用上述实施例一中的用于PPPoE透传的方法,既能降低小区网络接入商的运维成本,又能使用户获得上级运营商分配的公网IP。与现有技术相比,本发明实施例提供的PPPoE服务器的有益效果与上述实施例一提供的用于PPPoE透传的方法的有益效果相同,且PPPoE服务器中的其他技术特征与上一实施例方法公开的特征相同,在此不做赘述。

实施例三

一种电子设备,电子设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行前述实施例一所述的用于PPPoE透传的方法。

下面参考图4,其示出了适于用来实现本公开实施例的电子设备的结构示意图。图4示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图4所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)中的程序或者从存储装置加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM中,还存储有电子设备操作所需的各种程序和数据。处理装置、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。

通常,以下系统可以连接至I/O接口:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置;包括例如磁带、硬盘等的存储装置;以及通信装置。通信装置可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种系统的电子设备,但是应理解的是,并不要求实施或具备所有示出的系统。可以替代地实施或具备更多或更少的系统。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装,或者从ROM被安装。在该计算机程序被处理装置执行时,执行本公开实施例的方法中限定的上述功能。

本发明提供的电子设备,采用上述实施例一中的用于PPPoE透传的方法,既可以在不修改网络拓扑或VLAN设置的情况下让用户直接拨入上级运营商,又可以在接入服务器上对内网用户进行统一管理。与现有技术相比,本发明实施例提供的电子设备的有益效果与上述实施例一提供的用于PPPoE透传的方法的有益效果相同,且该电子设备中的其他技术特征与上一实施例方法公开的特征相同,在此不做赘述。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、系统或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。

或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第二认证模块还可以被描述为“利用用户名和密码从上级运营商获取IP地址和DNS的模块”。

应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号