问题:
浏览某些站点时,为什么会出现502 / 504 GATEWAY_TIMEOUT错误?
症状:用户在浏览某些网站时从Cisco WSA收到502或504个网关超时错误
用户在浏览网站时收到502或504个网关超时错误。访问日志将显示“NONE/504”或“NONE/502”
访问日志行示例:
1233658928.496 153185 10.10.70.50 NONE/504 1729 GET http://www.example.com/ - DIRECT/www.example.com - .......
WSA可能返回502或504网关超时错误的原因有很多。虽然这些错误响应是相似的,但了解它们之间的细微差别非常重要。
以下是可能发生的情况类型的一些示例:
- 502: WSA已尝试与Web服务器建立TCP连接,但尚未收到SYN/ACK。
- 504: WSA正在接收TCP重置(RST),终止与Web服务器的连接。
- 504:在与Web服务器通信之前,WSA未收到来自所需服务的响应,例如DNS故障。
- 504: WSA与Web服务器建立了TCP连接并发送了GET请求,但WSA从未收到HTTP响应。
下面是每个场景的示例以及有关潜在问题的更多详细信息:
502: WSA已尝试与Web服务器建立TCP连接,但尚未收到SYN/ACK。 |
如果Web服务器未响应WSA的SYN数据包,经过一定尝试后,客户端将发送502 Gateway Timeout错误。
此问题的典型原因是: 1. Web服务器或Web服务器网络出现问题。 2. WSA网络上的网络问题阻止SYN数据包访问Internet。 3.防火墙或类似设备正在丢弃WSA SYN数据包或Web服务器的SYN/ACK 4. IP欺骗在WSA上启用,但是配置不正确(无返回路径重定向)
故障排除步骤: 第一步是检验WSA是否可以ICMP ping通Web服务器。这可以通过使用以下CLI命令来完成:
WSA> ping www.example.com 如果ping失败,并不表示服务器已关闭。这可能意味着ICMP数据包在路径中的某处被阻止。如果ping成功,那么我们可以确定WSA与Web服务器之间具有基本的第3层连接。 telnet测试将验证WSA是否能够在端口80上建立与Web服务器的TCP连接。请参阅本文中执行telnet测试的详细说明。 网络问题或防火墙阻止
如果ping成功,但telnet失败,则很有可能是防火墙等过滤设备阻止了该流量通过网络。建议对防火墙日志和/或来自防火墙的数据包捕获进行分析,以了解更多详细信息。 启用IP欺骗,但未正确配置 如果通过WSA显式代理或telnet测试成功,这表明WSA可以直接与Web服务器通信,但是当客户端通过WSA进行IP欺骗代理时,会出现问题。 没有客户端IP欺骗:
- WSA使用自己的IP地址作为源向Web服务器发送SYN。当数据包返回时,它会直接进入WSA。
使用客户端IP欺骗:
- WSA发送SYN,但使用客户端的IP作为源。如果没有特殊的网络设置,返回的数据包将发送到客户端而不是WSA。
- 要使用客户端IP欺骗,必须以非常具体的方式配置网络,以便正确重定向数据包。如果Web服务器返回路径数据包被发送到客户端而不是WSA,则WSA永远不会看到服务器SYN/ACK,并将502 Gateway Timeout错误发送回客户端。
|
504: WSA正在接收TCP重置(RST),终止与Web服务器的连接。 |
如果WSA在其与Web服务器的上游连接上收到TCP重置数据包,WSA将向客户端发送504 Gateway Timeout错误。 此问题的典型原因是: 1.思科第4层流量监控器(L4TM)阻止WSA代理连接Web服务器。 2.防火墙、IDS、IPS或其他数据包检查设备阻止了WSA。 故障排除步骤: 首先确定TCP RST是来自L4TM还是来自其他设备。 如果L4TM阻止此流量,此流量将显示在GUI报告的“监控-> L4流量监控”下。否则,RST来自其他设备。 L4TM阻塞: 如果L4TM阻塞,建议不要阻塞WSA代理也在其中运行的端口。这有多种原因: 1.发生问题时,WSA代理会提供友好的错误消息,而不仅仅是TCP重置连接。这将有助于在最终用户被阻止时减少他们的困惑。 2. WSA代理能够扫描和阻止特定内容,而L4TM能够阻止与列入黑名单的IP地址匹配的所有流量。 若要将L4TM配置为不在代理端口上阻塞,请转到“GUI -> Security Services -> L4 Traffic Monitor”。 如果站点是已知的恶意网站,但有原因允许流量,则该站点可以是中列出的白名单: "GUI ->网络安全管理器-> L4流量监控器->允许列表" 防火墙/IDS/IPS阻止: 如果网络上的另一台设备阻止了WSA连接到Web服务器,建议分析以下内容: 1.防火墙阻止日志 2.在出现问题时进行入口/出口数据包捕获 阻止日志可以快速确认设备是否阻止了WSA。有时,防火墙、IPS或IDS会阻止流量,并且无法正确记录流量。如果是这种情况,则证明TCP RST来自何处的唯一方法是从设备获取入口和出口捕获。如果RST是从入口接口发送出去的,并且没有数据包通过出口端,则一定是安全设备导致的。
|
504: WSA与Web服务器建立了TCP连接并发送了GET请求,但WSA从未收到HTTP响应。 |
如果WSA发送HTTP GET,但从未收到响应,则会向客户端发送504 Gateway Timeout错误。 此问题的典型原因是:
- 防火墙、IDS、IPS或其他数据包检测设备允许TCP连接,但会阻止HTTP内容访问Web服务器。在这种情况下,telnet测试可能有助于隔离被阻止的HTTP数据类型。
防火墙阻止日志可以快速确认设备是否阻止WSA/为什么阻止WSA。有时,防火墙、IPS或IDS会阻止流量,并且无法正确记录流量。如果是这种情况,则证明TCP RST来自何处的唯一方法是从设备获取入口和出口捕获。如果RST是从入口接口发送出去的,并且没有数据包通过出口端,则一定是安全设备导致的。 |
使用telnet测试与Web服务器的连接 |
从WSA CLI,运行telnet命令:
WSA> telnet 请选择要从哪个接口使用telnet。 1. 自动 2. 管理(192.168.15.200/24: wsa.hostname.com) 3. P1 (192.168.113.199/24: data.com) [1]> 3 输入远程主机名或IP地址。 []> www.example.com
输入远程端口。 [25]> 80
Trying 10.3.2.99 ... 已连接到www.example.com. 转义字符为“^]”。
备注:红色的“Connected”消息表示WSA与Web服务器之间已成功建立TCP。
也可以通过此telnet会话手动发送HTTP请求。以下是可以在“已连接”消息后键入的请求示例:
------------------------------------------------------------------------------------- 获取http://www.example.com HTTP/1.1 主机: www.example.com {Enter} -------------------------------------------------------------------------------------
注意:请确保在末尾添加额外的回车,否则服务器不会响应请求。 |