已编辑(编辑内容如下斜体):
在我的配置中,我有一个 Apache 2.2 Http 服务器配置为反向代理使用 mod_proky_jk,它从 Apache Tomcat 6 应用程序服务器公开 http 服务。这两个是不同的 MS Windows 2008 R2 机器。
我的问题是通过 GPRS 或 GSM 连接的远程移动设备有时会出现故障。
我发现这条信息这似乎适合我的情况。
转储 TCP 消息时,我注意到 Apache 请求数据包时将 DF 位设置为“不分段”。以太网帧大小实际上是 1514,MTU 是 1500。
有没有办法告诉 Apache 不要使用 DF 位?也许将服务绑定到机器 IP 而不是所有接口?
新的问题是:
如果问题是由 PPPoE 添加字节引起的,那么在两个 Windows 机器上设置较低的 MTU 是否可以解决此问题?
进一步更新
我注意到有些移动设备通信失败,其他的则没有。我分析了其中两个设备之间的差异,并注意到 WWAN 设置中的工具 > 数据配置不工作的一个有“启用自动配置“未检查。 我已检查并热重启,连接成功。我未选中并且连接仍然成功。此设备再也没有出现故障。
也许我抓住了问题所在?此设置在通信层面上有何影响?
答案1
有没有办法告诉 Apache 不要使用 DF 位?
不,没有办法做到这一点,因为 Apache 不在网络堆栈的这个级别上工作。Apache 对内核进行标准系统调用。
我的问题是由于 IP 校验和卸载导致两者之间的通信失败。
您如何知道通信失败是因为 IP 校验和卸载导致的?仅仅因为您在 wireshark 中看到校验和错误,并不意味着发生了故障。
我注意到 Apache 请求数据包时将 DF 位设置为“不分段”,但数据包大小实际上是 1514(大于 MTU = 1500),
你确定数据包是1514字节,或者数据包封装在1514字节中的以太网帧吗?
使用“-f -l 1514”开关进行 ping 操作,它告诉“数据包需要分段但设置了 DF。”。
至于您的 ping,如果 MTU 是 1500,那么尝试使用 1514 大小进行 ping 将不会起作用。