本帖最后由 adds 于 2017-8-28 15:04 编辑
什么是三角传输?什么场景下使用?如何配置?有没有替代方案?
一、三角传输 服务器将Reply数据包传输给客户端,但传输过程中数据不经过AD。 某公司场景理解:启用三角传输后,用户访问虚拟服务的数据经过AD调度到真实服务器,服务器直接回包给客户端。
从上图可以看出,客户端、AD和服务器的传输过程组成了一个三角形,所以叫三角传输。
二、什么场景下使用? AD旁路部署,服务器要看到客户端的真实源IP时,可以使得三角传输实现此需求。 其数据流走向为: 客户端--AD--服务器--客户端
三、如何配置? 配置之前,先理解下三角传输。 一般情况下,AD做服务器负载时是旁路部署,假设客户启用了SNAT(虚拟服务--SNAT地址集),那么用户看到数据包的源IP就是AD的WAN口IP。参下图: 终端用户192.168.10.1用户访问虚拟服务172.16.1.1,用户请求数据到达AD,AD在转发其请求时匹配虚拟服务,以172.16.1.1的源IP访问真实服务器172.16.1.100,服务器看到的数据源地址是经过SNAT后的地址。
那么,如果不启用SNAT,情况是什么样的?假设服务器的网关指到核心交换机,即172.16.1.254。其数据流程见图: 用户192.168.10.1访问AD发布的服务172.16.1.1,AD匹配虚拟服务后直接将请求转发给真实的服务器172.16.1.100,服务器接收到该请求后,将Reply包发给自己的网关,交换机查找路由转发给终端用户。这样来看,数据完成了转发流程,但有一个问题,即PC机不会接收服务器的Reply。因为PC是向172.16.1.1发起了请求,回包却是172.16.1.100回的,PC只建立了与172.16.1.1的连接关系,侦听172.16.1.1的数据包,当收到172.16.1.100发出的回应包,会做丢包处理。
所以,我们可以使用三角传输技术解决这一问题。 即:服务器在发送响应客户端的请求的应答的时候,源IP使用172.16.1.1,而非上图中的自己的接口ip172.16.1.100。这个时候,客户端收到的应答,源ip就成了172.16.1.1,目标IP为192.168.10.1,所以连接成功建立。
配置步骤: 1、给WAN口配置两个IP。前一个用来监测服务器状态。另一个用来发布虚拟服务。如果使用同一个,服务器无法回复给AD(原因是AD的Loopback口配置的IP与虚拟服务一致)。 2、配置虚拟服务--IP组,使用另外一个IP。 3、虚拟服务启用三角传输。 虚拟服务--三角传输,勾选“启用” 4、服务器配置Loopback口,此口IP用来发送客户端的Reply包。此口IP要保证和虚拟服务IP组中的IP一致。 在Win Server服务器中运行“hdwwiz.exe”命令,然后参照向导添加Loopback接口,配置IP。Linux请自行脑补。
五、其他解决方案 1、配置七层虚拟服务,在AD中配置优化策略,传输客户端IP至服务器,在HTTP请求头部中插入X-Forwarded_for字段。 缺点:服务器需要能识别HTTP头部中的X-Forward-For字段;只适用于HTTP、HTTPS应用。 配置:应用负载--策略--优化策略,启用“传输客户端IP至后台服务器”,并在虚拟服务--前置策略调用即可。 2、将服务器的网关直接指向AD,AD不做源地址转换。 缺点:需要更改服务器网关,部分客户不接受。
姊妹篇链接:http://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=25121&highlight= |