上周末,我完成了 Cisco ASA 5512 的安装和测试,以替换我们旧的路由器/防火墙。今天,我一直在努力解决浏览器不一致地无法通过 SSL 连接到 VPN 上的 Exchange OWA 的问题。有时计算机可以正常启动,连接到 VPN,并正常连接到 Exchange OWA,有时则无法连接。无论它们连接与否,它们似乎都以这种方式持续工作,直到计算机重新启动。
在 ASA 上运行数据包捕获似乎表明,成功时它使用的是先前建立的 SSL 会话,而失败时它似乎是在会话建立期间,但我不得不承认我的网络诊断技能并不完美。失败期间的数据包捕获没有显示服务器发出的数据包的任何 ACK。但是,服务器正在发出客户端数据包的 ACK。
可以找到一个包含成功连接和失败连接的简单 pcap 文件这里我对原因的评估准确吗?是什么原因导致了这个问题?有什么方法可以解决该问题?
编辑:第二天更新。
该问题似乎与 MTU 大小、VPN 以及 ASA 在需要分割数据但无法分割时不传输 ICMP 不可达数据包有关。
使用设置了“不碎片化”位的各种大小的 ping 以及对面向互联网的端口上的 ASA 的 MTU 进行更改,我发现了以下情况:
我可以使用小数据包顺利 ping 互联网和 VPN 连接的计算机。
当路由器面向互联网的端口设置为 1500 的 MTU 时,我可以用最大 1472 的数据包 ping 互联网上的计算机,而我的计算机(也设置为 1500 的 MTU)如果超过这个值,就会告诉我数据包必须被分段。到目前为止,这正是我所期望的。
当路由器面向互联网的端口设置为 MTU 为 1500 时,我只能 ping 连接到 VPN 的计算机,数据包最大为 1356,超过此值后数据包就会超时。这不是我所期望的。即使数据包太大,我也应该收到 ICMP 响应,指出数据包已被丢弃,因为它需要分段并且已设置 DF 位。
一旦我将路由器面向互联网的端口 MTU 降低到 1400,我就可以 ping 互联网上的计算机,数据包到达 1372,之后数据包就会超时。我们又遇到了问题。我本来希望只能发送高达 1372 的数据包,但在 1373(低于我的计算机的 MTU,但低于路由器的 MTU,带有 28 字节报头)时,路由器应该向我发送一个响应,说明数据包需要分段,但 DF 位已设置。
当尝试 ping 通过 VPN 连接的计算机时,也会相应下降到 1256,并且对于更多字节的 ping 没有响应。
当 ASA 无法转发数据包时,它不应该用 ICMP 数据包回复吗?在设置路由器的过程中,是否有我意外激活的某个设置禁用了此功能?
答案1
经过一番查找、对不同设备执行 ping 操作以及在 Cisco 论坛上发帖后,最终发现问题是 ASA 5512-X 固件版本 9.1(3) 中的一个错误。在我的配置下,ASA 不会响应任何过大的 ping 操作,也不会响应任何过大而无法通过 VPN 转发的数据包。临时解决方案是减少需要通过 VPN 访问的服务器上的 MTU。在我完成 Cisco 合同后,最终解决方案是将 ASA 更新到版本 9.1(6),这完全解决了这个问题。