一种linux应用程序的透明代理方法及系统与流程
未命名
10-26
阅读:97
评论:0
1.本发明涉及网络通信技术,尤其涉及一种linux应用程序的透明代理方法及系统。
背景技术:
::2.随着linux操作系统的生态不断完善,涌现了各种各样的linux应用程序。由于网络环境限制及安全性、访问速度等要求,这些应用程序在访问网络时经常需要使用代理方式。3.在linux操作系统上使用代理功能时,由于linux上代理设置方式无法为全部应用提供代理功能,且各种应用程序自身不具备代理配置功能,现有技术存在以下缺陷:linux操作系统上支持系统代理的设置,系统代理主要采用设置环境变量代理的方式。设置后应用程序需在自身软件ui上手动配置代理服务器信息,但部分应用程序不支持设置系统代理,导致无法进行代理。此外,应用程序代理设置成功后,只有该应用程序的网络流量会经过代理服务器,其他应用程序的网络流量不受影响,面对多应用程序使用代理功能或者整个计算机处在代理网络环境中时即多种应用需要使用代理情况,用户需要频繁操作。4.综上所述,因此需要在linux操作系统上实现一种通用的应用程序代理方法。技术实现要素:5.本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种linux应用程序的透明代理方法及系统,能够对于各种linux应用程序统一进行代理控制,用户可按需同时对各应用代理进行设置,解决部分应用无法使用代理方式进行网络访问的问题。6.为解决上述技术问题,本发明提出的技术方案为:一种linux应用程序的透明代理方法,包括以下步骤:s101)获取代理服务器的配置信息并获取目标应用程序的信息;s102)设置目标应用程序对应的防火墙过滤规则;s103)监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。7.进一步的,步骤s101具体包括:通过api接口,获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息。8.进一步的,所述代理服务器的配置信息包括代理服务器ip、端口、协议中的一种或多种。9.进一步的,步骤s102具体包括:使用iptables新增目标应用程序对应的mangle表和转发规则。10.进一步的,所述mangle表用于标记目标应用程序的网络数据包,所述转发规则包括:若当前网络数据包存在所述标记,将当前网络数据包转发至本地的透明代理服务,若当前网络数据包不存在所述标记,将当前网络数据包转发至路由。11.进一步的,步骤s103具体包括:目标应用程序发送或者接收网络数据时,根据mangle表标记对应的网络数据包,将被标记的网络数据包转发至本地的透明代理服务;透明代理服务根据代理服务器的配置信息,将被标记的网络数据包转发至代理服务器。12.进一步的,步骤s102还包括:初始化cgroups进程组;步骤s103中还包括:获取目标应用程序的进程号,将目标应用程序的进程号添加到cgroups进程组的指定路径中,以限制目标应用程序的网络资源。13.进一步的,步骤s103中根据mangle表标记对应的网络数据包时,所述网络数据包具体是指cgroups进程组的指定路径中进程号对应的应用程序的网络数据包。14.本发明还提出一种linux应用程序的透明代理系统,包括:应用代理界面交互单元,用于获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息;还用于监听到目标应用程序启动后,使能应用代理数据转发单元;应用代理数据转发单元,用于设置目标应用程序对应的防火墙过滤规则;还用于监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并转发给应用代理透明代理单元;应用代理透明代理单元,用于根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。15.本发明还提出一种透明代理系统,包括计算机设备,所述计算机设备被编程或配置以执行任一所述的linux应用程序的透明代理方法。16.与现有技术相比,本发明的优点在于:1.本发明针对所选取的目标应用程序配置对应的防火墙过滤规则,根据防火墙过滤规则截获目标应用程序的网络数据包,根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器,可以由用户自主选择需要使用代理功能的应用程序,能够让无法自身设置代理功能的应用程序实现透明代理。17.2.本发明配置防火墙过滤规则时,通过使用iptables新增目标应用程序对应的mangle表和转发规则实现对应用程序网络数据进行标记和转发,通过将目标应用程序的进程号加入cgroups进程组的指定路径中来限制网络数据,以达到对目标应用程序的网络通信数据包进行监控,保证目标应用程序的网络数据包能够全部被标记转发。附图说明18.图1为本发明实施例中的方法流程图。19.图2为本发明实施例中选中目标程序后设置对应防火墙过滤规则的流程图。20.图3为本发明实施例中目标程序启动后将其网络数据包通过透明代理转发到代理服务器的流程图。21.图4为本发明实施例的系统结构图。22.图5为本发明实施例的系统的工作流程图。具体实施方式23.以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。24.在介绍各实施例的具体方案之前,先对于相关概念进行说明。25.cgroups:即controlgroups,是linux内核的一个功能,用来限制、控制与分离一个进程组的资源。26.透明代理:透明代理是一种网络代理技术,它可以在不需要客户端配置的情况下,对网络通信进行代理和转发。它通常用于实现网络流量的过滤、监控、加密等功能。27.iptables:iptables是linux防火墙系统的重要组成部分,iptables的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者由该设备转发、路由时,都可以使用iptables进行控制。28.实施例一本实施例提出一种应用程序的透明代理方法,基于cgroups、iptables和透明代理,通过对应用程序的网络数据包进行标记转发,以达到在任何网络环境、任何应用程序代理方式网络访问。如图1所示,方法包括以下步骤:s101)获取代理服务器的配置信息并获取目标应用程序的信息;本实施例中,我们在linux系统中配置了应用代理服务,同时在上层应用中,增加应用代理参数配置的交互界面,以支持用户选择需要使用代理功能的应用程序。此外,在linux后台服务,增加api接口,方便上层应用调用。通过调用底层应用代理服务接口,可以完成网络代理设置。29.用户通过操作上层用户交互界面,完成代理服务器各项基本配置。包括代理服务器ip、端口、协议(http(s)、socks等),并对期望使用代理功能的应用程序进行选择。用户交互界面通过调用应用代理服务api接口,将所获取的信息传输给应用代理服务。应用代理服务通过api接口,获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息之后,根据这些信息进行后续的启动及初始化工作。30.本实施例中,api接口通过dbus接口设置应用代理参数及选择应用程序。31.s102)设置目标应用程序对应的防火墙过滤规则;设置防火墙过滤规则时,一方面要考虑控制网络流,另一方面要允许特定类型的数据流量进行转发。此外还需要对应用代理服务进行配置。32.如图2所示,应用代理服务根据所获取的信息,对应用代理服务配置进行设置,主要包括代理协议、ip地址、端口等的设置,之后初始化cgroups进程组,将应用程序的进程加入cgroups进程组就能限制其网络资源,从而控制网络流,最后还设置iptables转发规则,设置iptables转发规则时,使用iptables新增目标应用程序对应的mangle表和转发规则,mangle表可以将cgroups进程组中特定应用程序中的数据流量进行标记,以允许特定类型的数据流量进行转发。33.本实施例中,所述转发规则包括:若当前网络数据包存在所述标记,将当前网络数据包转发至本地的透明代理服务,若当前网络数据包不存在所述标记,将当前网络数据包转发至路由。34.s103)监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器,如图3所示,具体包括以下步骤:s201)获取目标应用程序的进程号,将目标应用程序的进程号添加到cgroups进程组的指定路径中,从而目标应用程序的网络数据将被标记,以限制目标应用程序的网络资源,具体的,应用程序运行时通过进程号监控应用程序,目标应用程序启动后,应用代理服务获取其进程号,并将进程号添加到cgroups进程组的指定路径中,以便对于目标应用程序的网络数据进行控制;s202)目标应用程序发送或者接收网络数据时,根据mangle表标记对应的网络数据包,所述网络数据包具体是指cgroups进程组的指定路径中进程号对应的应用程序的网络数据包,根据iptables的转发规则,将被标记的网络数据包转发至本地的透明代理服务;s203)透明代理服务根据代理服务器的配置信息,如代理服务器的ip和端口,将被标记的网络数据包转发至代理服务器。35.本实施例通过上述步骤,针对所选取的目标应用程序配置对应的防火墙过滤规则,根据防火墙过滤规则截获目标应用程序的网络数据包,根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器,可以由用户自主选择需要使用代理功能的应用程序,能够让无法自身设置代理功能的应用程序实现透明代理。36.此外,本实施例配置防火墙过滤规则时,通过使用iptables新增目标应用程序对应的mangle表和转发规则实现对应用程序网络数据进行标记和转发,通过将目标应用程序的进程号加入cgroups进程组的指定路径中来限制网络数据,以达到对目标应用程序的网络通信数据包进行监控,保证目标应用程序的网络数据包能够全部被标记转发。37.实施例二本实施例基于实施例一提出一种linux应用程序的透明代理系统,如图4所示,包括:应用代理界面交互单元,用于获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息;还用于监听到目标应用程序启动后,使能应用代理数据转发单元;本实施例中,应用代理界面交互单元是前端界面的上层应用程序,提供用户代理配置功能和应用程序选择功能,主要包括代理服务器ip、端口、协议等,通过调用后台接口,实现对代理服务配置及应用程序进行监听;应用代理数据转发单元,用于设置目标应用程序对应的防火墙过滤规则,对指定的应用程序网络数据进行iptables规则设置及转发规则设定;还用于对选定应用程序网络流量控制,即监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并转发给应用代理透明代理单元;应用代理透明代理单元,用于根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。38.如图5所示,本实施例的linux应用程序的透明代理系统工作流程如下:s1)应用代理界面交互单元由其ui界面,完成代理服务器各项基本配置,并对期望使用代理功能的应用程序进行选择,比如本实施例中选择蓝信为目标应用程序时,上层用户交互界面通过调用应用代理服务的api接口,将上述信息传输给应用代理服务。应用代理服务根据此信息进行启动及初始化工作。39.s2)应用代理数据转发单元通过ipatbles设置linux上防火墙过滤规则,以控制网络流。通过使用ipatbles新增mangle表和转发规则来设置网络数据包的过滤规则,以允许特定类型的数据流量进行转发。具体的,利用代理服务器各项基本配置,以及期望使用代理功能的应用程序,应用代理服务在后台对应用代理服务配置进行设置,如配置代理服务器ip、端口、协议,以及设置要选择的应用程序等,同时初始化cgroups进程组,设置iptables增加新的mangle表和转发规则,以将cgroups进程组中特定应用程序中的数据流量进行标记。比如步骤s1中选择蓝信为目标应用程序之后,应用代理服务在后台启动进行上述的初始化工作,蓝信启动后,将其相关的pid(进程号),加入cgroups设定的进程组,对蓝信的网络访问数据进行限制,iptables转发cgroups进程组中应用程序的网络数据包。40.s3)当应用程序运行时,应用代理界面交互单元通过进程号监控应用程序,并通知应用代理数据转发单元对选中的应用程序进行网络资源限制,应用代理数据转发单元对应用程序中需要转发的应用程序流量截获,通过应用代理透明代理单元转发到代理服务器。41.比如蓝信启动后,发送或接收的网络数据包,由于蓝信的进程号在cgroups进程组中,对蓝信的网络资源进行了限定后,通过mangle表进行标记,并按照iptables规则转发至本地的透明代理服务,透明代理服务再依据步骤s1中用户设定的代理服务器各项基本配置中的代理服务器的ip和端口,将网络数据包转发至代理服务器。例如,蓝信启动应用代理后,蓝信进程的pid(进程号)被加入到cgroups指定的进程组,在蓝信中发送语音或者文字等信息时,iptables通过接收到的网络数据的标志,来判定网络数据是否属于cgroup进程组中的被选择的应用程序,若不属于,不转发,直接发送到路由,若属于则iptables进行转发至透明代理服务。42.实施例三本实施例还提出一种透明代理系统,包括计算机设备,所述计算机设备被编程或配置以执行实施例一所述的linux应用程序的透明代理方法。43.综上所述,利用linux内核中的cgroup、iptables及透明代理功能,结合交互界面,实现了应用程序代理的一种新方式。对指定的应用程序的网络数据包进行标记,以达到对应用程序的网络通信数据包进行监控,保证网络数据包全部被标记转发。通过用户交互界面,由用户自主选择需要使用代理功能的应用程序,对于那些即使无法自身设置代理功能的应用程序同样适用;通过cgroup和iptables规则,对应用程序网络数据进行转发,实现对选择的应用程序的网络数据限制和隔离;同时,通过linux内核层cgroup对应用程序的网络数据包进行标记;最后通过透明代理方式,实现终端机上的应用程序代理方式;并且api接口通过dbus对应用程序及代理后台服务进行设置。具有如下有益效果:1.支持各类应用程序网络代理功能。44.2.提供用户统一交互界面可实现各类应用统一代理配置。45.上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。当前第1页12当前第1页12
技术特征:
1.一种linux应用程序的透明代理方法,其特征在于,包括以下步骤:s101)获取代理服务器的配置信息并获取目标应用程序的信息;s102)设置目标应用程序对应的防火墙过滤规则,具体包括:使用iptables新增目标应用程序对应的mangle表和转发规则;s103)监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。2.根据权利要求1所述的linux应用程序的透明代理方法,其特征在于,步骤s101具体包括:通过api接口,获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息。3.根据权利要求1所述的linux应用程序的透明代理方法,其特征在于,所述代理服务器的配置信息包括代理服务器ip、端口、协议中的一种或多种。4.根据权利要求1所述的linux应用程序的透明代理方法,其特征在于,所述mangle表用于标记目标应用程序的网络数据包,所述转发规则包括:若当前网络数据包被标记,将当前网络数据包转发至本地的透明代理服务,若当前网络数据包未被标记,将当前网络数据包转发至路由。5.根据权利要求1所述的linux应用程序的透明代理方法,其特征在于,步骤s103具体包括:目标应用程序发送或者接收网络数据时,根据mangle表标记对应的网络数据包,将被标记的网络数据包转发至本地的透明代理服务;透明代理服务根据代理服务器的配置信息,将被标记的网络数据包转发至代理服务器。6.根据权利要求5所述的linux应用程序的透明代理方法,其特征在于,步骤s102还包括:初始化cgroups进程组;步骤s103中还包括:获取目标应用程序的进程号,将目标应用程序的进程号添加到cgroups进程组的指定路径中,以限制目标应用程序的网络资源。7.根据权利要求6所述的linux应用程序的透明代理方法,其特征在于,步骤s103中根据mangle表标记对应的网络数据包时,所述网络数据包具体是指cgroups进程组的指定路径中进程号对应的应用程序的网络数据包。8.一种linux应用程序的透明代理系统,其特征在于,包括:应用代理界面交互单元,用于获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息;还用于监听到目标应用程序启动后,使能应用代理数据转发单元;应用代理数据转发单元,用于设置目标应用程序对应的防火墙过滤规则;还用于监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并转发给应用代理透明代理单元;应用代理透明代理单元,用于根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。9.一种透明代理系统,其特征在于,包括计算机设备,所述计算机设备被编程或配置以执行权利要求1~7任一所述的linux应用程序的透明代理方法。
技术总结
本发明公开了一种linux应用程序的透明代理方法及系统,方法包括:获取代理服务器的配置信息并获取目标应用程序的信息;设置目标应用程序对应的防火墙过滤规则;监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。本发明能够对于各种linux应用程序统一进行代理控制,用户可按需同时对各应用代理进行设置,解决部分应用无法使用代理方式进行网络访问的问题。式进行网络访问的问题。式进行网络访问的问题。
技术研发人员:郭俊余 赵阳 杨雄义 蒋林轩 史晶 张辉 程启
受保护的技术使用者:麒麟软件有限公司
技术研发日:2023.09.13
技术公布日:2023/10/20
背景技术:
::2.随着linux操作系统的生态不断完善,涌现了各种各样的linux应用程序。由于网络环境限制及安全性、访问速度等要求,这些应用程序在访问网络时经常需要使用代理方式。3.在linux操作系统上使用代理功能时,由于linux上代理设置方式无法为全部应用提供代理功能,且各种应用程序自身不具备代理配置功能,现有技术存在以下缺陷:linux操作系统上支持系统代理的设置,系统代理主要采用设置环境变量代理的方式。设置后应用程序需在自身软件ui上手动配置代理服务器信息,但部分应用程序不支持设置系统代理,导致无法进行代理。此外,应用程序代理设置成功后,只有该应用程序的网络流量会经过代理服务器,其他应用程序的网络流量不受影响,面对多应用程序使用代理功能或者整个计算机处在代理网络环境中时即多种应用需要使用代理情况,用户需要频繁操作。4.综上所述,因此需要在linux操作系统上实现一种通用的应用程序代理方法。技术实现要素:5.本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种linux应用程序的透明代理方法及系统,能够对于各种linux应用程序统一进行代理控制,用户可按需同时对各应用代理进行设置,解决部分应用无法使用代理方式进行网络访问的问题。6.为解决上述技术问题,本发明提出的技术方案为:一种linux应用程序的透明代理方法,包括以下步骤:s101)获取代理服务器的配置信息并获取目标应用程序的信息;s102)设置目标应用程序对应的防火墙过滤规则;s103)监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。7.进一步的,步骤s101具体包括:通过api接口,获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息。8.进一步的,所述代理服务器的配置信息包括代理服务器ip、端口、协议中的一种或多种。9.进一步的,步骤s102具体包括:使用iptables新增目标应用程序对应的mangle表和转发规则。10.进一步的,所述mangle表用于标记目标应用程序的网络数据包,所述转发规则包括:若当前网络数据包存在所述标记,将当前网络数据包转发至本地的透明代理服务,若当前网络数据包不存在所述标记,将当前网络数据包转发至路由。11.进一步的,步骤s103具体包括:目标应用程序发送或者接收网络数据时,根据mangle表标记对应的网络数据包,将被标记的网络数据包转发至本地的透明代理服务;透明代理服务根据代理服务器的配置信息,将被标记的网络数据包转发至代理服务器。12.进一步的,步骤s102还包括:初始化cgroups进程组;步骤s103中还包括:获取目标应用程序的进程号,将目标应用程序的进程号添加到cgroups进程组的指定路径中,以限制目标应用程序的网络资源。13.进一步的,步骤s103中根据mangle表标记对应的网络数据包时,所述网络数据包具体是指cgroups进程组的指定路径中进程号对应的应用程序的网络数据包。14.本发明还提出一种linux应用程序的透明代理系统,包括:应用代理界面交互单元,用于获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息;还用于监听到目标应用程序启动后,使能应用代理数据转发单元;应用代理数据转发单元,用于设置目标应用程序对应的防火墙过滤规则;还用于监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并转发给应用代理透明代理单元;应用代理透明代理单元,用于根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。15.本发明还提出一种透明代理系统,包括计算机设备,所述计算机设备被编程或配置以执行任一所述的linux应用程序的透明代理方法。16.与现有技术相比,本发明的优点在于:1.本发明针对所选取的目标应用程序配置对应的防火墙过滤规则,根据防火墙过滤规则截获目标应用程序的网络数据包,根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器,可以由用户自主选择需要使用代理功能的应用程序,能够让无法自身设置代理功能的应用程序实现透明代理。17.2.本发明配置防火墙过滤规则时,通过使用iptables新增目标应用程序对应的mangle表和转发规则实现对应用程序网络数据进行标记和转发,通过将目标应用程序的进程号加入cgroups进程组的指定路径中来限制网络数据,以达到对目标应用程序的网络通信数据包进行监控,保证目标应用程序的网络数据包能够全部被标记转发。附图说明18.图1为本发明实施例中的方法流程图。19.图2为本发明实施例中选中目标程序后设置对应防火墙过滤规则的流程图。20.图3为本发明实施例中目标程序启动后将其网络数据包通过透明代理转发到代理服务器的流程图。21.图4为本发明实施例的系统结构图。22.图5为本发明实施例的系统的工作流程图。具体实施方式23.以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。24.在介绍各实施例的具体方案之前,先对于相关概念进行说明。25.cgroups:即controlgroups,是linux内核的一个功能,用来限制、控制与分离一个进程组的资源。26.透明代理:透明代理是一种网络代理技术,它可以在不需要客户端配置的情况下,对网络通信进行代理和转发。它通常用于实现网络流量的过滤、监控、加密等功能。27.iptables:iptables是linux防火墙系统的重要组成部分,iptables的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者由该设备转发、路由时,都可以使用iptables进行控制。28.实施例一本实施例提出一种应用程序的透明代理方法,基于cgroups、iptables和透明代理,通过对应用程序的网络数据包进行标记转发,以达到在任何网络环境、任何应用程序代理方式网络访问。如图1所示,方法包括以下步骤:s101)获取代理服务器的配置信息并获取目标应用程序的信息;本实施例中,我们在linux系统中配置了应用代理服务,同时在上层应用中,增加应用代理参数配置的交互界面,以支持用户选择需要使用代理功能的应用程序。此外,在linux后台服务,增加api接口,方便上层应用调用。通过调用底层应用代理服务接口,可以完成网络代理设置。29.用户通过操作上层用户交互界面,完成代理服务器各项基本配置。包括代理服务器ip、端口、协议(http(s)、socks等),并对期望使用代理功能的应用程序进行选择。用户交互界面通过调用应用代理服务api接口,将所获取的信息传输给应用代理服务。应用代理服务通过api接口,获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息之后,根据这些信息进行后续的启动及初始化工作。30.本实施例中,api接口通过dbus接口设置应用代理参数及选择应用程序。31.s102)设置目标应用程序对应的防火墙过滤规则;设置防火墙过滤规则时,一方面要考虑控制网络流,另一方面要允许特定类型的数据流量进行转发。此外还需要对应用代理服务进行配置。32.如图2所示,应用代理服务根据所获取的信息,对应用代理服务配置进行设置,主要包括代理协议、ip地址、端口等的设置,之后初始化cgroups进程组,将应用程序的进程加入cgroups进程组就能限制其网络资源,从而控制网络流,最后还设置iptables转发规则,设置iptables转发规则时,使用iptables新增目标应用程序对应的mangle表和转发规则,mangle表可以将cgroups进程组中特定应用程序中的数据流量进行标记,以允许特定类型的数据流量进行转发。33.本实施例中,所述转发规则包括:若当前网络数据包存在所述标记,将当前网络数据包转发至本地的透明代理服务,若当前网络数据包不存在所述标记,将当前网络数据包转发至路由。34.s103)监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器,如图3所示,具体包括以下步骤:s201)获取目标应用程序的进程号,将目标应用程序的进程号添加到cgroups进程组的指定路径中,从而目标应用程序的网络数据将被标记,以限制目标应用程序的网络资源,具体的,应用程序运行时通过进程号监控应用程序,目标应用程序启动后,应用代理服务获取其进程号,并将进程号添加到cgroups进程组的指定路径中,以便对于目标应用程序的网络数据进行控制;s202)目标应用程序发送或者接收网络数据时,根据mangle表标记对应的网络数据包,所述网络数据包具体是指cgroups进程组的指定路径中进程号对应的应用程序的网络数据包,根据iptables的转发规则,将被标记的网络数据包转发至本地的透明代理服务;s203)透明代理服务根据代理服务器的配置信息,如代理服务器的ip和端口,将被标记的网络数据包转发至代理服务器。35.本实施例通过上述步骤,针对所选取的目标应用程序配置对应的防火墙过滤规则,根据防火墙过滤规则截获目标应用程序的网络数据包,根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器,可以由用户自主选择需要使用代理功能的应用程序,能够让无法自身设置代理功能的应用程序实现透明代理。36.此外,本实施例配置防火墙过滤规则时,通过使用iptables新增目标应用程序对应的mangle表和转发规则实现对应用程序网络数据进行标记和转发,通过将目标应用程序的进程号加入cgroups进程组的指定路径中来限制网络数据,以达到对目标应用程序的网络通信数据包进行监控,保证目标应用程序的网络数据包能够全部被标记转发。37.实施例二本实施例基于实施例一提出一种linux应用程序的透明代理系统,如图4所示,包括:应用代理界面交互单元,用于获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息;还用于监听到目标应用程序启动后,使能应用代理数据转发单元;本实施例中,应用代理界面交互单元是前端界面的上层应用程序,提供用户代理配置功能和应用程序选择功能,主要包括代理服务器ip、端口、协议等,通过调用后台接口,实现对代理服务配置及应用程序进行监听;应用代理数据转发单元,用于设置目标应用程序对应的防火墙过滤规则,对指定的应用程序网络数据进行iptables规则设置及转发规则设定;还用于对选定应用程序网络流量控制,即监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并转发给应用代理透明代理单元;应用代理透明代理单元,用于根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。38.如图5所示,本实施例的linux应用程序的透明代理系统工作流程如下:s1)应用代理界面交互单元由其ui界面,完成代理服务器各项基本配置,并对期望使用代理功能的应用程序进行选择,比如本实施例中选择蓝信为目标应用程序时,上层用户交互界面通过调用应用代理服务的api接口,将上述信息传输给应用代理服务。应用代理服务根据此信息进行启动及初始化工作。39.s2)应用代理数据转发单元通过ipatbles设置linux上防火墙过滤规则,以控制网络流。通过使用ipatbles新增mangle表和转发规则来设置网络数据包的过滤规则,以允许特定类型的数据流量进行转发。具体的,利用代理服务器各项基本配置,以及期望使用代理功能的应用程序,应用代理服务在后台对应用代理服务配置进行设置,如配置代理服务器ip、端口、协议,以及设置要选择的应用程序等,同时初始化cgroups进程组,设置iptables增加新的mangle表和转发规则,以将cgroups进程组中特定应用程序中的数据流量进行标记。比如步骤s1中选择蓝信为目标应用程序之后,应用代理服务在后台启动进行上述的初始化工作,蓝信启动后,将其相关的pid(进程号),加入cgroups设定的进程组,对蓝信的网络访问数据进行限制,iptables转发cgroups进程组中应用程序的网络数据包。40.s3)当应用程序运行时,应用代理界面交互单元通过进程号监控应用程序,并通知应用代理数据转发单元对选中的应用程序进行网络资源限制,应用代理数据转发单元对应用程序中需要转发的应用程序流量截获,通过应用代理透明代理单元转发到代理服务器。41.比如蓝信启动后,发送或接收的网络数据包,由于蓝信的进程号在cgroups进程组中,对蓝信的网络资源进行了限定后,通过mangle表进行标记,并按照iptables规则转发至本地的透明代理服务,透明代理服务再依据步骤s1中用户设定的代理服务器各项基本配置中的代理服务器的ip和端口,将网络数据包转发至代理服务器。例如,蓝信启动应用代理后,蓝信进程的pid(进程号)被加入到cgroups指定的进程组,在蓝信中发送语音或者文字等信息时,iptables通过接收到的网络数据的标志,来判定网络数据是否属于cgroup进程组中的被选择的应用程序,若不属于,不转发,直接发送到路由,若属于则iptables进行转发至透明代理服务。42.实施例三本实施例还提出一种透明代理系统,包括计算机设备,所述计算机设备被编程或配置以执行实施例一所述的linux应用程序的透明代理方法。43.综上所述,利用linux内核中的cgroup、iptables及透明代理功能,结合交互界面,实现了应用程序代理的一种新方式。对指定的应用程序的网络数据包进行标记,以达到对应用程序的网络通信数据包进行监控,保证网络数据包全部被标记转发。通过用户交互界面,由用户自主选择需要使用代理功能的应用程序,对于那些即使无法自身设置代理功能的应用程序同样适用;通过cgroup和iptables规则,对应用程序网络数据进行转发,实现对选择的应用程序的网络数据限制和隔离;同时,通过linux内核层cgroup对应用程序的网络数据包进行标记;最后通过透明代理方式,实现终端机上的应用程序代理方式;并且api接口通过dbus对应用程序及代理后台服务进行设置。具有如下有益效果:1.支持各类应用程序网络代理功能。44.2.提供用户统一交互界面可实现各类应用统一代理配置。45.上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。当前第1页12当前第1页12
技术特征:
1.一种linux应用程序的透明代理方法,其特征在于,包括以下步骤:s101)获取代理服务器的配置信息并获取目标应用程序的信息;s102)设置目标应用程序对应的防火墙过滤规则,具体包括:使用iptables新增目标应用程序对应的mangle表和转发规则;s103)监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。2.根据权利要求1所述的linux应用程序的透明代理方法,其特征在于,步骤s101具体包括:通过api接口,获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息。3.根据权利要求1所述的linux应用程序的透明代理方法,其特征在于,所述代理服务器的配置信息包括代理服务器ip、端口、协议中的一种或多种。4.根据权利要求1所述的linux应用程序的透明代理方法,其特征在于,所述mangle表用于标记目标应用程序的网络数据包,所述转发规则包括:若当前网络数据包被标记,将当前网络数据包转发至本地的透明代理服务,若当前网络数据包未被标记,将当前网络数据包转发至路由。5.根据权利要求1所述的linux应用程序的透明代理方法,其特征在于,步骤s103具体包括:目标应用程序发送或者接收网络数据时,根据mangle表标记对应的网络数据包,将被标记的网络数据包转发至本地的透明代理服务;透明代理服务根据代理服务器的配置信息,将被标记的网络数据包转发至代理服务器。6.根据权利要求5所述的linux应用程序的透明代理方法,其特征在于,步骤s102还包括:初始化cgroups进程组;步骤s103中还包括:获取目标应用程序的进程号,将目标应用程序的进程号添加到cgroups进程组的指定路径中,以限制目标应用程序的网络资源。7.根据权利要求6所述的linux应用程序的透明代理方法,其特征在于,步骤s103中根据mangle表标记对应的网络数据包时,所述网络数据包具体是指cgroups进程组的指定路径中进程号对应的应用程序的网络数据包。8.一种linux应用程序的透明代理系统,其特征在于,包括:应用代理界面交互单元,用于获取用户在交互界面输入的代理服务器的配置信息,并获取用户在交互界面选择的目标应用程序的信息;还用于监听到目标应用程序启动后,使能应用代理数据转发单元;应用代理数据转发单元,用于设置目标应用程序对应的防火墙过滤规则;还用于监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并转发给应用代理透明代理单元;应用代理透明代理单元,用于根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。9.一种透明代理系统,其特征在于,包括计算机设备,所述计算机设备被编程或配置以执行权利要求1~7任一所述的linux应用程序的透明代理方法。
技术总结
本发明公开了一种linux应用程序的透明代理方法及系统,方法包括:获取代理服务器的配置信息并获取目标应用程序的信息;设置目标应用程序对应的防火墙过滤规则;监听到目标应用程序启动后,根据所述防火墙过滤规则截获目标应用程序的网络数据包,并根据代理服务器的配置信息,将截获的网络数据包通过透明代理转发到代理服务器。本发明能够对于各种linux应用程序统一进行代理控制,用户可按需同时对各应用代理进行设置,解决部分应用无法使用代理方式进行网络访问的问题。式进行网络访问的问题。式进行网络访问的问题。
技术研发人员:郭俊余 赵阳 杨雄义 蒋林轩 史晶 张辉 程启
受保护的技术使用者:麒麟软件有限公司
技术研发日:2023.09.13
技术公布日:2023/10/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/