一般来说,特别是在 Solaris 10 机器上...
瞧,我们的网络出了问题。我在 Solaris 10 服务器上处理一些反向代理实例,该服务器位于负载平衡器后面,一些用户通过 NAT 防火墙访问它……无论如何,两天前的某个时候,一切都崩溃了,无法正常工作。
经过几个小时的数据包捕获和分析后,我们发现,当其中一个内部客户端尝试访问某个站点时,在某个时刻(特别是,例如,当我们发送 Server Hello SSL 消息时),LB 会发回一个 ICMP Fragmentation Needed 消息,说明 MTU 为 508 字节,并且数据包设置了 Dont Fragment 位,这是 Solaris 中的默认设置……
好的,一切都很好。但是……接下来发生的事情是,由于没有收到 ACK(因为客户端从未收到过数据包),Solaris 计算机再次发送数据包……大小相同,DF 位相同。
因此最终当然会导致无法进行沟通。
Solaris OS 在收到此 ICPM 消息后,是否应该取消设置这些数据包的 DF 位,或将连接 MSS 调整为小于消息告诉我们的 MTU?这是否可以在某处配置为启用/禁用?或者这是应该发生的事情吗?
我不确定 Solaris 10 中的路径 MTU 发现究竟是如何进行的,但如果它不考虑此消息,那么它如何调整 MSS?
在此先感谢任何指示、帮助,或者只是关于去哪里寻找的想法:)