CN106936796B - 一种基于sni的服务器负载均衡方法及设备 - Google Patents
一种基于sni的服务器负载均衡方法及设备 Download PDFInfo
- Publication number
- CN106936796B CN106936796B CN201511029004.3A CN201511029004A CN106936796B CN 106936796 B CN106936796 B CN 106936796B CN 201511029004 A CN201511029004 A CN 201511029004A CN 106936796 B CN106936796 B CN 106936796B
- Authority
- CN
- China
- Prior art keywords
- sni
- server
- load balancing
- message
- information
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/166—Implementing security features at a particular protocol layer at the transport layer
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于指定服务器域名的服务器负载均衡方法及设备,其方法是解析负载均衡设备收到带有域名的Client‑Hello消息,通过解析TLS扩展消息的client‑hello得到域名,并以此在响应该域名请求的服务群组中根据负载均衡算法找出一台服务器,此后所有的握手信息和加密数据对负载均衡设备透明。本发明与仅利用TLS扩展消息域名就达到了负载均衡的目的,大大降低了运行成本,同时快速且透明转发建立安全连接时的TLS握手消息和后续加密数据。
Description
技术领域
本发明涉及网络应用交付控制领域,特别涉及一种基于指定服务器域名(severname indication,以下简称:SNI)的服务器负载均衡方法及设备。
背景技术
TLS(transport layer security传输层安全协议)在RFC(Request ForComments)6066中增加SNI扩展使得用户在同一个IP上安全地响应不同的服务,它能满足用户端通过该扩展消息明确指定希望与哪个服务建立安全连接;当服务端收到该消息后返回相应服务需要的证书来建立安全连接;达到不增加公网IP的情况下实现对不同服务的不同的安全连接的建立。
TLS协议的扩展属性SNI是通过发送虚拟主机名作为TLS协商的一部分,这使得服务器可以在握手阶段选择正确虚拟域,并发送对应证书。因此,如果用户端和服务器支持SNI,每个IP上可以部署多张证书。SNI在2003年6月作为传输层安全(TLS)扩展添加到IETF的RFC 3546标准中。
现有SNI实现技术大多是基于RFC中提出的解决IP限制问题进而对现有协议处理进行扩展,其最终实现的目标仍然是TLS本身,使用仅局限于解决安全传输问题,并不能解决服务器负载均衡问题;并且由于该扩展服务于安全传输层协议TLS,故需要处理TLS所有状态,例如:身份验证,密钥协商,计算对称密钥等,服务端的非对称密钥和协商出来的对称密钥对作为网络中间设备如负载均衡设备、或作为代理服务设备可见,这对于一些高度保密的业务存在着保密性的漏洞。
发明内容
为克服已有技术中存在的问题,本发明提出了一种基于指定服务器域名的服务器负载均衡方法,其目的是仅通过解析用户端携带的TLS扩展消息实现服务器的负载均衡,并且在实现服务器负载均衡的同时实现高度安全。
本发明还设计出了一种基于指定服务器域名的服务器负载均衡设备,其目的是通过解析用户端携带的TLS扩展消息域名,进而选择服务器群组并实现流量均衡、透明分发。
为实现上述目的,本发明提出了一种基于SNI消息的服务器负载均衡的方法,包括以下步骤:
一种基于SNI消息的服务器负载均衡的方法,包括以下步骤:
步骤1,利用TCP/IP头信息解析提取源地址、目的地址、源端口、目的端口信息,进而查找TCP连接控制信息;
步骤2,找到上述TCP连接控制信息后,若其对端的TCP连接控制已建立则直接转到步骤6;若否,则:
步骤3,判断是否命中基于SNI的服务器负载均衡配置,若否,则直接转到步骤5;若命中SNI配置,则:
步骤4,执行SNI_SLB分步骤:
步骤4.1,若用户端TCP连接控制未建立,则建立用户端TCP连接控制;
步骤4.2,若用户端TCP连接控制已建立,但所述的TCP报文未携带TLS client-hello消息或携带client-hello信息而消息不含SNI扩展字段,则执行步骤6;若携带client-hello消息且含有SNI扩展字段,则:
步骤4.3,执行负载均衡分步骤:
步骤4.3.1,根据解析到的SNI扩展域名找到相应的服务器群组;
步骤4.3.2,从上述服务器群组中根据负载均衡算法找出将要响应此次安全连接请求的后台服务器;
步骤4.3.3,根据选中的后台服务器TCP/IP信息创建服务端连接控制信息,且与用户端连接控制信息彼此建立关联,然后进入步骤6;
步骤5,负载均衡设备处理非SNI-SLB信息;
步骤6,根据服务端连接控制信息进行数据处理或转发。
一种基于SNI的服务器负载均衡设备,至少包括TCP/IP头信息解析模块、连接控制管理模块、负载均衡配置管理模块、TLS扩展消息解析模块、SNI_SLB模块、非SNI-SLB模块、以及数据转发模块。
所述的TCP/IP头信息解析模块用于提取基于SNI消息的源地址、目的地址、源端口、目的端口的信息。
所述的连接控制管理模块用于用户端和服务器端建立连接,以及保存已建立的用户端和服务器端连接信息,它包括服务端连接控制管理模块和用户端连接控制管理模块。
所述的负载均衡配置管理模块用于判断是否命中基于SNI的服务器负载均衡配置。
所述的TLS扩展消息解析模块用于解析TLS协议中client-hello消息的SNI扩展字段。
所述的SNI_SLB模块用于执行上述基于SNI的服务器负载均衡分步骤。
所述的数据转发模块用于根据服务端连接控制信息进行数据处理或转发。
本发明与仅利用TLS扩展消息域名就达到了负载均衡的目的,大大降低了运行成本,同时快速且透明转发建立安全连接时的TLS握手消息和后续加密数据。
附图说明
图1是本发明系统结构示意图;
图2是本发明一种基于指定服务器域名的负载均衡方法流程图;
图3是本发明基于SNI的服务器负载均衡分步骤流程图;
图4是本发明一种基于SNI的服务器负载均衡设备结构示意图;
图5是本发明一较佳实施例系统结构示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也是本申请各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的工作原理及实施方式作进一步地详细描述。
本发明的工作原理是负载均衡设备收到带有域名的Client-Hello消息,通过解析client-hello得到域名(SNI字段)并以此在响应该域名请求的服务群中根据负载均衡算法找出一台服务器,此后所有的握手信息和加密数据对负载均衡设备透明。
本发明是建立在TLS新增的client-hellow消息的扩展信息之上的,如图1所示,该扩展针对TLS协议的意义在于:用户端101在浏览器输入本端域名,例如https://www.a.com,此域名通过DNS域名解析可以找到相应的IP地址,在TLS层,www.a.com被封装在client-hello消息的SNI扩展字段;在服务端的TLS层会解析SNI字段并做TLS握手流程处理,例如根据SNI返回与请求相匹配的证书等,但本发明基于SNI的负载并不处理TLS握手流程,只是解析出SNI字段,根据请求的SNI字段,例如www.a.com找到服务器组,例如服务器组A,根据负载均衡配置的算法,例如如RR(Round-Robin,轮询调度)算法,选择服务器,如选择A2,之后将目的IP改为A2的IP地址,端口改为A2监听的端口后转发数据到A2,后续的数据,包括应用数据和TLS协议数据,在负载设备上透明转发。
同理对用户端102,例如其域名为https://www.b.com的安全连接最终也是通过同一个在负载均衡配置的IP完成的,这样就达到了在同一个IP上服务不同的用户请求且实现负载均衡。
再如图1所示,本发明的系统是由用户端100、互联网200、基于SNI消息的负载均衡设备300、以及服务端400构成,所述的用户端浏览器使用支持SNI的TLS协议,例如TLS 1.2协议。
在图1系统配置的基础上,一种基于SNI消息的服务器负载均衡的方法,如图2所示,包括以下步骤:
步骤1,利用TCP/IP头信息解析提取源地址、目的地址、源端口、目的端口信息,进而查找TCP连接控制;
步骤2,找到上述TCP连接控制,若其对端的TCP连接控制已建立,直接转到步骤6;若否(即其对端的TCP连接控制未建立),则:
步骤3,判断是否命中基于SNI的服务器负载均衡配置,若否,则直接转到步骤5;若命中SNI配置,则:
步骤4,执行SNI_SLB分步骤,如图3所示,
步骤4.1,若用户端TCP连接控制未建立,则建立用户端TCP连接控制;
步骤4.2,若用户端TCP连接控制已建立,但TCP报文未携带TLS client-hello消息或携带client-hello信息而消息不含SNI扩展字段,则执行步骤6;若所述的TCP报文携带client-hello消息且含有SNI扩展字段,则:
步骤4.3,执行负载均衡分步骤:
步骤4.3.1,根据解析到的SNI扩展域名找到相应的服务器群组;
步骤4.3.2,从上述服务器群组中根据负载均衡算法找出将要响应此次安全连接请求的后台服务器;
步骤4.3.3,根据选中的后台服务器TCP/IP信息创建服务端连接控制信息,且与用户端连接控制信息彼此建立关联;然后执行步骤6;
步骤5,处理非SNI-SLB信息;
步骤6,根据服务端连接控制信息进行数据处理或转发。
一种基于SNI的服务器负载均衡设备,其结构如图4所示:该设备至少包括TCP/IP头信息解析模块301、连接控制管理模块302、负载均衡配置管理模块303、TLS扩展消息解析模块304、SNI_SLB模块306、非SNI-SLB模块305、以及数据转发模块307。其中,
所述的TCP/IP头信息解析模块用于提取基于SNI消息的源地址、目的地址、源端口、目的端口的信息。
所述的连接控制管理模块用于建立TCP用户端和服务器端的连接,以及保存已建立用户端和服务器端连接控制的关联信息;包括服务端连接控制管理模块322和用户端连接控制管理模块312。
所述的负载均衡配置管理模块用于判断是否命中基于SNI的服务器负载均衡配置。
所述的TLS扩展消息解析模块用于解析TLS协议中client-hello消息的SNI扩展字段。
所述的SNI_SLB模块用于执行上述基于SNI的服务器负载均衡分步骤。
所述的数据转发模块用于根据服务端连接控制信息进行数据处理或转发。
现举一较佳实例说明本发明系统及方法,选取某公司一个负载均衡设备,例如:ArraynNetworksAPV6600,系统搭建如图5所示,现对系统完成以下配置:
首先,用户端端浏览器使用支持SNI的TLS1.2协议;
其次,服务端负载均衡设备配置:
(1)基本网络配置如下:
ip address"port1"192.168.1.102 255.255.255.0
ip address"port2"10.8.1.102 255.255.255.0system mode reverse
(2)SNI_SLB配置如下:
slb virtual https"sni_vs"3.3.3.3 443 arp 0
slb real http"a1"192.168.1.100 80 9999999 tcp 3 3
slb real http"a2"192.168.1.101 80 9999999 tcp 3 3
slb real http"b1"10.8.1.100 80 9999999 tcp 3 3
slb real http"b2"10.8.1.101 80 9999999 tcp 3 3
slb group method"sni_group_a"rr
slb group member"sni_group_a""a1"1 0
slb group member"sni_group_a""a2"1 0
slb group method"sni_group_b"rr
slb group member"sni_group_b""b1"1 0
slb group member"sni_group_b""b2"1 0
slb policy sni"sni_vs""sni_group_a""www.a.com"
slb policy sni"sni_vs""sni_group_b"www.b.com
该实施例访问同一域名时基于SNI扩展字段负载均衡的方法如下:
1.1.1.1的用户端在浏览器的地址栏输入https://www.a.com后发起连接,用户端DNS解析到目标地址3.3.3.3后发出带有www.a.com扩展信息的client-hello信息到负载均衡的对外公开的服务公网IP地址3.3.3.3;
负载均衡设备解析SNI字段www.a.com并找到与之匹配的服务器A组群和服务器B组群,IP地址分别为192.168.1.100,192.168.1.101,根据负载均衡配置的RR算法找到对应的服务器组群,假设这里找到服务器A组群,将用户端数据转发给服务器A组群;服务器A组群返回server-hello信息和后续的所有用户端与服务器端交互信息将通过负载均衡设备透明转发给IP地址为1.1.1.1的用户端;
IP地址为2.2.2.2的用户端发起https://www.b.com连接到3.3.3.3;
负载均衡设备解析SNI字段www.b.com并找到与之对应的服务器组群,由于使用RR的均衡算法,此次应该选择服务器B组群来响应这个请求,故将用户端数据转发给服务器B组群;
服务器B组群返回server-hello信息和后续的所有用户端与服务器端交互信息将通过负载均衡设备透明转发给IP地址为2.2.2.2的用户端。
需要说明的是,本发明各设备实施方式中提到的各单元都是逻辑单元,在物理上,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现,这些逻辑单元本身的物理实现方式并不是最重要的,这些逻辑单元所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明没有引入上述各设备实施方式以及与解决本发明所提出的技术问题关系不太密切的单元,但这并不表明不存在上述设备实施方式以及其它有关实施单元。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (3)
1.一种基于SNI消息的服务器负载均衡的方法,其特征是包括以下步骤:
步骤1,利用TCP/IP头信息解析提取源地址、目的地址、源端口、目的端口信息,进而查找TCP连接控制信息;
步骤2,找到上述TCP连接控制信息后,若其对端的TCP连接控制已建立则直接转到步骤6;若否,则:
步骤3,判断是否命中基于SNI的服务器负载均衡配置,若否,则直接转到步骤5;若命中SNI配置,则:
步骤4,执行SNI_SLB分步骤;
步骤4.1,若用户端TCP连接控制未建立,则建立用户端TCP连接控制;
步骤4.2,若用户端TCP连接控制已建立,但所述的TCP报文未携带TLS client-hello消息或携带client-hello信息而消息不含SNI扩展字段,则执行步骤6;若携带client-hello消息且含有SNI扩展字段,则:
步骤4.3,执行负载均衡分步骤,然后执行步骤6;
步骤5,处理非SNI-SLB信息;
步骤6,根据服务端连接控制信息进行数据处理或转发。
2.根据权利要求1所述的一种基于SNI消息的服务器负载均衡方法,其特征是所述步骤4.3所述的负载均衡分步骤还包括:
4.3.1,根据解析到的SNI扩展域名找到相应的服务器群组;
4.3.2,从上述服务器群组中根据负载均衡算法找出将要响应此次安全连接请求的后台服务器;
4.3.3,根据选中的后台服务器TCP/IP信息创建服务端连接控制信息,且与用户端连接控制信息彼此建立关联,然后执行上述步骤6。
3.一种基于SNI的服务器负载均衡设备,其特征是至少包括TCP/IP头信息解析模块、连接控制管理模块、负载均衡配置管理模块、TLS扩展消息解析模块、SNI_SLB模块、非SNI-SLB模块、以及数据转发模块;
所述的TCP/IP头信息解析模块用于提取基于SNI消息的源地址、
目的地址、源端口、目的端口的信息;
所述的连接控制管理模块用于TCP用户端和服务器端建立连接,以及保存已建立的用户端和服务器端连接信息,包括服务端连接控制管理模块和用户端连接控制管理模块;
所述的负载均衡配置管理模块用于判断是否命中基于SNI的服务器负载均衡配置;
所述的TLS扩展消息解析模块用于解析TLS协议中client-hello消息的SNI扩展字段;
所述的SNI_SLB模块用于执行上述基于SNI的服务器负载均衡分步骤;对应地所述的非SNI-SLB模块用于处理非SNI-SLB信息;
所述的数据转发模块用于根据服务端连接控制信息进行数据处理或转发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511029004.3A CN106936796B (zh) | 2015-12-30 | 2015-12-30 | 一种基于sni的服务器负载均衡方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511029004.3A CN106936796B (zh) | 2015-12-30 | 2015-12-30 | 一种基于sni的服务器负载均衡方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106936796A CN106936796A (zh) | 2017-07-07 |
CN106936796B true CN106936796B (zh) | 2019-11-29 |
Family
ID=59442691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511029004.3A Active CN106936796B (zh) | 2015-12-30 | 2015-12-30 | 一种基于sni的服务器负载均衡方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106936796B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108156224B (zh) * | 2017-12-14 | 2020-11-13 | 格尔软件股份有限公司 | 基于tls协议sni机制实现自定义代理隧道协议的方法 |
CN110830461B (zh) * | 2019-10-28 | 2021-08-20 | 杭州涂鸦信息技术有限公司 | 基于tls长连接的跨区的rpc服务调用方法及系统 |
CN111049901B (zh) * | 2019-12-11 | 2022-12-02 | 深圳市优必选科技股份有限公司 | 一种负载均衡方法、负载均衡系统及注册服务器 |
CN115361455B (zh) * | 2022-08-22 | 2024-01-23 | 中能融合智慧科技有限公司 | 一种数据传输存储方法、装置以及计算机设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291458B (zh) * | 2011-08-12 | 2014-06-18 | 乐视网信息技术(北京)股份有限公司 | 一种p2p服务器架构方法 |
CN102970242B (zh) * | 2012-11-09 | 2015-06-17 | 深圳市共进电子股份有限公司 | 一种实现负载均衡的方法 |
US20140280959A1 (en) * | 2013-03-15 | 2014-09-18 | Eric J. Bauer | Application server instance selection based on protocol latency information |
CN103369403B (zh) * | 2013-08-05 | 2017-04-05 | 江苏省广电有线信息网络股份有限公司南京分公司 | 机顶盒点播包分析系统和分析方法 |
-
2015
- 2015-12-30 CN CN201511029004.3A patent/CN106936796B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106936796A (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9246819B1 (en) | System and method for performing message-based load balancing | |
US9124564B2 (en) | Context awareness during first negotiation of secure key exchange | |
US10171590B2 (en) | Accessing enterprise communication systems from external networks | |
US8180901B2 (en) | Layers 4-7 service gateway for converged datacenter fabric | |
US9027129B1 (en) | Techniques for protecting against denial of service attacks | |
CN106936796B (zh) | 一种基于sni的服务器负载均衡方法及设备 | |
WO2017124837A1 (zh) | 一种sslvpn的代理方法、服务器以及客户端及其处理方法 | |
US8533453B2 (en) | Method and system for configuring a server and dynamically loading SSL information | |
US20170318059A1 (en) | Single pass load balancing and session persistence in packet networks | |
US10250637B2 (en) | System and method of pre-establishing SSL session connections for faster SSL connection establishment | |
US20060224883A1 (en) | Programming interface for configuring network services in a server | |
US20170222917A1 (en) | Handling multipath flows in service function chaining | |
EP2850770A1 (en) | Transport layer security traffic control using service name identification | |
CN112468518B (zh) | 访问数据处理方法、装置、存储介质及计算机设备 | |
WO2019178942A1 (zh) | 一种进行ssl握手的方法和系统 | |
US10924533B2 (en) | System, apparatus and method for load balancing | |
CN104009972B (zh) | 网络安全接入的认证系统及其认证方法 | |
CN103179104B (zh) | 一种远程服务的访问方法、系统及其设备 | |
US20070226745A1 (en) | Method and system for processing a service request | |
CN105262795B (zh) | 一种私有云和公有云结合的在线教育系统 | |
US9762746B2 (en) | Advice of charge in content centric networks | |
CN104660592B (zh) | 一种基于安全套接层协议特征的负载分发方法 | |
CN108737407A (zh) | 一种劫持网络流量的方法及装置 | |
CN106797384A (zh) | 以不同的协议将请求路由到集群中的相同端点 | |
US20150189004A1 (en) | Method and farm load balancing device for establishing a bi-directional server to server communication and computer program thereof |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100125 Beijing city Chaoyang District Liangmaqiao Road No. 40 building 10 room 1001, twenty-first Century Patentee after: Beijing Huayao Technology Co., Ltd Address before: 100125 Beijing city Chaoyang District Liangmaqiao Road No. 40 building 10 room 1001, twenty-first Century Patentee before: Huayao (China) Technology Co., Ltd. |
|
CP01 | Change in the name or title of a patent holder |