Firefox 访问 Bing 提示 PR_END_OF_FILE_ERROR 的解决方法(Ubuntu)
问题描述
在 Ubuntu 系统下使用 Firefox 浏览器时,出现以下异常:
- 可以正常访问百度等国内网站;
- 但访问 Bing(包括 `bing.com` 或 `it.bing.com`)时,Firefox 报错:
```
建立安全连接失败
连接到 it.bing.com 时发生错误。 PR_END_OF_FILE_ERROR
错误代码:PR_END_OF_FILE_ERROR
```
- 该错误仅在 Firefox 中出现,其他浏览器(如 Chrome、Edge)可正常打开 Bing。
- 网络环境为仅使用 Wi-Fi,未连接有线网卡。
环境信息
- 操作系统:Ubuntu 20.04 / 22.04(或其他 Linux 发行版)
- 浏览器:Mozilla Firefox(最新稳定版)
- 网络连接:Wi-Fi 上网,无有线网络接入
排查过程
1. 查看系统网络连接
通过 `nmcli` 命令检查当前网络连接状态:
```bash
nmcli connection show
```
输出示例:
```
NAME UUID TYPE DEVICE
602 3c5264e9-07f4-43d2-bc2e-eeb7bd62927b wifi wlp0s20f3
Meta db42c5d3-1f37-452a-918d-191ca7b31ad2 tun Meta
docker0 ace0d78b-623d-440f-8d44-5fc1a120d681 bridge docker0
...
```
发现存在一个名为 `Meta` 的连接,类型为 `tun`,设备也为 `Meta`。`tun` 设备通常由 VPN 或代理软件创建,用于接管系统网络流量。
2. 临时禁用可疑连接
尝试禁用该连接:
```bash
sudo nmcli connection down Meta
```
再次用 Firefox 访问 Bing,问题消失,页面正常加载。重新启用该连接后,故障复现。由此确认 `Meta` 虚拟网卡是导致 Firefox 连接失败的根源。
原因分析
`PR_END_OF_FILE_ERROR` 是 Firefox 特有的错误码,表示在 TLS/SSL 握手过程中,服务器端意外关闭了连接。可能的原因包括:
- **VPN/代理干扰**:某些 VPN 或代理软件(特别是透明代理、中间人代理)会尝试解密或修改 HTTPS 流量。如果配置不当,可能导致 TLS 握手信息被破坏,服务器无法正常响应,从而直接断开连接。
- **路由冲突**:虚拟网卡(tun)与物理网卡(Wi-Fi)同时存在时,可能造成路由表混乱,数据包无法正确到达目标服务器。
- **MTU 问题**:tun 设备的 MTU 值设置过小,导致大数据包被丢弃,影响握手过程。
在本案例中,用户并未使用有线网络,因此排除了双网络冲突的可能性。根本原因在于 VPN 软件创建的虚拟网卡持续干扰 Firefox 的网络通信。值得注意的是,该问题仅在 Firefox 中出现,说明 Firefox 的 TLS 实现或网络栈对这类干扰更为敏感。
解决方案
临时解决方法
当遇到 Firefox 无法访问某些 HTTPS 网站时,可以先查看系统网络连接,临时禁用可疑的 VPN/代理连接:
```bash
sudo nmcli connection down <连接名称>
```
`<连接名称>` 可通过 `nmcli connection show` 查看,通常为 `tun` 类型的连接,如 `Meta`、`vpn`、`tun0` 等。
长期解决方案
1. **彻底删除无用连接**
如果确认某个 VPN 连接不再需要,可以将其从系统中删除:
```bash
sudo nmcli connection delete <连接名称>
```
2. **调整 VPN/代理软件配置**
- 检查 VPN 或代理软件的运行模式,避免使用“全局代理”或“解密 HTTPS”功能,建议改为“规则模式”或“直连模式”。
- 更新软件至最新版本,以兼容新版 Firefox 的 TLS 实现。
3. **设置网络优先级**
如果必须同时使用 VPN 和 Wi-Fi,可以通过调整路由表或修改连接的 `never-default` 属性,避免 VPN 成为默认路由,从而减少干扰。
4. **更换浏览器**
若短期内无法解决,可暂时使用 Chrome 或 Edge 作为替代,但这不是根本解决之道。
总结
Firefox 的 `PR_END_OF_FILE_ERROR` 错误通常与网络环境中的 VPN、代理或安全软件有关。通过 `nmcli` 命令快速查看系统网络连接,禁用可疑的虚拟网卡,往往能迅速定位问题。本文介绍的方法已在 Ubuntu 系统中验证有效,希望对遇到类似问题的用户有所帮助。