CN104639564A - 一种udp协议的代理方法 - Google Patents
一种udp协议的代理方法 Download PDFInfo
- Publication number
- CN104639564A CN104639564A CN201510093697.6A CN201510093697A CN104639564A CN 104639564 A CN104639564 A CN 104639564A CN 201510093697 A CN201510093697 A CN 201510093697A CN 104639564 A CN104639564 A CN 104639564A
- Authority
- CN
- China
- Prior art keywords
- udp
- address
- message
- proxy
- original
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Abstract
公开一种UDP协议的代理方法,其能够实现在linux内核中UDP协议的代理,满足操作系统的用户态对UDP代理的需求。该方法包括步骤:(1)用户态收到需要代理的UDP报文;(2)调用设置套接口选项setsockopt接口来从用户态访问linux内核中UDP的连接跟踪Conntrack;(3)从内核中UDP的conntrack获取对应报文的原始目的地址;(4)将原始目的地址返回给用户态;(5)用户态得到报文的原始目的IP地址后开始代理业务;(6)代理业务完成后将结果反馈给原始源IP地址对应的用户;(7)结束。
Description
技术领域
本发明属于网络通信协议和网络代理的技术领域,具体地涉及一种UDP协议的代理方法。
背景技术
代理(Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备就具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止被攻击。
提供代理服务的电脑系统或其它类型的网络终端称为代理服务器(Proxy Server)。一个完整的网络代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源(如:文件)。在后一种情况中,代理服务器可能对目标服务器的资源下载至本地缓存,如果客户端所要获取的资源在代理服务器的缓存之中,则代理服务器并不会向目标服务器发送请求,而是直接返回本身已经缓存的资源。一些代理协议允许代理服务器改变客户端的原始请求、目标服务器的原始响应,以满足代理协议的需要。代理服务器的选项和设置在计算机程序中,通常包括一个“防火墙”,允许用户输入代理地址,它会遮盖他们的网络活动,可以允许绕过互联网过滤实现网络访问。
根据协议不同,可以分为FTP(文件传输协议,File Transfer Protocol)代理,HTTP(超文本传输协议,HyperText Transfer Protocol)代理,socks(防火墙安全会话转换协议)代理等代理技术。但是,当前的Linux内核是不支持UDP(用户数据报协议,User Datagram Protocol)代理的,而现在的许多网络终端是采用linux内核的,所以目前的网络终端无法实现UDP协议的代理。在VPN(虚拟专用网络)技术中,因为不支持UDP代理,所以要实现类似的功能都是在内核中编写代码,供内核中的相关模块使用,用户态无法使用这类接口,以至于要在用户态实现UDP代理几乎成为了不可能的事情。
发明内容
本发明要解决的技术解决问题是:克服现有技术的不足,提供一种UDP协议的代理方法,其能够实现在linux内核中UDP协议的代理,满足操作系统的用户态对UDP代理的需求。
本发明的技术解决方案是:这种UDP协议的代理方法,该方法包括以下步骤:
(1)用户态收到需要代理的UDP报文;
(2)调用设置套接口选项setsockopt接口来从用户态访问linux内核中UDP的连接跟踪Conntrack;
(3)从内核中UDP的conntrack获取对应报文的原始目的地址;
(4)将原始目的地址返回给用户态;
(5)用户态得到报文的原始目的IP地址后开始代理业务;
(6)代理业务完成后将结果反馈给原始源IP地址对应的用户;
(7)结束。
本发明在Linux内核中通过会话信息获取当前流的原始目的IP,提供socketopt接口,用来支持从用户态访问内核中UDP的conntrack,从而从内核中获取UDP报文的原始目的IP,因此能够实现在linux内核中UDP协议的代理,满足操作系统的用户态对UDP代理的需求。
附图说明
图1示出了根据本发明的UDP协议的代理方法的流程图。
具体实施方式
当前的Linux内核能通过NAT把数据报文送到用户态代理程序去处理,这时,目的IP地址会变成代理程序监听的IP地址。对于TCP,内核已提供了相关的接口,让代理程序能找到数据报文原始的目的IP地址。因为UDP协议本身是无连接的,所以内核没有提供获取数据报文原始目的IP地址的接口,以致于无法对UDP进行代理。
本发明就是在Linux内核中提供这样一个接口,以实现UDP的代理功能。
如图1所示,这种UDP协议的代理方法,该方法包括以下步骤:
(1)用户态收到需要代理的UDP报文;
(2)调用设置套接口选项setsockopt接口来从用户态访问linux内核中UDP的连接跟踪Conntrack;
(3)从内核中UDP的conntrack获取对应报文的原始目的地址;
(4)将原始目的地址返回给用户态;
(5)用户态得到报文的原始目的IP地址后开始代理业务;
(6)代理业务完成后将结果反馈给原始源IP地址对应的用户;
(7)结束。
本发明在Linux内核中通过会话信息获取当前流的原始目的IP,提供支持接口,来支持用户态访问内核中UDP的conntrack的socketopt,从而从内核中获取UDP报文的原始目的IP,因此能够实现在linux内核中UDP协议的代理,满足操作系统的用户态对UDP代理的需求。
优选地,在所述步骤(2)中的setsockopt接口增加获取UDP报文的原始目的IP地址的方法:修改linux内核的系统调用接口sys_setsockopt()函数,在该函数添加获取UDP原始目的IP地址,并返回给setsockopt接口的调用者。
优选地,在所述步骤(3)中获取对应报文的原始目的地址包括:
(3.1)通过UDP报文中ip头部的信息构造一个tuple;具体地为
memset(&tuple,0,sizeof(tuple));
tuple.dst.protonum=iph->protocol;
tuple.dst.u3.ip=iph->saddr;
tuple.dst.u.udp.port=ports[0];
tuple.src.u3.ip=iph->daddr;
tuple.src.u.udp.port=ports[1];
tuple.src.l3num=PF_INET;
(3.2)以这个tuple为参数调用nf_conntrack_find_get(&init_net,NF_CT_DEFAULT_ZONE,&tuple);
(3.3)读取对应连接会话的Conntrack信息,找到对应的原始目的IP地址。具体地为:
ct=nf_ct_tuplehash_to_ctrack(h);
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=
ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u3.ip
在VPN技术中,因为不支持UDP代理,所以要实现类似的功能都是在内核中编写代码,供内核中的相关模块使用,用户态无法使用这类接口,以至于要在用户态实现UDP代理几乎成为了不可能的事情。
UDP虽然与TCP不一样,是无连接的,其实在内核中还是有记录其会话信息,我们可以从会话信息中找到做过NAT的UDP流程的原始的目的IP。
本发明通过对现有Socket选项进行扩展,用户态的代理程序,只需要设置此选项,就可以轻松的获取到当前UDP报文的原始目的IP。
以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。
Claims (3)
1.一种UDP协议的代理方法,其特征在于:该方法包括以下步骤:
(1)用户态收到需要代理的UDP报文;
(2)调用设置套接口选项setsockopt接口来从用户态访问linux内核中UDP的连接跟踪Conntrack;
(3)从内核中UDP的conntrack获取对应报文的原始目的地址;
(4)将原始目的地址返回给用户态;
(5)用户态得到报文的原始目的IP地址后开始代理业务;
(6)代理业务完成后将结果反馈给原始源IP地址对应的用户;
(7)结束。
2.根据权利要求1所述的UDP协议的代理方法,其特征在于:在所述步骤(2)中的setsockopt接口增加获取UDP报文的原始目的IP地址的方法:修改linux内核的系统调用接口sys_setsockopt()函数,在该函数添加获取UDP原始目的IP地址,并返回给setsockopt接口的调用者。
3.根据权利要求2所述的UDP协议的代理方法,其特征在于:在所述步骤(3)中获取对应报文的原始目的地址包括:
(3.1)通过UDP报文中ip头部的信息构造一个tuple;
(3.2)以这个tuple为参数调用nf_conntrack_find_get(&init_net,NF_CT_DEFAULT_ZONE,&tuple);
(3.3)读取对应连接会话的Conntrack信息,找到对应的原始目的IP地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510093697.6A CN104639564A (zh) | 2015-03-03 | 2015-03-03 | 一种udp协议的代理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510093697.6A CN104639564A (zh) | 2015-03-03 | 2015-03-03 | 一种udp协议的代理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104639564A true CN104639564A (zh) | 2015-05-20 |
Family
ID=53217877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510093697.6A Pending CN104639564A (zh) | 2015-03-03 | 2015-03-03 | 一种udp协议的代理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104639564A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105791315A (zh) * | 2016-04-25 | 2016-07-20 | 网宿科技股份有限公司 | 一种udp协议加速方法和系统 |
CN111131043A (zh) * | 2018-10-30 | 2020-05-08 | 深信服科技股份有限公司 | 一种udp数据包的传输方法、系统及相关组件 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1528081A (zh) * | 2001-06-08 | 2004-09-08 | �����ĵ� | 用于和无线设备的双方发起数据通信的方法和系统 |
US20070147380A1 (en) * | 2005-11-08 | 2007-06-28 | Ormazabal Gaston S | Systems and methods for implementing protocol-aware network firewall |
US20080031258A1 (en) * | 2006-08-01 | 2008-02-07 | International Business Machines Corporation | Overload protection for SIP servers |
CN101175036A (zh) * | 2007-11-01 | 2008-05-07 | 南京大学 | 基于内网节点转发技术的防火墙/子网的穿透方法 |
CN102420835A (zh) * | 2012-01-10 | 2012-04-18 | 广东佳和通信技术有限公司 | 一种融合通信系统中rtp媒体流的代理方法 |
CN103840994A (zh) * | 2012-11-23 | 2014-06-04 | 华耀(中国)科技有限公司 | 一种用户端通过 vpn 访问内网的系统及方法 |
-
2015
- 2015-03-03 CN CN201510093697.6A patent/CN104639564A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1528081A (zh) * | 2001-06-08 | 2004-09-08 | �����ĵ� | 用于和无线设备的双方发起数据通信的方法和系统 |
US20070147380A1 (en) * | 2005-11-08 | 2007-06-28 | Ormazabal Gaston S | Systems and methods for implementing protocol-aware network firewall |
US20080031258A1 (en) * | 2006-08-01 | 2008-02-07 | International Business Machines Corporation | Overload protection for SIP servers |
CN101175036A (zh) * | 2007-11-01 | 2008-05-07 | 南京大学 | 基于内网节点转发技术的防火墙/子网的穿透方法 |
CN102420835A (zh) * | 2012-01-10 | 2012-04-18 | 广东佳和通信技术有限公司 | 一种融合通信系统中rtp媒体流的代理方法 |
CN103840994A (zh) * | 2012-11-23 | 2014-06-04 | 华耀(中国)科技有限公司 | 一种用户端通过 vpn 访问内网的系统及方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105791315A (zh) * | 2016-04-25 | 2016-07-20 | 网宿科技股份有限公司 | 一种udp协议加速方法和系统 |
CN105791315B (zh) * | 2016-04-25 | 2019-05-14 | 网宿科技股份有限公司 | 一种udp协议加速方法和系统 |
CN111131043A (zh) * | 2018-10-30 | 2020-05-08 | 深信服科技股份有限公司 | 一种udp数据包的传输方法、系统及相关组件 |
CN111131043B (zh) * | 2018-10-30 | 2022-04-29 | 深信服科技股份有限公司 | 一种udp数据包的传输方法、系统及相关组件 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9319315B2 (en) | Distributing transmission of requests across multiple IP addresses of a proxy server in a cloud-based proxy service | |
EP3979559A1 (en) | Rule-based network-threat detection for encrypted communications | |
US9143421B2 (en) | Network system capable of implementing stun with the assistance of two network devices and method thereof | |
CN111314499B (zh) | 一种域名代理方法、装置、设备及可读存储介质 | |
US9185077B2 (en) | Isolation proxy server system | |
JP2017518696A (ja) | パブリッククラウドのプライベートネットワーク資源との接続 | |
CN101946493A (zh) | 用于提供连接到因特网的客户端之间的连接性的方法和系统 | |
CN104427010A (zh) | 应用于动态虚拟专用网络的网络地址转换方法和装置 | |
JP2012138901A (ja) | リレーサーバを利用したデータ伝送システム及び方法 | |
CN113905030B (zh) | 内外网通讯方法、装置、内网终端、代理服务器和存储介质 | |
US11005813B2 (en) | Systems and methods for modification of p0f signatures in network packets | |
CN113381906B (zh) | 基于政企系统业务的限制性外网访问测试方法 | |
CN105323310A (zh) | 网络通信方法、设备及网络附属存储设备 | |
US20210326298A1 (en) | Acceleration system for facilitating processing of api calls | |
US20230291706A1 (en) | Method for accessing network, media gateway, electronic device and storage medium | |
TWI535323B (zh) | 點對點裝置與點對點連線方法 | |
Cirani et al. | mjCoAP: An open-source lightweight Java CoAP library for Internet of Things applications | |
US20140337478A1 (en) | Peer-to-peer network communications | |
US20130262652A1 (en) | Articles of manufacture, service provider computing methods, and computing service systems | |
CN111726400A (zh) | 反向连接的方法、装置和服务端系统 | |
CN104639564A (zh) | 一种udp协议的代理方法 | |
TWI735633B (zh) | 資料傳輸的方法、設備、裝置及系統 | |
CN113852697B (zh) | 一种sdp终端流量代理方法、装置、设备及存储介质 | |
US20150326671A1 (en) | State-based intercept of interactive communications network connections for provision of targeted, status-based messaging | |
EP3316545A1 (en) | Forwarding service requests from outbound proxy servers to remote servers inside of firewalls |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20180724 |
|
AD01 | Patent right deemed abandoned |