CN115499410A - 基于Linux的NAT穿透方法、装置、设备及存储介质 - Google Patents

基于Linux的NAT穿透方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115499410A
CN115499410A CN202210906029.0A CN202210906029A CN115499410A CN 115499410 A CN115499410 A CN 115499410A CN 202210906029 A CN202210906029 A CN 202210906029A CN 115499410 A CN115499410 A CN 115499410A
Authority
CN
China
Prior art keywords
data
target
pppoe
nat
target data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210906029.0A
Other languages
English (en)
Other versions
CN115499410B (zh
Inventor
林辉
于光远
王雪晴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202210906029.0A priority Critical patent/CN115499410B/zh
Publication of CN115499410A publication Critical patent/CN115499410A/zh
Application granted granted Critical
Publication of CN115499410B publication Critical patent/CN115499410B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请是关于一种基于Linux的NAT穿透方法、设备及存储介质,具体涉及网络通信技术领域。所述方法包括:当检测到所述目标网络设备PPPOE pass‑through使能时,将所述目标网络设备的PPPOE WAN的二层接口添加至LAN group;在所述目标网络设备的Linux内核上挂载NAT穿透模块;当接收到目标数据时,所述NAT穿透模块在所述目标数据的类型满足穿透条件时,将目标数据发送至网桥,以实现NAT穿透。上述方案在Linux内核中加载NAT穿透处理模块,以识别不同的数据流并根据需要接收或转发数据,从而实现PPPoE NAT穿透,将PPPoE NAT穿透放在Linux内核中执行,降低了对CPU资源的占用率的同时提高了数据转发效率。

Description

基于Linux的NAT穿透方法、装置、设备及存储介质
技术领域
本发明涉及网络通信技术领域,具体涉及一种基于Linux的NAT穿透方法、装置、设备及存储介质。
背景技术
PPPoE拨号是当前ISP提供的一种主要的DSL接入方式。PPPOE包含通常包括发现阶段和会话阶段。
PPPoE的NAT穿透是一种能够满足家庭用户拥有独立公网IP的技术,家庭用户在拥有独立公网IP地址之后,可以将个人计算机当做服务器在公网上使用。只需要一个网关路由器,就可以使用多个账号获得多个公网IP地址,即一个网关路由器绑定多个公网IP地址,而不再需要多个网关路由器来绑定多个公网IP地址。现在通常是通过基于Linux系统的产品技术(例如使用集成开源库rp-pppoe的pppoe-relay)来实现NAT穿透的,这种方式需要使用Linux应用层获取数据,并通过CPU进行处理。
上述方案,对于每一个PPPoE会话都要在用户空间进行处理,数据转发效率较低且需要占用大量的CPU资源。
发明内容
本申请提供了基于Linux的NAT穿透方法、装置、设备及存储介质,降低了对CPU资源的占用率的同时提高了数据转发效率,该技术方案如下。
一方面,提供了一种基于Linux的NAT穿透方法,所述方法包括:
当检测到所述目标网络设备PPPOE pass-through使能时,将所述目标网络设备的PPPOE WAN的二层接口添加至LAN group;
在所述目标网络设备的Linux内核上挂载NAT穿透模块;
当接收到目标数据时,所述NAT穿透模块在所述目标数据的类型满足穿透条件时,将目标数据发送至网桥,以实现NAT穿透。
又一方面,提供了一种基于Linux的NAT穿透装置,所述装置包括:
接口添加单元,用于当检测到所述目标网络设备PPPOE pass-through使能时,将所述目标网络设备的PPPOE WAN的二层接口添加至LAN group;
挂载单元,在所述目标网络设备的Linux内核上挂载NAT穿透模块;
数据转发单元,用于当接收到目标数据时,所述NAT穿透模块在所述目标数据的类型满足穿透条件时,将目标数据发送至网桥,以实现NAT穿透。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为从环地址发送的数据包时,所述NAT穿透模块将所述目标数据传输回所述Linux内核的协议栈进行处理。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据不为LANgroup数据包时,将所述目标数据传输回所述Linux内核的协议栈进行处理。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为LANgroup数据包,但不为PPPoE WAN链路层接口的数据时,将所述目标数据发送至网桥处理。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为PPPoEWAN链路层接口的数据时,判断所述目标数据是否为目标协议类型的PPPoE数据;
当所述目标数据不为目标协议类型的PPPoE数据,将所述目标数据发送至所述Linux内核的协议栈进行处理。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为目标协议类型的PPPoE数据时,判断所述PPPoE数据是否为发送至NAT穿透设备的数据;
当所述PPPoE数据不为发送至NAT穿透设备的数据,将所述目标数据路由传输至WAN或网关。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为目标协议类型的PPPoE数据,且所述PPPoE数据为发送至NAT穿透设备的数据,将所述目标数据发送至网桥。
又一方面,提供了一种网络设备,所述网络设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述的基于Linux的NAT穿透方法。
又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的基于Linux的NAT穿透方法。
再一方面,提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。网络设备的处理器从计算机可读存储介质中读取所述计算机指令,处理器执行所述计算机指令,使得所述网络设备执行上述基于Linux的NAT穿透方法。
本申请提供的技术方案可以包括以下有益效果:
在安装有Linux的目标网络设备中,当检测到目标网络设备中开启PPPOE pass-through,也就是PPPOE pass-through使能时,则可以将目标网络设备的PPPOE WAN的二层接口添加至LAN group,且Linux的内核挂在上NAT穿透模块;此时目标网络设备接收到目标数据时,可以通过内核上的NAT穿透模块对目标数据进行处理,并在目标数据的类型满足穿透条件是将目标数据发送至网桥,从而实现NAT穿透。上述方案,基于PPPOE协议,在Linux内核中加载NAT穿透处理模块,以识别不同的数据流并根据需要接收或转发数据,从而实现PPPoE NAT穿透,将PPPoE NAT穿透放在Linux内核中执行,降低了对CPU资源的占用率的同时提高了数据转发效率。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种家庭网络系统的结构示意图。
图2是根据一示例性实施例示出的一种基于Linux的NAT穿透方法的方法流程图。
图3是根据一示例性实施例示出的一种基于Linux的NAT穿透方法的方法流程图。
图4示出了本申请实施例涉及的一种数据转发处理流程图。
图5示出了本申请实施例涉及的通过Linux+PPPoE协议实现NAT穿透的流程图。
图6示出了本申请实施例涉及的一种基于Linux的NAT穿透装置。
图7是根据本申请一示例性实施例提供的一种网络设备示意图。
具体实施方式
下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应理解,在本申请的实施例中提到的“指示”可以是直接指示,也可以是间接指示,还可以是表示具有关联关系。举例说明,A指示B,可以表示A直接指示B,例如B可以通过A获取;也可以表示A间接指示B,例如A指示C,B可以通过C获取;还可以表示A和B之间具有关联关系。
在本申请实施例的描述中,术语“对应”可表示两者之间具有直接对应或间接对应的关系,也可以表示两者之间具有关联关系,也可以是指示与被指示、配置与被配置等关系。
本申请实施例中,“预定义”可以通过在设备(例如,包括终端设备和网络设备)中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本申请对于其具体的实现方式不做限定。
在对本申请所示的各个实施例进行说明之前,首先对本申请涉及到的几个概念进行介绍。
1)PPPoE
PPPoE(Point-to-Point Protocol Over Ethernet,以太网上的点对点协议),是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。由于协议中集成PPP协议,所以实现出传统以太网不能提供的身份验证、加密以及压缩等功能,也可用于缆线调制解调器(cable modem)和数字用户线路(DSL)等以以太网协议向用户提供接入服务的协议体系。
2)内网穿透
内网穿透也即NAT穿透,进行NAT穿透是为了使具有某一个特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机。下面就相互通信的主机在网络中与NAT设备的相对位置介绍内网穿透方法。NAT是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。
图1是根据一示例性实施例示出的一种家庭网络系统的结构示意图。该系统包括终端120以及网关设备110。
可选的,该网关设备110在本申请中是具有Linux系统内核的Linux家庭网关。
Linux家庭网关数据通常可分为三种类型:转发数据(LAN到LAN、LAN到Wan、Wan到LAN);本地数据(网关内部发送和接收的数据);加速数据(为了提高性能,网关产品通常集成软件和硬件加速模块来加速数据转发,而无需通过Linux协议栈)。
在本申请中,为了实现PPPoE协议下的NAT穿透,结合PPPoE NAT穿透特性,支持NAT穿透特性的网关数据需要进一步细化为通用的LAN/WAN转发数据、NAT穿透设备转发数据、NAT穿透设备的PPPoE拨号协议数据、网关发送数据、网关接收数据和加速数据。
可选的,在本申请实施例中,该Linux家庭网关可以是具有NAT穿透功能的家庭网关设备。以该Linux家庭网关中的家庭路由器为例,在家庭路由器中开启NAT穿透功能的方法如下:
1、请确保路由器的WAN端已连上网络,可成功访问Internet。
2、进入路由器的管理页面,选择左侧列表中的“外部网络WAN”--“NATPassthrough”。
3、只要“启用”或“禁用”你需要或禁止进行的NAT穿透功能。
可选的,该终端可以是具有数据处理功能以及网络通信功能的终端设备,该终端可以包括一个终端,也可以包括多个终端,本申请实施例对该终端的数量不设限制。该终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等具有数据处理器以及网络通信组件的终端设备,但不局限于此。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网,但也可以是其他任何网络,包括但不限于局域网、城域网、广域网、移动、有限或无线网络、专用网络或者虚拟专用网络的任何组合。在一些实施例中,使用包括超文本标记语言、可扩展标记语言等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层、传输层安全、虚拟专用网络、网际协议安全等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
图2是根据一示例性实施例示出的一种基于Linux的NAT穿透方法的方法流程图。该方法由网络设备执行,该网络设备可以是如图1中所示的家庭网络系统中的网关设备110。如图2所示,该基于Linux的NAT穿透方法可以包括如下步骤:
步骤201,当检测到该目标网络设备PPPOE pass-through使能时,将该目标网络设备的PPPOE WAN的二层接口添加至LAN group。
在本申请实施例中,为了实现Linux的NAT穿透,首要满足的条件则是目标网络设备处于PPPOE pass-through使能状态,此时目标网络设备开启了NAT穿透功能,才可以使得如图1所示的家庭网络系统中的终端拥有公网IP,并可以与公网中的其他设备进行通讯。
步骤202,在该目标网络设备的Linux内核上挂载NAT穿透模块。
而在现有技术中,为了实现NAT穿透,通常是通过基于Linux系统的产品技术(例如使用集成开源库rp-pppoe的pppoe-relay)来实现NAT穿透的,这种方式需要使用Linux应用层获取数据处理,CPU的开销非常大,导致产品性能下降。
而在本申请实施例中,当检测到目标网络设备PPPOE pass-through使能,也就是开启了NAT穿透功能后,则直接将目标网络设备的Linux内核上挂载NAT穿透模块,且该NAT穿透模块用于完成协议和负载数据的接收和转发。
进一步的,该NAT穿透模块实际上是用于对NAT穿透数据进行筛选,由于在步骤201中,在目标网络设备PPPOE pass-through使能时,将该目标网络设备的PPPOE WAN的二层接口添加至LAN group。若不对NAT穿透数据进行筛选,则非穿透数据也会被网桥进行处理,导致数据异常和业务操作异常。
步骤203,当接收到目标数据时,该NAT穿透模块在该目标数据的类型满足穿透条件时,将目标数据发送至网桥,以实现NAT穿透。
而由于Linux系统中挂在的NAT穿透模块,在接收到目标数据时,则NAT穿透模块会对目标数据的类型进行识别,并在目标数据的类型满足穿透条件,也就是目标数据为NAT穿透数据时,将目标数据发送到网桥以实现NAT穿透。
上述方案中,NAT穿透处理模块完成协议和负载数据的接收和转发处理,它是本申请中的关键模块。该模块充分地考虑了Linux网桥和PPPoE拨号的特点,合理处理网关数据。将PPPoE WAN链路层接口加入LAN组,不会影响网关发送数据和加速数据处理。因此,NAT穿透处理模块需要能够很好的处理:网关接收数据、NAT穿透设备LAN/WAN转发数据、通用的LAN/WAN转发数据和NAT穿透的PPPoE拨号协议数据这四类数据,才能确保家庭网关正常工作。
综上所述,在安装有Linux的目标网络设备中,当检测到目标网络设备中开启PPPOE pass-through,也就是PPPOE pass-through使能时,则可以将目标网络设备的PPPOEWAN的二层接口添加至LAN group,且Linux的内核挂在上NAT穿透模块;此时目标网络设备接收到目标数据时,可以通过内核上的NAT穿透模块对目标数据进行处理,并在目标数据的类型满足穿透条件是将目标数据发送至网桥,从而实现NAT穿透。上述方案,基于PPPOE协议,在Linux内核中加载NAT穿透处理模块,以识别不同的数据流并根据需要接收或转发数据,从而实现PPPoE NAT穿透,将PPPoE NAT穿透放在Linux内核中执行,降低了对CPU资源的占用率的同时提高了数据转发效率。
图3是根据一示例性实施例示出的一种基于Linux的NAT穿透方法的方法流程图。该方法由网络设备执行,该网络设备可以是如图1中所示的家庭网络系统中的网关设备110。如图3所示,该基于Linux的NAT穿透方法可以包括如下步骤:
步骤301,当检测到该目标网络设备PPPOE pass-through使能时,将该目标网络设备的PPPOE WAN的二层接口添加至LAN group。
在目标网络设备的PPPOE pass-through使能时,则代表着目标网络设备中的NAT穿透功能已经开启,此时可以直接将PPPOE WAN的二层接口(例如:ATM接口、PTM接口和上行的ETH接口等)添加至LAN group,以便通过网桥转发NAT穿透数据。
可选的,在检测到目标网络设备的PPPOE pass-through使能时,则目标网络设备可以配置启动PPPoE WAN连接,此时目标网络设备中的应用模块将通过Linux命令brctl将该PPPoE WAN连接的链路层接口添加到LAN组(即LAN group),以便通过网桥转发NAT穿透数据。
可选的,如果检测到PPPOE pass-through变换为未使能状态,则说明PPPoE NAT穿透功能关闭,WAN的链路层接口也可以Linux命令brctl从LAN group中移除。
步骤302,在该目标网络设备的Linux内核上挂载NAT穿透模块。
当目标网络设备检测到目标网络设备的PPPOE pass-through使能时,则目标网络设备的应用层模块则可以通过写proc文件方式通过内核已经启用或禁用PPPOE NAT穿透特性,则此时Linux内核可以根据配置挂载mount/Unmount NAT穿透处理模块。若不挂载NAT穿透处理模块,由于该PPPoE WAN连接的链路层接口添加到LAN组,此时可能导致正常的非NAT穿透数据也会被网桥处理,导致数据异常和业务操作异常。
将PPPoE WAN链路层接口加入LAN组,不会影响网关发送数据和加速数据处理。因此,NAT穿透处理模块需要能够很好的处理:网关接收数据、NAT穿透设备LAN/WAN转发数据、通用的LAN/WAN转发数据和NAT穿透的PPPoE拨号协议数据;这四类数据,才能确保家庭网关正常工作。
NAT穿透模块挂载在Linux内核协议栈上,接收数据处理的核心函数netif_receive_skb中,上述四类数据处理在桥接处理之前完成。
步骤303,当接收到目标数据时,检测该目标数据是否为从环地址发送的数据包,当该目标数据为从环地址发送的数据包时,该NAT穿透模块将该目标数据传输回该Linux内核的协议栈进行处理。
即当接收到目标数据时,可以先对该目标数据进行检测,若该目标数据是从环地址(如127.0.0.1或localhost)发送的数据包,则该目标数据将被传输回内核协议栈进行处理。
步骤304,当该目标数据不为环地址发送的数据包时,检测该目标数据是否为LANgroup数据包;当该目标数据不为LAN group数据包时,将该目标数据传输回该Linux内核的协议栈进行处理。
当该目标数据不为环地址发送的数据包时,则NAT穿透模块还可以对该目标数据是否为LAN组下接口的数据进行检测。如果该目标数据不是LAN组接口下的数据,此时不是待转发数据,则继续传输回内核协议栈进行处理。
步骤305,当该目标数据为LAN group数据包,检测该目标数据是否为PPPoE WAN链路层接口的数据,当不为PPPoE WAN链路层接口的数据时,将该目标数据发送至网桥处理。
当NAT穿透模块检测到目标数据为LAN组发送的数据包,由于PPPOE WAN链路层接口添加至LAN组中,此时NAT穿透模块还需要检测该目标数据是否为PPPOE WAN链路层接口的数据,若不是PPPOE WAN链路层接口的数据时,则该目标数据应为LAN转发数据或NAT穿透设备的LAN转发数据,直接将目标数据交给网桥进行处理。
步骤306,当该目标数据为PPPoE WAN链路层接口的数据时,判断该目标数据是否为目标协议类型的PPPoE数据;当该目标数据不为目标协议类型的PPPoE数据,将该目标数据发送至该Linux内核的协议栈进行处理。
当目标数据的来源是PPPOE WAN链路层接口的数据时,但不是PPPOE数据,则仍然不是需要转发的数据,直接将其传输回内核协议栈进行处理。
进一步的,判断目标数据是否为PPPoE数据,则可以根据目标数据是否为目标协议类型来判断,例如,当目标数据的协议类型为0x8863或者0x8864时,则可以仍认为该目标数据为PPPOE数据,若该目标数据的协议类型不为0x8863或者0x8864,则可以认为该目标数据不为PPPOE数据,此时直接将其传输回内核协议栈进行处理。
步骤307,当该目标数据为目标协议类型的PPPoE数据时,判断该PPPoE数据是否为发送至NAT穿透设备的数据;当该PPPoE数据不为发送至NAT穿透设备的数据,将该目标数据路由传输至WAN或网关。
而当目标数据的协议类型为0x8863或者0x8864,也就是为目标协议类型的PPPOE数据时,则NAT穿透模块进一步判断该PPPOE数据是否为发送至NAT穿透设备(也就是目标网络设备中的pass-through设备)的数据包,当不是发送到NAT穿透设备的数据时,则直接通过路由处理,传输至通用LAN侧或者网关的上层。
也就是说通过此步骤307,可以处理从WAN侧到通用LAN侧的负载数据或PPPoE拨号协议数据以及从WAN到网关的负载数据。
步骤308,当该目标数据为目标协议类型的PPPoE数据,且该PPPoE数据为发送至NAT穿透设备的数据,将该目标数据发送至网桥。
而当目标数据的源是PPPoE WAN链路层接口数据、PPPoE数据和发送到直通(NAT穿透)设备的数据,则将其传输到网桥进行处理。该步骤处理从WAN侧发送到直通设备的PPPoE拨号协议数据和从WAN侧发送到直通设备的负载数据。
请参考图4,其示出了本申请实施例涉及的一种数据转发处理流程图。其示出了如步骤303至步骤308所示的,NAT穿透处理模块识别不同的数据流并根据需要接收或转发数据,从而实现PPPoE NAT穿透的流程。
请参考图5,其示出了本申请实施例涉及的通过Linux+PPPoE协议实现NAT穿透的流程图。如图5所示,该流程如下所示:
1)开启NAT穿透特性,并根据需要配置启用PPPoE WAN连接,应用模块将通过Linux命令brctl将该PPPoE WAN连接的链路层接口添加到LAN组,以便通过桥转发NAT穿透数据。如果PPPoE NAT穿透功能关闭,WAN的链路层接口也将通过brctl从LAN组中移除。
2)应用层模块通过写proc文件方式通知内核已经“启用”或“禁用”PPPoE NAT穿透特性,内核根据配置挂载mount/Unmount NAT穿透处理模块。在enable NAT穿透时,只所以要挂载NAT穿透处理模块,是因为第一步的处理会导致正常的非NAT穿透数据也被桥接器处理,导致数据异常和业务操作异常。
3)NAT穿透处理模块完成协议和负载数据的接收和转发处理,它是该方法的关键模块。该模块充分地考虑了Linux网桥和PPPoE拨号的特点,合理处理网关数据。
将PPPoE WAN链路层接口加入LAN组,不会影响网关发送数据和加速数据处理。因此,NAT穿透处理模块需要能够很好的处理:网关接收数据、NAT穿透设备LAN/WAN转发数据、通用的LAN/WAN转发数据和NAT穿透的PPPoE拨号协议数据;这四类数据,才能确保家庭网关正常工作。
NAT穿透模块挂载在Linux内核协议栈上,接收数据处理的核心函数__netif_receive_skb中,上述四类数据处理在桥接处理之前完成。
综上所述,在安装有Linux的目标网络设备中,当检测到目标网络设备中开启PPPOE pass-through,也就是PPPOE pass-through使能时,则可以将目标网络设备的PPPOEWAN的二层接口添加至LAN group,且Linux的内核挂在上NAT穿透模块;此时目标网络设备接收到目标数据时,可以通过内核上的NAT穿透模块对目标数据进行处理,并在目标数据的类型满足穿透条件是将目标数据发送至网桥,从而实现NAT穿透。上述方案,基于PPPOE协议,在Linux内核中加载NAT穿透处理模块,以识别不同的数据流并根据需要接收或转发数据,从而实现PPPoE NAT穿透,将PPPoE NAT穿透放在Linux内核中执行,降低了对CPU资源的占用率的同时提高了数据转发效率。
请参考图6,其示出了本申请实施例涉及的一种基于Linux的NAT穿透装置。所述装置包括:
接口添加单元601,用于当检测到所述目标网络设备PPPOE pass-through使能时,将所述目标网络设备的PPPOE WAN的二层接口添加至LAN group;
挂载单元602,在所述目标网络设备的Linux内核上挂载NAT穿透模块;
数据转发单元603,用于当接收到目标数据时,所述NAT穿透模块在所述目标数据的类型满足穿透条件时,将目标数据发送至网桥,以实现NAT穿透。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为从环地址发送的数据包时,所述NAT穿透模块将所述目标数据传输回所述Linux内核的协议栈进行处理。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据不为LANgroup数据包时,将所述目标数据传输回所述Linux内核的协议栈进行处理。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为LANgroup数据包,但不为PPPoE WAN链路层接口的数据时,将所述目标数据发送至网桥处理。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为PPPoEWAN链路层接口的数据时,判断所述目标数据是否为目标协议类型的PPPoE数据;
当所述目标数据不为目标协议类型的PPPoE数据,将所述目标数据发送至所述Linux内核的协议栈进行处理。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为目标协议类型的PPPoE数据时,判断所述PPPoE数据是否为发送至NAT穿透设备的数据;
当所述PPPoE数据不为发送至NAT穿透设备的数据,将所述目标数据路由传输至WAN或网关。
在一种可能的实现方式中,所述数据转发单元,还用于当所述目标数据为目标协议类型的PPPoE数据,且所述PPPoE数据为发送至NAT穿透设备的数据,将所述目标数据发送至网桥。
综上所述,在安装有Linux的目标网络设备中,当检测到目标网络设备中开启PPPOE pass-through,也就是PPPOE pass-through使能时,则可以将目标网络设备的PPPOEWAN的二层接口添加至LAN group,且Linux的内核挂在上NAT穿透模块;此时目标网络设备接收到目标数据时,可以通过内核上的NAT穿透模块对目标数据进行处理,并在目标数据的类型满足穿透条件是将目标数据发送至网桥,从而实现NAT穿透。上述方案,基于PPPOE协议,在Linux内核中加载NAT穿透处理模块,以识别不同的数据流并根据需要接收或转发数据,从而实现PPPoE NAT穿透,将PPPoE NAT穿透放在Linux内核中执行,降低了对CPU资源的占用率的同时提高了数据转发效率。
请参阅图7,其是根据本申请一示例性实施例提供的一种网络设备示意图,所述网络设备包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,以实现上述方法。
其中,处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施方式中的方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施方式中的方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在一示例性实施例中,还提供了一种计算机可读存储介质,用于存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现上述方法中的全部或部分步骤。例如,该计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在一示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。网络设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该网络设备执行上述任一实施例所示方法的全部或部分步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (10)

1.一种基于Linux的NAT穿透方法,其特征在于,所述方法应用于安装有Linux的目标网络设备,所述方法包括:
当检测到所述目标网络设备PPPOE pass-through使能时,将所述目标网络设备的PPPOE WAN的二层接口添加至LAN group;
在所述目标网络设备的Linux内核上挂载NAT穿透模块;
当接收到目标数据时,所述NAT穿透模块在所述目标数据的类型满足穿透条件时,将目标数据发送至网桥,以实现NAT穿透。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标数据为从环地址发送的数据包时,所述NAT穿透模块将所述目标数据传输回所述Linux内核的协议栈进行处理。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标数据不为LAN group数据包时,将所述目标数据传输回所述Linux内核的协议栈进行处理。
4.根据权利要求3所述的方法,其特征在于,所述当接收到目标数据时,所述NAT穿透模块在所述目标数据的类型满足穿透条件时,将目标数据发送至网桥,包括:
当所述目标数据为LAN group数据包,但不为PPPoE WAN链路层接口的数据时,将所述目标数据发送至网桥处理。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标数据为PPPoE WAN链路层接口的数据时,判断所述目标数据是否为目标协议类型的PPPoE数据;
当所述目标数据不为目标协议类型的PPPoE数据,将所述目标数据发送至所述Linux内核的协议栈进行处理。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述目标数据为目标协议类型的PPPoE数据时,判断所述PPPoE数据是否为发送至NAT穿透设备的数据;
当所述PPPoE数据不为发送至NAT穿透设备的数据,将所述目标数据路由传输至WAN或网关。
7.根据权利要求6所述的方法,其特征在于,所述当接收到目标数据时,所述NAT穿透模块在所述目标数据的类型满足穿透条件时,将目标数据发送至网桥,包括:
当所述目标数据为目标协议类型的PPPoE数据,且所述PPPoE数据为发送至NAT穿透设备的数据,将所述目标数据发送至网桥。
8.一种基于Linux的NAT穿透装置,其特征在于,所述装置包括:
接口添加单元,用于当检测到目标网络设备PPPOE pass-through使能时,将所述目标网络设备的PPPOE WAN的二层接口添加至LAN group;
挂载单元,在所述目标网络设备的Linux内核上挂载NAT穿透模块;
数据转发单元,用于当接收到目标数据时,所述NAT穿透模块在所述目标数据的类型满足穿透条件时,将目标数据发送至网桥,以实现NAT穿透。
9.一种网络设备,其特征在于,所述网络设备中包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至7任一所述的基于Linux的NAT穿透方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至7任一所述的基于Linux的NAT穿透方法。
CN202210906029.0A 2022-07-29 2022-07-29 基于Linux的NAT穿透方法、装置、设备及存储介质 Active CN115499410B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210906029.0A CN115499410B (zh) 2022-07-29 2022-07-29 基于Linux的NAT穿透方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210906029.0A CN115499410B (zh) 2022-07-29 2022-07-29 基于Linux的NAT穿透方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN115499410A true CN115499410A (zh) 2022-12-20
CN115499410B CN115499410B (zh) 2023-06-23

Family

ID=84465987

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210906029.0A Active CN115499410B (zh) 2022-07-29 2022-07-29 基于Linux的NAT穿透方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115499410B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102868647A (zh) * 2012-09-26 2013-01-09 大唐移动通信设备有限公司 一种基于Linux网络内核的数据处理方法和装置
US20170155590A1 (en) * 2011-03-23 2017-06-01 Hughes Network Systems, Llc System and method for policy-based multipath wan transports for improved quality of service over broadband networks
US20170214774A1 (en) * 2012-12-26 2017-07-27 Realtek Singapore Pte Ltd Communication traffic processing architectures and methods
CN108063816A (zh) * 2017-04-24 2018-05-22 深圳至上移动科技有限公司 一种私有数据云存储穿透式访问方法
CN109547452A (zh) * 2018-11-30 2019-03-29 四川安迪科技实业有限公司 Linux网桥设备上实现TCP透明代理的方法及系统
CN111131037A (zh) * 2019-12-27 2020-05-08 网易(杭州)网络有限公司 基于虚拟网关的数据传输方法、装置、介质与电子设备
CN112929278A (zh) * 2021-02-24 2021-06-08 深圳市吉祥腾达科技有限公司 一种网络通信设备多核并行快速转发数据包的方法及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170155590A1 (en) * 2011-03-23 2017-06-01 Hughes Network Systems, Llc System and method for policy-based multipath wan transports for improved quality of service over broadband networks
CN102868647A (zh) * 2012-09-26 2013-01-09 大唐移动通信设备有限公司 一种基于Linux网络内核的数据处理方法和装置
US20170214774A1 (en) * 2012-12-26 2017-07-27 Realtek Singapore Pte Ltd Communication traffic processing architectures and methods
CN108063816A (zh) * 2017-04-24 2018-05-22 深圳至上移动科技有限公司 一种私有数据云存储穿透式访问方法
CN109547452A (zh) * 2018-11-30 2019-03-29 四川安迪科技实业有限公司 Linux网桥设备上实现TCP透明代理的方法及系统
CN111131037A (zh) * 2019-12-27 2020-05-08 网易(杭州)网络有限公司 基于虚拟网关的数据传输方法、装置、介质与电子设备
CN112929278A (zh) * 2021-02-24 2021-06-08 深圳市吉祥腾达科技有限公司 一种网络通信设备多核并行快速转发数据包的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李凌书: ""拟态SaaS云安全架构及关键技术研究"", 《中国博士学位论文全文数据库(电子期刊)信息科技辑》 *

Also Published As

Publication number Publication date
CN115499410B (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
US11128493B2 (en) Method for implementing residential gateway service function, and server
US11165869B2 (en) Method and apparatus for dynamic destination address control in a computer network
US10506082B2 (en) High availability (HA) internet protocol security (IPSEC) virtual private network (VPN) client
JP5307884B2 (ja) ダイレクトアクセス及びセキュリティ評価共有を可能とするためのハードウェアインターフェース
WO2013086928A1 (zh) 一种互联方法、装置和系统
WO2015143802A1 (zh) 业务功能链处理方法及装置
CN110177010B (zh) 一种链路切换方法及装置
CN106656648B (zh) 基于家庭网关的应用流量动态保护方法、系统及家庭网关
CN113364660B (zh) Lvs负载均衡中的数据包处理方法及装置
CN110830434A (zh) 通用透明代理方法
US7680065B2 (en) System and method for routing information packets
WO2021121040A1 (zh) 一种宽带接入的方法、装置、设备和存储介质
WO2021135493A1 (zh) 一种家庭网关访问方法、装置、系统处理器及存储介质
US11070665B2 (en) Voice over internet protocol processing method and related network device
CN108566446A (zh) 局域网域名解析方法、装置和系统
CN111262782B (zh) 一种报文处理方法、装置及设备
CN110351394B (zh) 网络数据的处理方法及装置、计算机装置及可读存储介质
CN115499410A (zh) 基于Linux的NAT穿透方法、装置、设备及存储介质
CN104717316B (zh) 一种跨nat环境下客户端接入方法和系统
US20180063255A1 (en) Method and Apparatus for Terminal Application Accessing NAS
CN112887211B (zh) 一种网际协议报文数据转发系统
CN115834472A (zh) 一种报文处理方法、转发策略获取方法及装置
CN113452653B (zh) 跨网闸的通信方法及系统
Cisco Cisco AS5300 - Cisco IOS Release 12.2 XB
JP6052876B2 (ja) 中継装置、その制御方法、及びその制御プログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant