CN109361784B - 一种在四层代理网络环境下获取客户端真实ip的方法 - Google Patents
一种在四层代理网络环境下获取客户端真实ip的方法 Download PDFInfo
- Publication number
- CN109361784B CN109361784B CN201811494008.2A CN201811494008A CN109361784B CN 109361784 B CN109361784 B CN 109361784B CN 201811494008 A CN201811494008 A CN 201811494008A CN 109361784 B CN109361784 B CN 109361784B
- Authority
- CN
- China
- Prior art keywords
- client
- proxy server
- source station
- server
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2521—Translation architectures other than single NAT servers
- H04L61/2528—Translation at a proxy
-
- 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/2866—Architectures; Arrangements
- H04L67/2876—Pairs of inter-processing entities at each side of the network, e.g. split proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种在四层代理网络环境下获取客户端真实IP的方法,方法具体为:在源站部署本地代理;四层代理获取请求数据的源IP、源端口,并将请求数据附加到生成的HAProxy代理协议生成新请求,发至源站;本地代理服务器程序解析数据包中的HAProxy代理协议相关数据;开启套接字选项绑定客户端IP来伪造的源地址,结合Linux下的防火墙包过滤规则、策略路由、默认路由形成的一套路由欺骗技术,使得本地代理和业务服务器成功建立连接,实现数据的正常交换;进而实现源站服务器获取到客户端的真实IP;本发明部署快速且对源站服务端无感知,节约了时间和人力成本。
Description
技术领域
本发明属于客户端IP解析领域,具体涉及一种在四层代理网络环境下获取客户端真实IP的方法。
背景技术
四层代理网络环境下的数据交互路径是client→proxy→upstream_server,即客户端(client)不直接发送数据给源站服务器(upstream_server),而是将数据发送给四层代理服务器(proxy),四层代理服务器再将从客户端收到的数据转发给源站服务器,同时四层代理服务器也负责将源站服务器的响应数据转发给客户端。由于源站服务器同四层代理服务器建立连接,而不是与客户端建立连接,所以源站服务器获取到的对端IP是四层代理服务器的IP而不是客户端IP。
一般来说源站服务器通过相应系统调用获取的对端IP信息即为真实客户端IP。但是当源站接入某些基于四层转发的防御网络(常见于DDoS防御)中时,源站获取到的对端IP端口为代理服务器的IP端口。如果需要获取到客户端真实IP端口,一般的解决方案是通过解析数据中的代理协议来获取。这种方式需要对源站服务端程序进行升级以支持解析代理协议,这种方式可能消耗大量时间及人力成本,对业务造成影响。
发明内容
为解决上述缺陷,本发明提供了一种在四层代理网络环境下获取客户端真实IP的方法。主要通过在源站部署本地代理,结合Linux下的防火墙包过滤规则、策略路由、默认路由形成的一套路由欺骗技术,从而实现源站服务器获取到客户端的真实IP。
本发明的具体步骤如下:
步骤1:四层代理接受客户端请求数据,并获取请求数据的源IP、源端口;
步骤2:四层代理生成HAProxy格式的代理协议,并将请求数据附加到HAProxy代理协议,生成新请求;再将新请求转发至源站;
步骤3:在源站部署本地代理,本地代理接受请求数据和HAProxy代理协议;
步骤4:本地代理服务器程序解析数据包中的HAProxy代理协议相关数据,并提取出客户端IP、客户端端口;
步骤5:本地代理开启IP_TRANSPARENT套接字选项,进而绑定客户端IP来伪造的源地址,并向源站业务服务器发起连接;通过一套路由欺骗机制使得本地代理和业务服务器成功建立连接;
步骤6:本地代理发送原始请求数据给业务服务器,并接受业务服务器相应的回应数据;再将回应数据发送给四层代理;
步骤7:四层代理将源站回应数据发回给客户端,从而使得本地代理服务、业务服务器和客户端成功建立连接,实现正常交互数据;
步骤8:源站业务服务器通过相应系统调用获取连接对端IP,即是本地代理服务伪造的源IP,也就是客户端真实IP。
同时源站部分满足以下条件:
a.源站所使用的操作系统应为Linux(内核版本2.6.28以上)。
b.在源站所在主机上部署本地反向代理服务,配置CAP_NET_RAW权限,配置解析HAProxy格式代理协议。
c.配置一个特殊用户specail_user。
d.在源站主机配置防火墙包过滤规则、策略路由、默认路由实现路由欺骗。
进一步的,实现路由欺骗的具体步骤为:
(1)使用特殊用户specail_user启动本地代理,本地代理发出的所有数据在经过Linux系统自带防火墙时命中防火墙包过滤规则,使得本地代理发出的数据包中都带上了一个特定的标记,并将标记保存在连接中;
(2)本地代理发送的带标记的数据包到达业务服务器,业务服务回应数据包时命中防火墙包过滤规则,使得业务服务器发送的回应报文中也带上特定标记;
(3)本地代理在做路由查找时命中策略路由规则,策略路由规则指定了所需查询的路由表,进而找到带特定标记的回应报文,使得业务服务发送的回应报文,发往lookback口最终被送往协议栈上层处理,而不是发往公网;至此本地代理和业务服务成功建立连接。
本地代理获取客户端IP的方法可以替换为:在四层代理服务器发往源站的TCP报文的头部插入客户端IP,源站服务器使用原始套接字接收完整TCP报文,并从TCP头部中提取到客户端IP。
本发明带来的有益效果为:
本发明主要通过在源站部署本地代理,结合Linux下的防火墙包过滤规则、策略路由、默认路由形成的一套路由欺骗技术,从而实现源站服务器获取到客户端的真实IP。不需要对源站的服务器程序做任何修改,部署快速且对源站服务端无感知。节约了时间和人力成本。
附图说明
图1为本发明工作流程逻辑示意图;
图2为本发明在四层代理的工作流程图;
图3为本发明在本地代理的工作流程图。
具体实施方式
下面结合附图和实施例对本发明做进一步详细说明。
图1为本发明工作流程逻辑示意图,可以看出:该方案分为两大部分:四层代理部分和源站部分。
四层代理部分:
其工作流程如图2所示,具体如下:
1、四层代理接受客户端请求数据。
2、获取请求数据的源IP、源端口。
3、生成HAProxy格式的代理协议。
HAProxy代理协议为以下格式的字符串:
“PROXY协议源IP目的IP源端口目的端口\r\n”
例如:“PROXY TCP4 213.103.23.88 10.0.0.2 49863 8080\r\n”其中213.103.22.88就是真实客户端IP信息,49863就是客户端端口信息。
4、将请求数据附加到HAProxy代理协议,生成新请求。
5、再将新请求转发至源站。
6、接受源站回应。
7、将源站回应数据发回给客户端,从而使得本地代理服务、业务服务器和客户端成功建立连接,实现正常交互数据。
源站部分:
源站部分满足以下条件:
a.源站所使用的操作系统应为Linux(内核版本2.6.28以上)。
b.在源站所在主机上部署本地反向代理服务,配置CAP_NET_RAW权限,配置解析HAProxy格式代理协议。
c.配置一个特殊用户specail_user。
#添加特殊用户
useradd specail_user
d.在源站主机配置防火墙包过滤规则、策略路由、默认路由实现路由欺骗。具体配置如下:
#添加iptables
iptables-t mangle-I PREROUTING-m mark--mark 6666-j CONNMARK--save-mark
iptables-t mangle-I OUTPUT-m connmark--mark 6666-j CONNMARK--restore-mark
iptables-t mangle-I POSTROUTING-m owner--uid-owner specail_user-jMARK--set-mark6666
#配置默认路由
ip route add local 0.0.0.0/0dev lo table 100
#配置策略路由
ip rule add fwmark 6666lookup 100
#使能route_localnet
echo 1>/proc/sys/net/ipv4/conf/eth0/route_localnet
路由欺骗机制原理
由于本地代理使用真实客户端IP作为源IP发起连接,那么业务服务器准备回应数据包时,通过路由表匹配到默认路由,会将回应数据包直接发送到公网,导致本地代理无法和业务服务建立连接。为了使得本地代理和业务服务能成功连接,就需要在源站上配置一系列防火墙包过滤规则、策略路由、默认路由实现一套路由欺骗机制使得本地代理和业务服务能成功建立连接。
1.使用特殊用户specail_user启动本地代理,这样本地代理发出的所有数据在经过Linux系统自带防火墙时都会命中之前配置的防火墙包过滤规则中的
iptables-t mangle-I POSTROUTING-m owner--uid-owner specail_user-jMARK--set-mark6666
iptables-t mangle-I PREROUTING-m mark--mark 6666-j CONNMARK--save-mark
使得本地代理发出的数据包中都带上了一个特定的标记6666,并将标记6666保存在连接中。
2.当本地代理发送的带标记6666的数据包到达业务服务,业务服务回应数据包时,会命中之前配置的防火墙包过滤规则中的
iptables-t mangle-I OUTPUT-m connmark--mark 6666-j CONNMARK--restore-mark
使得业务服务发送的回应报文中也带上特定标记6666
3.由于业务服务发送的回应报文中带有特定标记6666,在做路由查找时,会命中以下策略路由规则
ip rule add fwmark 6666lookup 100
这个条策略路由规则指定了所需查询的路由表为table 100
table 100中的条目ip route add local 0.0.0.0/0dev lo table 100,使得业务服务发送的回应报文,发往lookback口最终被送往协议栈上层处理,而不是发往公网。至此本地代理和业务服务就能成功建立连接,并进行后续数据交互。
本地代理工作流程如图3所示,
1、接受来自四层代理的请求数据和HAProxy代理协议。
2、本地代理服务器程序解析数据包中的HAProxy代理协议相关数据,并提取出客户端IP、客户端端口。
3、本地代理开启IP_TRANSPARENT套接字选项,进而绑定客户端IP来伪造的源地址。
4、向源站业务服务器发起连接;通过一套路由欺骗机制使得本地代理和业务服务器成功建立连接。
5、发送原始请求数据给业务服务器,并接受业务服务器相应的回应数据。
6、将回应数据发送给四层代理。
7、建立本地代理服务、业务服务器和客户端之间连接,实现正常交互数据。
Claims (3)
1.一种在四层代理网络环境下获取客户端真实IP的方法,其特征在于,客户端和源站之间部署四层代理服务器,源站部署本地代理服务器和业务服务器,具体包括以下步骤:
步骤1:四层代理服务器接受客户端请求数据,并获取请求数据的源IP、源端口;
步骤2:四层代理服务器生成HAProxy格式的代理协议,并将请求数据附加到HAProxy代理协议,生成新请求;再将新请求转发至源站;
步骤3:在源站部署本地代理服务器,本地代理服务器接受请求数据和HAProxy代理协议;
步骤4:本地代理服务器程序解析数据包中的HAProxy代理协议相关数据,并提取出客户端IP、客户端端口;本地代理服务器获取客户端IP的方法为:在四层代理服务器发往源站的TCP报文的头部插入客户端IP,业务服务器使用原始套接字接收完整TCP报文,并从TCP头部中提取到客户端IP;
步骤5:本地代理服务器开启IP_TRANSPARENT套接字选项,进而绑定客户端IP来伪造的源地址,并向源站业务服务器发起连接;通过一套路由欺骗机制使得本地代理服务器和业务服务器成功建立连接;
步骤6:本地代理服务器发送原始请求数据给业务服务器,并接受业务服务器相应的回应数据;再将回应数据发送给四层代理服务器;
步骤7:四层代理服务器将源站回应数据发回给客户端,从而使得本地代理服务服务器、业务服务器和客户端成功建立连接,实现正常交互数据;
步骤8:业务服务器通过相应系统调用获取连接对端IP,即是本地代理服务器伪造的源IP,也就是客户端真实IP;
在源站配置一个特殊用户specail_user;同时源站配置防火墙包过滤规则、策略路由和默认路由实现路由欺骗,实现路由欺骗的具体步骤为:
(1)使用特殊用户specail_user启动本地代理,本地代理服务器发出的所有数据在经过Linux系统自带防火墙时命中防火墙包过滤规则,使得本地代理服务器发出的数据包中都带上了一个特定的标记,并将标记保存在连接中;
(2)本地代理服务器发送的带标记的数据包到达业务服务器,业务服务回应数据包时命中防火墙包过滤规则,使得业务服务器发送的回应报文中也带上特定标记;
(3)本地代理服务器在做路由查找时命中策略路由规则,策略路由规则指定了所需查询的路由表,进而找到带特定标记的回应报文,使得业务服务发送的回应报文,发往lookback口最终被送往协议栈上层处理,而不是发往公网;至此本地代理服务器和业务服务器成功建立连接。
2.根据权利要求1所述的一种在四层代理网络环境下获取客户端真实IP的方法,其特征在于,所述源站所使用的操作系统应为Linux,其内核版本在2.6.28以上。
3.根据权利要求2所述的一种在四层代理网络环境下获取客户端真实IP的方法,其特征在于,所述源站部署本地反向代理服务,配置CAP_NET_RAW权限,配置解析HAProxy格式代理协议。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811494008.2A CN109361784B (zh) | 2018-12-07 | 2018-12-07 | 一种在四层代理网络环境下获取客户端真实ip的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811494008.2A CN109361784B (zh) | 2018-12-07 | 2018-12-07 | 一种在四层代理网络环境下获取客户端真实ip的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109361784A CN109361784A (zh) | 2019-02-19 |
CN109361784B true CN109361784B (zh) | 2021-09-21 |
Family
ID=65331714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811494008.2A Active CN109361784B (zh) | 2018-12-07 | 2018-12-07 | 一种在四层代理网络环境下获取客户端真实ip的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109361784B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110535879A (zh) * | 2019-09-23 | 2019-12-03 | 中星科源(北京)信息技术有限公司 | 一种原始地址传输方法、系统、存储介质和处理器 |
US11831616B2 (en) * | 2020-03-24 | 2023-11-28 | Microsoft Technology Licensing, Llc | Reverse proxy servers for implementing application layer-based and transport layer-based security rules |
CN111586200B (zh) * | 2020-04-29 | 2022-05-17 | 平安科技(深圳)有限公司 | 一种传递客户端真实ip地址的方法及系统 |
CN111741109B (zh) * | 2020-06-19 | 2024-06-18 | 深圳前海微众银行股份有限公司 | 基于代理的访问方法、装置、设备及存储介质 |
CN111988423A (zh) * | 2020-08-31 | 2020-11-24 | 浪潮云信息技术股份公司 | 一种基于Nginx的网络四层与七层间的负载均衡方法及系统 |
CN112688878B (zh) * | 2020-11-25 | 2023-04-18 | 紫光云技术有限公司 | 一种基于haproxy实现透传源ip的tcp负载均衡的方法 |
CN115242888A (zh) * | 2021-04-02 | 2022-10-25 | 深圳市锐速云计算有限公司 | 四层tcp/udp协议转发真实ip方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1011244A3 (en) * | 1998-12-16 | 2002-06-05 | Lucent Technologies Inc. | Method and apparatus for transparently directing requests for web objects to proxy caches |
CN1905553A (zh) * | 2005-07-28 | 2007-01-31 | 易星 | 在dos攻击或者设备过载时保障所选用户访问的方法 |
CN101175013A (zh) * | 2006-11-03 | 2008-05-07 | 飞塔信息科技(北京)有限公司 | 一种拒绝服务攻击防护方法、网络系统和代理服务器 |
CN101547210A (zh) * | 2009-05-14 | 2009-09-30 | 福建星网锐捷网络有限公司 | 一种tcp连接的处理方法和装置 |
CN105915658A (zh) * | 2016-07-04 | 2016-08-31 | 上海优刻得信息科技有限公司 | 获取客户端ip地址的数据调用方法、数据传输方法 |
CN106911778A (zh) * | 2017-02-27 | 2017-06-30 | 网宿科技股份有限公司 | 一种流量引导方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101345741A (zh) * | 2007-07-13 | 2009-01-14 | 盛大计算机(上海)有限公司 | 基于互联网的代理系统及代理连接方法 |
CN102970291B (zh) * | 2012-11-19 | 2016-01-06 | 北京思特奇信息技术股份有限公司 | 一种穿越单边防火墙建立tcp连接的方法及装置 |
-
2018
- 2018-12-07 CN CN201811494008.2A patent/CN109361784B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1011244A3 (en) * | 1998-12-16 | 2002-06-05 | Lucent Technologies Inc. | Method and apparatus for transparently directing requests for web objects to proxy caches |
CN1905553A (zh) * | 2005-07-28 | 2007-01-31 | 易星 | 在dos攻击或者设备过载时保障所选用户访问的方法 |
CN101175013A (zh) * | 2006-11-03 | 2008-05-07 | 飞塔信息科技(北京)有限公司 | 一种拒绝服务攻击防护方法、网络系统和代理服务器 |
CN101547210A (zh) * | 2009-05-14 | 2009-09-30 | 福建星网锐捷网络有限公司 | 一种tcp连接的处理方法和装置 |
CN105915658A (zh) * | 2016-07-04 | 2016-08-31 | 上海优刻得信息科技有限公司 | 获取客户端ip地址的数据调用方法、数据传输方法 |
CN106911778A (zh) * | 2017-02-27 | 2017-06-30 | 网宿科技股份有限公司 | 一种流量引导方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109361784A (zh) | 2019-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109361784B (zh) | 一种在四层代理网络环境下获取客户端真实ip的方法 | |
CN111095881B (zh) | 用于分段路由网络信令和分组处理的方法及装置 | |
EP3125476B1 (en) | Service function chaining processing method and device | |
US8363663B2 (en) | Methods and apparatus for routing data to nodes | |
TWI334714B (en) | Discovery method for network devices | |
EP1363441A1 (en) | Method for reducing the number of global IP addresses required for servers located in private networks | |
Jankiewicz et al. | Ipv6 node requirements | |
CN102271050B (zh) | 一种IPv6网络中网络设备自动配置的方法、网络设备和系统 | |
CN104137518A (zh) | 在面向服务架构总线上的互联网协议连接 | |
US11785095B2 (en) | Method for routing data of a session initialized between a terminal and a server | |
US20140032782A1 (en) | Method and apparatus for route selection of host in multihoming site | |
Beck et al. | Monitoring the neighbor discovery protocol | |
CN106507414B (zh) | 报文转发方法及装置 | |
CN102710485A (zh) | 透明代理方法及代理服务器 | |
JP5464960B2 (ja) | 通信装置及び通信装置の通信方法並びにプログラム | |
EP2690832B1 (en) | Communication device, communication system, and communication method | |
CN112118258B (zh) | 在蜜罐场景下获取攻击者信息的系统及方法 | |
WO2015127751A1 (zh) | 一种处理NAT64前缀的方法、网络设备及DHCPv6服务器 | |
CN108566446A (zh) | 局域网域名解析方法、装置和系统 | |
CN104917687B (zh) | 报文分流方法及装置 | |
KR100772537B1 (ko) | IPv4 네트워크 환경에서 IPv6 패킷이 IPv4로터널링되도록 하는 IPv6 전환 장치 및 방법 | |
CN113507410B (zh) | 一种cgn备份方法及装置 | |
CN105282034B (zh) | Arp/ndp学习系统及学习方法 | |
US7159033B2 (en) | Router search system, router search method and router search program | |
RU2706866C1 (ru) | Способы, устройства, машиночитаемые носители и системы для установления сертифицированных соединений с терминалами в локальной сети |
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 | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 9/F, Block C, No. 28 Tianfu Avenue North Section, Chengdu High tech Zone, China (Sichuan) Pilot Free Trade Zone, Chengdu City, Sichuan Province, 610000 Patentee after: CHENGDU KNOWNSEC INFORMATION TECHNOLOGY Co.,Ltd. Address before: 610000, 11th floor, building 2, No. 219, Tianfu Third Street, hi tech Zone, Chengdu, Sichuan Province Patentee before: CHENGDU KNOWNSEC INFORMATION TECHNOLOGY Co.,Ltd. |