CN112583687B - 流量控制方法、系统、计算机设备以及存储介质 - Google Patents

流量控制方法、系统、计算机设备以及存储介质 Download PDF

Info

Publication number
CN112583687B
CN112583687B CN201910941338.XA CN201910941338A CN112583687B CN 112583687 B CN112583687 B CN 112583687B CN 201910941338 A CN201910941338 A CN 201910941338A CN 112583687 B CN112583687 B CN 112583687B
Authority
CN
China
Prior art keywords
data packet
node container
line node
container
preset
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.)
Active
Application number
CN201910941338.XA
Other languages
English (en)
Other versions
CN112583687A (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.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum 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 Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201910941338.XA priority Critical patent/CN112583687B/zh
Publication of CN112583687A publication Critical patent/CN112583687A/zh
Application granted granted Critical
Publication of CN112583687B publication Critical patent/CN112583687B/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
    • 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/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/14Routing performance; Theoretical aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]

Landscapes

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

Abstract

本申请涉及一种流量控制方法、系统、计算机设备和存储介质,方法包括通过内置的入口节点容器,获取导入流量的数据包,入口节点容器基于linux内核提供的macvlan的网络模式建立;提取并识别数据包的域名;通过预设流量分配策略,根据数据包的域名将数据包分发导入内置的线路节点容器,预设流量分配策略包括域名分配策略以及IP集合选路策略;由线路节点容器根据内置的预设数据处理策略对已存的数据包进行地址转换处理,将地址转换后的数据包返回至宿主机。本申请的流量控制方法,通过在入口节点容器采用macvlan网络模式,可以达到单网口联网设备作为网关使用的目的,可以有效节约硬件资源,通过线路节点容器实现,增删线路非常便利,跟进一步提高流量控制效果。

Description

流量控制方法、系统、计算机设备以及存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种流量控制方法、系统、计算机设备以及存储介质。
背景技术
随着计算机互联网技术的发展,互联网网路内的网络流量也在不断增多。网络流量就是网络上传输的数据量。网络流量的大小对网络架构设计具有重要意义,就像要根据来往车辆的多少和流向来设计道路的宽度和连接方式类似,根据网络流量进行网络的设计是十分必要的。
对于基于域名的多代理下的网络流量处理,一般可以通过的ipset功能,配合iptables和iproute2即可实现策略路由,该方案主要基于路由层面对数据做处理,适合多个出口接入VPN(Virtual Private Network,虚拟专用网络)类型的代理线路,然而至少要满足两张物理网卡才能有效实行该方案,占据硬件资源过多。
发明内容
基于此,有必要针对传统的方案占用过多硬件资源的问题,提供一种能够有效节约硬件资源的流量控制方法、装置、计算机设备以及存储介质。
一种流量控制方法,所述方法包括:
通过内置的入口节点容器,获取导入流量的数据包,所述入口节点容器基于linux内核提供的macvlan的网络模式建立;
提取并识别所述数据包的域名;
通过预设流量分配策略,根据所述数据包的域名将所述数据包分发导入内置的线路节点容器,所述预设流量分配策略包括域名分配策略以及IP集合选路策略,所述线路节点容器包括各代理类型的线路节点容器;
由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出。
在其中一个实施例中,所述通过预设流量分配策略,根据所述数据包的域名将所述数据包分发导入内置的线路节点容器包括:
通过域名分配策略,将各域名对应的数据包分配至各域名对应的线路节点容器;
通过IP集合选路策略,根据所述数据包的IP地址将所述数据包分配至各线路节点容器。
在其中一个实施例中,所述将所述数据包分配至各线路节点容器包括:
通过ipset,根据各线路节点容器的预设IP归集策略与数据包的IP地址,将所述数据包置于预设各线路对应IP集合内;
通过iptables根据IP集合的集合名进行规则匹配,并对各集合中的数据包在mangle表添加对应选路标记;
通过使用ip rule,查询包含选路标记的数据包对应的路由表,由ip route将包含选路标记的数据包路由选路至对应的线路节点容器。
在其中一个实施例中,所述线路节点容器包括VPN容器;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出之前,还包括:
通过dnsmaq对所述数据包的域名进行dns解析,获取第一dns解析结果;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出包括:
由内置的所述VPN容器获取所述第一dns解析结果,通过iptables对所述数据包进行地址转换后,根据所述第一dns解析结果将所述数据包由联网的宿主机送出。
在其中一个实施例中,所述线路节点容器包括socks5容器;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出之前,还包括:
通过dnsmaq对预设dns端口对应数据包的域名进行dns解析,获取第二dns解析结果,所述预设dns端口为所述socks5容器监听的dns端口;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出包括:
由内置的所述socks5容器通过iptables将所述数据包转发至redsocks,通过redsocks对所述数据包进行数据结构转换处理,基于socks5对所述redsocks处理后数据包进行地址转换,根据所述第二dns解析结果将所述数据包由联网的宿主机。
在其中一个实施例中,所述线路节点容器包括tor容器;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出包括:
由内置的所述tor容器通过tor对所述数据包进行dns解析,获取第三dns解析结果,通过tor对所述数据包进行数据结构转换处理,基于socks5对所述tor处理后数据包进行地址转换,根据所述第三dns解析结果将所述数据包由联网的宿主机送出。
在其中一个实施例中,所述通过内置的入口节点容器,获取导入流量的数据包包括:
通过macvlan接口或者开放openvpn服务的方式获取导入流量的数据包。
一种流量控制系统,包括入口节点容器、各线路节点容器、网桥以及控制器,所述入口节点容器与所述线路节点容器基于linux内核提供的macvlan的网络模式建立,所述网桥用于连接所述入口节点容器与所述各线路节点容器:
所述入口节点容器获取导入流量的数据包;所述控制器提取并识别所述数据包的域名;所述控制器通过预设流量分配策略,根据所述数据包的域名将所述数据包分发导入内置的线路节点容器,所述预设流量分配策略包括域名分配策略以及IP集合选路策略,所述线路节点容器包括各代理类型的线路节点容器;所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出。
一种流量控制装置,所述装置包括:
流量获取模块,用于通过内置的入口节点容器,获取导入流量的数据包,所述入口节点容器基于linux内核提供的macvlan的网络模式建立;
域名提取模块,用于提取并识别所述数据包的域名;
流量分流模块,用于通过预设流量分配策略,根据所述数据包的域名将所述数据包分发导入内置的线路节点容器,所述预设流量分配策略包括域名分配策略以及IP集合选路策略,所述线路节点容器包括各代理类型的线路节点容器;
流量处理模块,用于由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
通过内置的入口节点容器,获取导入流量的数据包,所述入口节点容器基于linux内核提供的macvlan的网络模式建立;
提取并识别所述数据包的域名;
通过预设流量分配策略,根据所述数据包的域名将所述数据包分发导入内置的线路节点容器,所述预设流量分配策略包括域名分配策略以及IP集合选路策略,所述线路节点容器包括各代理类型的线路节点容器;
由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
通过内置的入口节点容器,获取导入流量的数据包,所述入口节点容器基于linux内核提供的macvlan的网络模式建立;
提取并识别所述数据包的域名;
通过预设流量分配策略,根据所述数据包的域名将所述数据包分发导入内置的线路节点容器,所述预设流量分配策略包括域名分配策略以及IP集合选路策略,所述线路节点容器包括各代理类型的线路节点容器;
由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出。
上述流量控制方法、系统、装置、计算机设备和存储介质,通过内置的入口节点容器,获取导入流量的数据包,入口节点容器基于linux内核提供的macvlan的网络模式建立,提取并识别数据包的域名;通过预设流量分配策略,根据数据包的域名将数据包分发导入内置的线路节点容器,预设流量分配策略包括域名分配策略以及IP集合选路策略;由线路节点容器根据内置的预设数据处理策略对已存的数据包进行地址转换处理,将地址转换后的数据包返回至宿主机。本申请的流量控制方法,通过在入口节点容器采用macvlan网络模式,可以达到单网口联网设备作为网关使用的目的,可以有效节约硬件资源,通过线路节点容器实现,增删线路非常便利,跟进一步提高流量控制效果。
附图说明
图1为一个实施例中流量控制方法的应用环境图;
图2为一个实施例中流量控制方法的流程示意图;
图3为另一个实施例中流量控制方法的流程示意图;
图4为一个实施例中流量控制系统的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的网页集成方法,可以应用于如图1所示的应用环境中。其中,宿主机102通过网络与服务器104通过网络进行通信。服务器104内置入口节点容器以及各分支线路节点容器,服务器104通过内置的入口节点容器,获取导入流量的数据包,入口节点容器基于linux内核提供的macvlan的网络模式建立;提取并识别数据包的域名;通过预设流量分配策略,根据数据包的域名将数据包分发导入内置的线路节点容器,预设流量分配策略包括域名分配策略以及IP集合选路策略,线路节点容器包括各代理类型的线路节点容器;由线路节点容器根据内置的预设数据处理策略,对已存的数据包进行对应代理类型的地址转换处理,将地址转换后的数据包由联网的宿主机102送出。服务器104可以通过独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种流量控制方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
S200,通过内置的入口节点容器,获取导入流量的数据包,入口节点容器基于linux内核提供的macvlan的网络模式建立。
容器即英文单词Linux Container的直译。container这个单词有集装箱、容器的含义,其特点在于其格式划一,并可以层层重叠。入口节点容器是指数据入口处对应的容器,它起着网关的作用,所有的网络流量需流经它。在其中一个容器通过docker建立,docker是一种开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。在其中一个实施例中,可以基于docker建立入口结点容器,连接容器的docker0网桥以及后续的线路节点容器,基于容器内对应控制策略对导入数据进行分流以及处理。入口节点容器接入不同的网络环境,而导入服务器的数据包则包括TCP数据包和DNS数据包为主,而后续的线路节点容器的类型具体对应处理包括VPN、socks5、socks4以及http/s等出口代理类型的数据。用户可以在宿主机的对应客户端上设置自己的网关和dns解析地址为入口节点容器处对应的IP,这一点可以通过dhcp(Dynamic Host Configuration Protocol,动态主机配置协议)的方实现,这样可以将宿主机对应的流量集中发往入口节点。在入口节点容器采用了macvlan网络模式,与宿主同处一网络,可以达到单网口联网设备作为网关使用的目的。
S400,提取并识别数据包的域名。
域名是指由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。在入口节点容器处获取流量数据之后,可以在入口节点容器处,服务器会识别接受的流量数据包对应的域名地址。
S600,通过预设流量分配策略,根据数据包的域名将数据包分发导入内置的线路节点容器,预设流量分配策略包括域名分配策略以及IP集合选路策略,线路节点容器包括各代理类型的线路节点容器。
其中线路节点容器包括各代理类型对应的线路节点容器,其用于从入口节点容器处接收对应数据包,并对其进行相应的处理处理。而预设流量分配策略是指内置在入口结点容器处进行流量分流控制的策略,其主要包括了域名分配策略以及IP集合选路策略。其中域名分配策略是指根据预设的域名将其导入至对应的线路节点容器,各预设线路节点容器预设存在一些与其对应的域名,域名分配策略即是指当在入口节点容器处接收到这些域名对应的数据包时,将其导入对应的线路节点容器。而IP集合选路策略是指服务器可以识别这些数据包对应的IP,而后根据其对应IP将其导入至对应线路的线路节点容器内。
在入口节点容器处接收到这些数据包并识别数据包对应的域名后,会根据预先设置的域名进行分配,或者是通过IP集合选路的策略对这些数据包进行分发控制,将数据包输入这些线路节点容器后再进行处理。
S800,由线路节点容器根据内置的预设数据处理策略,对已存的数据包进行对应代理类型的地址转换处理,将地址转换后的数据包由联网的宿主机送出。
各个分支点出的线路节点容器内内置有对应的数据处理策略,当其接收到对应的代理类型的数据时,可以基于这些数据处理策略对数据进行地址转换处理之后,可以将其通过与容器连接的宿主机发送出去,完成整个流量分流处理的过程。
上述流量控制方法,通过内置的入口节点容器,获取导入流量的数据包,入口节点容器基于linux内核提供的macvlan的网络模式建立,提取并识别数据包的域名;通过预设流量分配策略,根据数据包的域名将数据包分发导入内置的线路节点容器,预设流量分配策略包括域名分配策略以及IP集合选路策略;由线路节点容器根据内置的预设数据处理策略对已存的数据包进行地址转换处理,将地址转换后的数据包返回至宿主机。本申请的流量控制方法,通过在入口节点容器采用macvlan网络模式,可以达到单网口联网设备作为网关使用的目的,可以有效节约硬件资源,通过线路节点容器实现,增删线路非常便利,跟进一步提高流量控制效果。
在其中一个实施例中,S600包括:
通过域名分配策略,将各域名对应的数据包分配至各域名对应的线路节点容器。
通过IP集合选路策略,根据数据包的IP地址将数据包分配至各线路节点容器。
其中导入策略包括了,根据预设的域名将其导入至对应的线路节点容器,各预设线路节点容器预设存在一些与其对应的域名,域名分配策略即是指当在入口节点容器处接收到这些域名对应的数据包是,将其导入对应的线路节点容器。而IP集合选路策略是指服务器可以识别这些数据包对应的IP,而后根据其对应IP将其导入至对应线路的线路节点容器内。在进行IP集合选路前,可以基于数据包对应域名对其进行dns解析来获得其对应的IP地址。
在其中一个实施例中,将数据包分配至各线路节点容器包括:通过ipset,根据各线路节点容器的预设IP归集策略与数据包的IP地址,将数据包置于预设各线路对应IP集合内;通过iptables根据IP集合的集合名进行规则匹配,并对各集合中的数据包在mangle表添加对应选路标记;通过使用ip rule,查询包含选路标记的数据包对应的路由表,由iproute将包含选路标记的数据包路由选路至对应的线路节点容器。
其中,预设IP归集策略是指将制定IP段内的IP纳入预设的集合,这些集合是根据各线路节点容器对应设置的。ipset是iptables的扩展,它允许你创建匹配整个地址集合的规则。而不像普通的iptables链只能单IP匹配,ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,并可以减少系统资源占用或网络拥塞。先通过ipset将接收到的数据包的IP地址置入对应的各线路节点容器对应IP集合中,并通过iptables根据IP集合的集合名根据这些IP集合的的集合名进行规则匹配,同时对数据包进行标记,而后通过使用ip rule,查询包含选路标记的数据包对应的路由表,由ip route将包含选路标记的数据包路由选路至对应的线路节点容器。通过ipset、ip rule以及ip rout可以快速完成路由选路的工作。
在其中一个实施例中,述线路节点容器包括VPN容器,步骤S800之前包括:通过dnsmaq对数据包的域名进行dns解析,获取第一dns解析结果。步骤S800包括:由内置的VPN容器获取第一dns解析结果,通过iptable对数据包进行地址转换后,根据第一dns解析结果将数据包由联网的宿主机送出。
当输入入口节点容器的流量数据包满足经由VPN容器对应线路的流量分配策略时,由于该线路对应的代理类型为VPN。入口节点容器会将发往该线路的dns解析流量即第一dns解析结果也路由至该线路内,并随后会对解析结果中的IP进行记录,而后对与该IP通信的数据包进行标识,确保与该线路通信的数据能够完成流出流回的过程。并会在从docker0网桥中接收到入口节点容器导入的数据后,利用iptables进行源地址转换后,根据第一dns解析结果将数据包由与线路节点容器联网的宿主机转出,完成数据处理过程。
在其中一个实施例中,述线路节点容器包括socks5容器,步骤S800之前包括:通过dnsmaq对预设dns端口对应数据包的域名进行dns解析,获取第二dns解析结果,预设dns端口为socks5容器监听的dns端口。S800包括:由内置的socks5容器通过iptables将数据包转发至redsocks,通过redsocks对数据包进行数据结构转换处理,基于socks5对edsocks处理后数据包进行地址转换,根据第二dns解析结果将数据包由联网的宿主机送出。
dnsmaq是一个用于配置dns和dhcp的工具,适用于小型网络,它提供了dns功能和可选择的dhcp功能。它服务那些只在本地适用的域名,这些域名是不会在全球的dns服务器中出现的。dhcp服务器和dns服务器结合,并且允许dhcp分配的地址能在dns中正常解析,而这些dhcp分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中当流量满足经由socks5容器对应的流量分配策略时,该线路对应的出口代理类型为socks5,入口节点容器的dnsmaq会选择socks5容器监听的dns端口对应的域名进行dns解析,而socks5容器则会采用dns2socks监听端口来获取dns请求,主要考虑到大部分socks5客体并没实现udp代理的功能,所以随后dns2socks将以tcp的方式经由socks5容器指定的socks5代理服务去获取对应的第二dns解析结果并返回,从而完成该线路的dns解析过程。后面将接着处理tcp流量,当容器2接收到由入口节点根据策略路由过来数据时,会借助iptables工具将这部分数据转发至redsocks监听的本地端口,随后由redsocks将其中的tcp流量转换为socks5协议可处理的数据结构,基于socks5对edsocks处理后数据包进行地址转换,根据第二dns解析结果将数据包由联网的宿主机送出,完成socks5容器对应的数据处理过程。
在其中一个实施例中,线路节点容器包括tor容器;S800包括:由内置的tor容器通过tor对数据包进行dns解析,获取第三dns解析结果,通过tor对数据包进行数据结构转换处理,基于socks5对tor处理后数据包进行地址转换,根据第三dns解析结果将数据包由联网的宿主机送出。
tor即the onion routing,是指洋葱路由,为一种在电脑网络上匿名沟通的技术。在洋葱路由的网络中,消息一层一层的加密包装成像洋葱一样的数据包,并经由一系列被称作洋葱路由器的网络节点发送,每经过一个洋葱路由器会将数据包的最外层解密,直至目的地时将最后一层解密,目的地因而能获得原始消息。而因为透过这一系列的加密包装,每一个网络节点(包含目的地)都只能知道上一个节点的位置,但无法知道整个发送路径以及原发送者的地址。当流量满足tor容器对应的流量分配策略时,该线路的出口代理类型和socks5容器对应的出代理类型相同,都是socks5。但对于dns解析和tcp流量的处理,由于tor软件自带有相关功能,直接使用就行。所以可以直接通过tor容器对导入数据进行dns解析以及对相应的tcp流量进行处理。用户虽然可以借助dns2socks经由tor代理在入口节点容器处进行dns解析,但无法解析onion结尾的域名,也就意味着访问不了onion域名的资源,所以一般可以直接使用tor自带的dns解析功能进行dns解析处理来获得三dns解析结果。通过tor对数据包进行数据结构转换处理,基于socks5对tor处理后数据包进行地址转换,根据第三dns解析结果将数据包由联网的宿主机送出,完成完整的数据处理过程。
此外,在其他的实施例中,还包括用于处理http/s以及socks4等类型数据的其他线路节点容器,当通过这些线路节点容器进行数据处理过程时,可以先将利用gost proxy将socks4或者http/s代理协议转为socks5后,基于与上述socks5容器对应的处理过程进行对应的数据处理。本申请的流量控制方法中各个线路节点容器对应线路可以很方便设置专属的dns服务器,避免dns污染的情况产生。可以支持主流vpn、socks4、socks5、http/s代理服务,基本涵盖了常见的代理服务形式。
如图3所示,在其中一个实施例中,步骤S200包括:S210,通过macvlan接口或者开放openvpn服务的方式获取导入流量的数据包。
openvpn是一个基于OpenSSL库的应用层VPN实现。openvpn允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函式库。通过在入口节点容器布置一个openvpn服务,再对外进行映射服务端口,统一管理客户端连入控制,有利于对数据接入进行管理。
应该理解的是,虽然图2与图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2与图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种流量控制系统,包括入口节点容器200、各线路节点容器400、网桥600以及控制器800,入口节点容器200与线路节点容器400基于linux内核提供的macvlan的网络模式建立,网桥600用于连接入口节点容器与各线路节点容器:
入口节点容器200获取导入流量的数据包;控制器800提取并识别数据包的域名;控制器800通过预设流量分配策略,根据数据包的域名将数据包分发导入内置的线路节点容器400,预设流量分配策略包括域名分配策略以及IP集合选路策略,线路节点容器400包括各代理类型的线路节点容器;线路节点容器400根据内置的预设数据处理策略,对已存的数据包进行对应代理类型的地址转换处理,将地址转换后的数据包由联网的宿主机送出。
在其中一个实施例中,控制器800用于通过IP集合选路策略,根据数据包的IP地址将数据包分配至各线路节点容器。
在其中一个实施例中,控制器800还用于通过ipset,根据各线路节点容器的预设IP归集策略与数据包的IP地址,将数据包置于预设各线路对应IP集合内;通过iptables根据IP集合的集合名进行规则匹配,并对各集合中的数据包在mangle表添加对应选路标记;通过使用ip rule,查询包含选路标记的数据包对应的路由表,由ip route将包含选路标记的数据包路由选路至对应的线路节点容器。
在其中一个实施例中,线路节点容器包括VPN容器;控制器800用于通过dnsmaq对数据包的域名进行dns解析,获取第一dns解析结果;由内置的VPN容器获取第一dns解析结果,通过iptables对数据包进行地址转换后,根据第一dns解析结果将数据包由联网的宿主机送出。
在其中一个实施例中,线路节点容器包括socks5容器;控制器800用于通过dnsmaq对预设dns端口对应数据包的域名进行dns解析,获取第二dns解析结果,预设dns端口为socks5容器监听的dns端口;由内置的socks5容器通过iptables将数据包转发至redsocks,通过redsocks对数据包进行数据结构转换处理,基于socks5对redsocks处理后数据包进行地址转换,根据第二dns解析结果将数据包由联网的宿主送出。
在其中一个实施例中,线路节点容器包括tor容器;控制器800用于由内置的tor容器通过tor对数据包进行dns解析,获取第三dns解析结果,通过tor对数据包进行数据结构转换处理,基于socks5对tor处理后数据包进行地址转换,根据第三dns解析结果将数据包由联网的宿主机送出。
在其中一个实施例中,入口节点容器200用于通过macvlan接口或者开放openvpn服务的方式导入流量的数据包。
在一个实施例中,提供了一种流量控制装置,装置包括:
流量获取模块,用于通过内置的入口节点容器,获取导入流量的数据包,入口节点容器基于linux内核提供的macvlan的网络模式建立;
域名提取模块,用于提取并识别数据包的域名;
流量分流模块,用于通过预设流量分配策略,根据数据包的域名将数据包分发导入内置的线路节点容器,预设流量分配策略包括域名分配策略以及IP集合选路策略,线路节点容器包括各代理类型的线路节点容器;
流量处理模块,用于由线路节点容器根据内置的预设数据处理策略,对已存的数据包进行对应代理类型的地址转换处理,将地址转换后的数据包由联网的宿主机送出。
关于流量控制系统以及流量控制装置的具体限定可以参见上文中对于流量控制方法的限定,在此不再赘述。上述流量控制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储流量控制申请以及集成网页的相关数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种流量控制方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
通过内置的入口节点容器,获取导入流量的数据包,入口节点容器基于linux内核提供的macvlan的网络模式建立;
提取并识别数据包的域名;
通过预设流量分配策略,根据数据包的域名将数据包分发导入内置的线路节点容器,预设流量分配策略包括域名分配策略以及IP集合选路策略,线路节点容器包括各代理类型的线路节点容器;
由线路节点容器根据内置的预设数据处理策略,对已存的数据包进行对应代理类型的地址转换处理,将地址转换后的数据包由联网的宿主机送出。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过域名分配策略,将各域名对应的数据包分配至各域名对应的线路节点容器;通过IP集合选路策略,根据数据包的IP地址将数据包分配至各线路节点容器。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过ipset,根据各线路节点容器的预设IP归集策略与数据包的IP地址,将数据包置于预设各线路对应IP集合内;通过iptables根据IP集合的集合名进行规则匹配,并对各集合中的数据包在mangle表添加对应选路标记;通过使用ip rule,查询包含选路标记的数据包对应的路由表,由iproute将包含选路标记的数据包路由选路至对应的线路节点容器。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过dnsmaq对数据包的域名进行dns解析,获取第一dns解析结果;由内置的VPN容器获取第一dns解析结果,通过iptables对数据包进行地址转换后,根据第一dns解析结果将数据包由联网的宿主机送出。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过dnsmaq对预设dns端口对应数据包的域名进行dns解析,获取第二dns解析结果,预设dns端口为socks5容器监听的dns端口;由内置的socks5容器通过iptables将数据包转发至redsocks,通过redsocks对数据包进行数据结构转换处理,基于socks5对redsocks处理后数据包进行地址转换,根据第二dns解析结果将数据包由联网的宿主机。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:由内置的tor容器通过tor对数据包进行dns解析,获取第三dns解析结果,通过tor对数据包进行数据结构转换处理,基于socks5对tor处理后数据包进行地址转换,根据第三dns解析结果将数据包由联网的宿主机送出。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过macvlan接口或者开放openvpn服务的方式导入流量的数据包。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
通过内置的入口节点容器,获取导入流量的数据包,入口节点容器基于linux内核提供的macvlan的网络模式建立;
提取并识别数据包的域名;
通过预设流量分配策略,根据数据包的域名将数据包分发导入内置的线路节点容器,预设流量分配策略包括域名分配策略以及IP集合选路策略,线路节点容器包括各代理类型的线路节点容器;
由线路节点容器根据内置的预设数据处理策略,对已存的数据包进行对应代理类型的地址转换处理,将地址转换后的数据包由联网的宿主机送出。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过域名分配策略,将各域名对应的数据包分配至各域名对应的线路节点容器;通过IP集合选路策略,根据数据包的IP地址将数据包分配至各线路节点容器。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过ipset,根据各线路节点容器的预设IP归集策略与数据包的IP地址,将数据包置于预设各线路对应IP集合内;通过iptables根据IP集合的集合名进行规则匹配,并对各集合中的数据包在mangle表添加对应选路标记;通过使用ip rule,查询包含选路标记的数据包对应的路由表,由iproute将包含选路标记的数据包路由选路至对应的线路节点容器。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过dnsmaq对数据包的域名进行dns解析,获取第一dns解析结果;由内置的VPN容器获取第一dns解析结果,通过iptables对数据包进行地址转换后,根据第一dns解析结果将数据包由联网的宿主机送出。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过dnsmaq对预设dns端口对应数据包的域名进行dns解析,获取第二dns解析结果,预设dns端口为socks5容器监听的dns端口;由内置的socks5容器通过iptables将数据包转发至redsocks,通过redsocks对数据包进行数据结构转换处理,基于socks5对redsocks处理后数据包进行地址转换,根据第二dns解析结果将数据包由联网的宿主机。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:由内置的tor容器通过tor对数据包进行dns解析,获取第三dns解析结果,通过tor对数据包进行数据结构转换处理,基于socks5对tor处理后数据包进行地址转换,根据第三dns解析结果将数据包由联网的宿主机送出。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过macvlan接口或者开放openvpn服务的方式导入流量的数据包。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种流量控制方法,所述方法包括:
通过内置的入口节点容器,获取导入流量的数据包,所述入口节点容器基于linux内核提供的macvlan的网络模式建立;
提取并识别所述数据包的域名;
通过预设流量分配策略,根据所述数据包的域名将所述数据包分发导入内置的线路节点容器,所述预设流量分配策略包括域名分配策略以及IP集合选路策略,所述线路节点容器包括各代理类型的线路节点容器,所述域名分配策略为根据线路节点容器内预设的域名将所述数据包导入至对应的线路节点容器,所述IP集合选路策略为识别所述数据包对应的IP后,根据所述IP将所述数据包导入至对应线路的线路节点容器;
由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出。
2.根据权利要求1所述的方法,其特征在于,所述通过预设流量分配策略,根据所述数据包的域名将所述数据包分发导入内置的线路节点容器包括:
通过域名分配策略,将各域名对应的数据包分配至各域名对应的线路节点容器;
或通过IP集合选路策略,根据所述数据包的IP地址将所述数据包分配至各线路节点容器。
3.根据权利要求2所述的方法,其特征在于,所述将所述数据包分配至各线路节点容器包括:
通过ipset,根据各线路节点容器的预设IP归集策略与数据包的IP地址,将所述数据包置于预设各线路对应IP集合内;
通过iptables根据IP集合的集合名进行规则匹配,并对各集合中的数据包在mangle表添加对应选路标记;
通过使用ip rule,查询包含选路标记的数据包对应的路由表,由ip route将包含选路标记的数据包路由选路至对应的线路节点容器。
4.根据权利要求1所述的方法,其特征在于,所述线路节点容器包括VPN容器;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出之前,还包括:
通过dnsmaq对所述数据包的域名进行dns解析,获取第一dns解析结果;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出包括:
由内置的所述VPN容器获取所述第一dns解析结果,通过iptables对所述数据包进行地址转换后,根据所述第一dns解析结果将所述数据包由联网的宿主机送出。
5.根据权利要求1所述的方法,其特征在于,所述线路节点容器包括socks5容器;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出之前,还包括:
通过dnsmaq对预设dns端口对应数据包的域名进行dns解析,获取第二dns解析结果,所述预设dns端口为所述socks5容器监听的dns端口;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出包括:
由内置的所述socks5容器通过iptables将所述数据包转发至redsocks,通过redsocks对所述数据包进行数据结构转换处理,基于socks5对所述redsocks处理后数据包进行地址转换,根据所述第二dns解析结果将所述数据包由联网的宿主机送出。
6.根据权利要求1所述的方法,其特征在于,所述线路节点容器包括tor容器;
所述由所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出包括:
由内置的所述tor容器通过tor对所述数据包进行dns解析,获取第三dns解析结果,通过tor对所述数据包进行数据结构转换处理,基于socks5对所述tor处理后数据包进行地址转换,根据所述第三dns解析结果将所述数据包由联网的宿主机送出。
7.根据权利要求1所述的方法,其特征在于,所述通过内置的入口节点容器,获取导入流量的数据包包括:
通过macvlan接口或者开放openvpn服务的方式获取导入流量的数据包。
8.一种流量控制系统,其特征在于,包括入口节点容器、各线路节点容器、网桥以及控制器,所述入口节点容器与所述线路节点容器基于linux内核提供的macvlan的网络模式建立,所述网桥用于连接所述入口节点容器与所述各线路节点容器:
所述入口节点容器获取从宿主机导入流量的数据包;所述控制器提取并识别所述数据包的域名;所述控制器通过预设流量分配策略,根据所述数据包的域名将所述数据包分发导入内置的线路节点容器,所述预设流量分配策略包括域名分配策略以及IP集合选路策略,所述线路节点容器包括各代理类型的线路节点容器,所述域名分配策略为根据所述线路节点容器内预设的域名将所述数据包导入至对应的线路节点容器,所述IP集合选路策略为识别所述数据包对应的IP后,根据所述IP将所述数据包导入至对应线路的线路节点容器;所述线路节点容器根据内置的预设数据处理策略,对已存的所述数据包进行对应代理类型的地址转换处理,将所述地址转换后的数据包由联网的宿主机送出。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN201910941338.XA 2019-09-30 2019-09-30 流量控制方法、系统、计算机设备以及存储介质 Active CN112583687B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910941338.XA CN112583687B (zh) 2019-09-30 2019-09-30 流量控制方法、系统、计算机设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910941338.XA CN112583687B (zh) 2019-09-30 2019-09-30 流量控制方法、系统、计算机设备以及存储介质

Publications (2)

Publication Number Publication Date
CN112583687A CN112583687A (zh) 2021-03-30
CN112583687B true CN112583687B (zh) 2022-05-27

Family

ID=75116494

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910941338.XA Active CN112583687B (zh) 2019-09-30 2019-09-30 流量控制方法、系统、计算机设备以及存储介质

Country Status (1)

Country Link
CN (1) CN112583687B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116192742A (zh) * 2022-12-15 2023-05-30 四川天邑康和通信股份有限公司 一种基于应用的路由加速方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542511B1 (en) * 1998-04-30 2003-04-01 Nortel Networks Limited Programmable transport and network architecture
CN105407140A (zh) * 2015-10-23 2016-03-16 上海比林电子科技有限公司 一种网络化测试系统的计算资源虚拟化系统及方法
CN107256178A (zh) * 2017-04-27 2017-10-17 北京数人科技有限公司 一种容器管理平台
CN108696452A (zh) * 2018-05-16 2018-10-23 腾讯科技(深圳)有限公司 一种容器级网络流量采集、网络质量标识方法、装置、系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542511B1 (en) * 1998-04-30 2003-04-01 Nortel Networks Limited Programmable transport and network architecture
CN105407140A (zh) * 2015-10-23 2016-03-16 上海比林电子科技有限公司 一种网络化测试系统的计算资源虚拟化系统及方法
CN107256178A (zh) * 2017-04-27 2017-10-17 北京数人科技有限公司 一种容器管理平台
CN108696452A (zh) * 2018-05-16 2018-10-23 腾讯科技(深圳)有限公司 一种容器级网络流量采集、网络质量标识方法、装置、系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Macvlan的Docker容器网络架构研究;李巍等;《机械设计与制造》;20170508(第05期);全文 *

Also Published As

Publication number Publication date
CN112583687A (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
AbdelSalam et al. Implementation of virtual network function chaining through segment routing in a linux-based NFV infrastructure
JP7293446B2 (ja) 仮想ネットワーク検証サービス
CN107872542B (zh) 一种数据传输的方法及网络设备
US10158568B2 (en) Method and apparatus for service function forwarding in a service domain
US10237230B2 (en) Method and system for inspecting network traffic between end points of a zone
CN109547349B (zh) 基于虚拟路由的流量管理方法、装置、终端及存储介质
US8073936B2 (en) Providing support for responding to location protocol queries within a network node
WO2016119747A1 (en) System and method for communicating in an ssl vpn
US10911406B2 (en) Accessing cloud resources using private network addresses
US20130182651A1 (en) Virtual Private Network Client Internet Protocol Conflict Detection
WO2015010307A1 (zh) 业务路径分配方法、路由器和业务执行实体
CN108259642B (zh) 基于私有云的公共服务虚拟机访问方法和装置
CN105264855A (zh) 一种实现私网穿越的方法、装置和系统
US10454886B2 (en) Multi-service API controller gateway
US20220045984A1 (en) Implementing a multi-regional cloud based network using network address translation
CN112583687B (zh) 流量控制方法、系统、计算机设备以及存储介质
CN106507414A (zh) 报文转发方法及装置
CN109246016B (zh) 跨vxlan的报文处理方法和装置
CN111193813A (zh) 确定nat类型的测试请求处理方法、装置和计算机设备
CN112565053B (zh) 识别私网用户的方法、装置、服务系统及存储介质
CN112217769B (zh) 基于隧道的数据解密方法、加密方法、装置、设备和介质
CN106506718B (zh) 基于多重NAT纯IPv6网络的IVI过渡方法及网络系统
CN116264518A (zh) 基于云专线的云服务互访方法、系统、网络节点和介质
CN110650222B (zh) 一种网络访问方法及装置
CN111405639B (zh) 无线网络连接方法、装置、可读存储介质和计算机设备

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