System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及网络通信,特别涉及一种用于保护移动端vpn的通信方法和系统。
技术介绍
1、flutter是google开源的构建用户界面(ui)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、web、桌面和嵌入式平台。已经很多移动端应用采用flutter来构建android、ios的应用,以实现一套代码两端表现一致的完美运行。但在使用flutter开发需支持vpn服务的android应用时,该应用使用dart的库来编写socket通信时会遇到vpn的掩码路由覆盖目标请求服务器的ip地址的问题,此时请求通过vpn转发,并不会到达目标请求服务器。针对该问题通常会使用如下两种方案:1)android侧使用java或kotlin的原生语言开发socket通信,通过dart与java/kotlin的通信方法进行dart与java/kotlin之前的数据通信;但是无法与ios等其他平台复用,失去了使用flutter跨端开发的核心竞争力。2)vpn服务器做转发请求,将源指向目标请求服务器的请求在到达vpn服务器后,通过vpn服务器转发回目标请求服务器;但这样vpn服务器会承受不必要的请求压力,且目标请求服务器的响应效率受vpn服务器制约。因此,亟需一种flutter应用下android用于保护移动端vpn的通信方法和系统。
技术实现思路
1、为了解决现有技术存在的一个或多个技术问题,本专利技术实施例提供了一种用于保护移动端vpn的通信方法和系统。
2、第一方面,本专
3、接收使用vpnservice的移动端发出指向目标请求服务器的通信请求;
4、利用wireguard-go创建的tun虚拟网络设备发送所述通信请求包括的ip数据包,并对所述ip数据包进行解析得到所述目标请求服务器的目标ip地址;
5、判断所述vpnservice的路由的子网掩码是否覆盖所述目标ip地址;
6、若所述子网掩码覆盖所述目标ip地址,则调用转发单元接收所述ip数据包,以将所述ip数据包由所述转发单元发送至所述目标请求服务器;其中,所述转发单元用于建立所述tun虚拟网络设备与所述目标请求服务器的通信连接。
7、优选地,所述对所述ip数据包进行解析得到所述目标请求服务器的目标ip地址,包括:
8、在wireguard-go的routinereadfromtun方法内,对所述ip数据包进行字节分析,依据固定的ip协议头确定所述目标ip地址。
9、优选地,所述判断所述vpnservice的路由的子网掩码是否覆盖所述目标ip地址,包括:
10、对所述子网掩码进行解析,确定掩码范围;
11、判断所述目标ip地址是否匹配所述掩码范围;
12、若所述目标ip地址匹配所述掩码范围,则确定所述子网掩码覆盖所述目标ip地址。
13、优选地,所述转发单元内包括采用c语言构建的套接字,所述套接字通过使用java本地接口调用所述vpnservice的protect的函数,以使所述tun虚拟网络设备与所述目标请求服务器直接通信。
14、优选地,该方法还包括:
15、若所述子网掩码未覆盖所述目标ip地址,则通过wireguard加密的vpn隧道将所述ip数据包发送至所述目标请求服务器。
16、优选地,所述移动端包括android。
17、第二方面,本专利技术还提供了一种用于保护移动端vpn的通信系统,用在flutter应用中,所述系统包括:
18、通信请求模块,用于接收使用vpnservice的移动端发出指向目标请求服务器的通信请求;
19、解析模块,用于利用wireguard-go创建的tun虚拟网络设备发送所述通信请求包括的ip数据包,并对所述ip数据包进行解析得到所述目标请求服务器的目标ip地址;
20、判断模块,用于判断所述vpnservice的路由的子网掩码是否覆盖所述目标ip地址;
21、通信模块,用于在所述子网掩码覆盖所述目标ip地址时,调用转发单元接收所述ip数据包,以将所述ip数据包由所述转发单元发送至所述目标请求服务器;其中,所述转发单元用于建立所述tun虚拟网络设备与所述目标请求服务器的通信连接。
22、优选地,所述转发单元内包括采用c语言构建的套接字,所述套接字通过使用java本地接口调用所述vpnservice的protect的函数,以使所述tun虚拟网络设备与所述目标请求服务器直接通信。
23、第三方面,本专利技术还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现上述任一项所述的用于保护移动端vpn的通信方法。
24、第四方面,本专利技术还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项所述的用于保护移动端vpn的通信方法。
25、本专利技术提供了一种用于保护移动端vpn的通信方法和系统,该方法在flutter应用中,接收到指向目标请求服务器的通信请求时,先通过tun虚拟网络设备将该通信请求中包括的ip数据包发出,通过解析得到该ip数据包中目标请求服务器的目标ip地址后,在判断出vpn服务器的子网掩码覆盖目标ip地址后,调用与目标请求服务器直接通信的转发单元接收ip数据包,以将ip数据包由转发单元直接发送至目标请求服务器。如此,在使用flutter开发需支持vpn服务的android应用时,即便遇到vpn的掩码路由覆盖目标请求服务器的ip地址的情况,也能将指向目标请求服务器的通信请求在一端就进行转发,不会继续请求到vpn服务器;同时也无需修改flutter中dart关于socket的代码,可实现fluttersocket的跨端能力。
本文档来自技高网...【技术保护点】
1.一种用于保护移动端VPN的通信方法,其特征在于,在Flutter应用中,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述IP数据包进行解析得到所述目标请求服务器的目标IP地址,包括:
3.根据权利要求1所述的方法,其特征在于,所述判断所述VPNService的路由的子网掩码是否覆盖所述目标IP地址,包括:
4.根据权利要求1所述的方法,其特征在于,所述转发单元内包括采用C语言构建的套接字,所述套接字通过使用Java本地接口调用所述VPNService的protect的函数,以使所述Tun虚拟网络设备与所述目标请求服务器直接通信。
5.根据权利要求1所述的方法,其特征在于,还包括:
6.根据权利要求1至5中任一所述的方法,其特征在于,所述移动端包括Android。
7.一种用于保护移动端VPN的通信系统,其特征在于,在Flutter应用中,所述系统包括:
8.根据权利要求7所述的系统,其特征在于,所述转发单元内包括采用C语言构建的套接字,所述套接字通过使用Java本地接口调用
9.一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-6中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-6中任一项所述的方法。
...【技术特征摘要】
1.一种用于保护移动端vpn的通信方法,其特征在于,在flutter应用中,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述ip数据包进行解析得到所述目标请求服务器的目标ip地址,包括:
3.根据权利要求1所述的方法,其特征在于,所述判断所述vpnservice的路由的子网掩码是否覆盖所述目标ip地址,包括:
4.根据权利要求1所述的方法,其特征在于,所述转发单元内包括采用c语言构建的套接字,所述套接字通过使用java本地接口调用所述vpnservice的protect的函数,以使所述tun虚拟网络设备与所述目标请求服务器直接通信。
5.根据权利要求1所述的方法,其特征在于,还包括:
6.根据权利要求1至5中任一...
【专利技术属性】
技术研发人员:潘涛,李飞,刘琼,姜海昆,范宇,
申请(专利权)人:长扬科技北京股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。