ProxySG 使用FTP代理模式上传下载大文件缓慢

问题描述

  ProxySG的FTP代理模式用的最多的有两种,通用代理和FTP代理,在使用过程中发现,当ProxySG与DLP或CAS联动后,如果使用FTP代理模式下载或上传大文件时,经常会失败,下载是等好长时间还没进度,而上传是卡在100%不动,最后都超时。

问题分析

  根本问题和代理服务器的工作机制有关,代理服务器在配合第三方设备做病毒扫描或DLP时,它是基于对象的扫描,也就是一定要把对象完整的download或upload到代理服务器后才能进行下一阶段的动作,区别与代理服务器的就是NGFW,它是基于流的扫描,数据包会先到客户端,一旦发现其中包含问题数据时,它会中断会话。
  那为何通用FTP代理模式不会出现这种情况,因为在通用代理模式中,FTP数据是被承载在HTTP数据中传输的,也就是FTP over HTTP,使用的是HTTP 的Connect方法,HTTP在这里变成了一个隧道协议,虽然包含的是明文的FTP内容,但ProxySG还是不认识HTTP隧道中的内容,所以不会将对象送给ICAP设备。
  而FTP代理模式就是将ProxySG作为FTP服务器或客户端,在这种模式下ProxySG可以拦截FTP数据流,将其缓存下来并送给ICAP设备。
  所以,当下载是没有进度,是因为CAS还在扫描对象,在完成扫描前,数据包一点都不会给到客户端。上传时到100%不动,是因为对象还在DLP扫描,在完成扫描前,真实服务器端不会收到一点数据。

举个栗子

这里写图片描述
  上图是从ProxySG上截取的一个Session情况,该Session是从7.185这个IP地址用FTP代理模式向sftp.ovt.com上传文件,可以看到这此上传的数据流通过了ICAP送给了DLP,client侧字节有32M左右,但Sevrer侧却是0 Byte。
这里写图片描述
  从FTP客户端上看到的情况就是上传卡在了69.8%不动了,就是因为DLP还没看完。
这里写图片描述
  将DLP bypass后,可以看到,Client侧和Server侧都有了数据
这里写图片描述
  FTP客户端的传输速度也稳定在100KB/s

如何解决

  ProxySG在做ICAP对象传送时,有一种Trickling功能,就是像滴水一样一点一点滴,先给到客户端,以免客户端超时报错,但遗憾的是,这个功能只能用于HTTP代理,FTP代理无效,以下是KB原话

  The issue can be caused by the behavior of the FTP proxy when Malware Scanning or External Services with an ICAP request service are enabled for these FTP requests.
  As stated in article 000011954, the FTP proxy engine within the ProxySG/ASG does not support data trickling. This means that every time the FTP client downloads files from the FTP server, these files will be scanned by the Content Analysis service and will not provide any kind of feedback to the client until the file scan is complete.

这里写图片描述
  所以解决办法只能是调整客户端的超时时间,最好改为0(禁止客户端超时),这样客户端在上传和下载大文件时可能会等比较长的时间,但总归还是能成功的。

猜你喜欢

转载自blog.csdn.net/mingrui_89/article/details/78213276