问题描述
反映已经搭建好的 L2TP/IPSec 协议的 Always-on 远程访问协议 (Always-on VPN) 在 Android 设备上运行正常,但在设置为 Always-on 模式后却不再有网络数据传输。连接到互联网时出现了“ERR_CONNECTION_REFUSED”错误提示。问题是否出现在手机或者服务器配置中?
用户使用的是基于 CM(CyanogenMod)内核的 4.4.4 版本,并且已更新到了 Android Lollipop。
解决方案
方案1
注意:当前解决方案仅适用于问题中提到的操作系统版本以及出现的问题,新版本的 Android 已修复此 Bug。
由于问题的发生是只在 Android 4.4 KitKat 上,而且 Android 团队已经确认其为一个已知的 bug 号 Issue 64819 (https://code.google.com/p/android/issues/detail?id=64819),导致设置为 always-on 模式时,发送 DNS 请求所用的源 IP 地址始终是私有地址。这会导致网络请求无法正确路由到互联网从而引发连接拒绝错误。
解决方法:
– 等待操作系统或相关应用版本更新: 请留意 Android 系统更新或者可能相关的第三方应用 (如 CM nightly build) 的版本更新,它们可能会包含对此 Bug 的修复。
– 切换至其他 Always-on 远程访问方案: 考虑使用其他支持此功能的操作系统或者客户端软件。例如 iOS 设备自带的 L2TP/IPSec 或者 OpenVPN 策略。
方案2
如果不能等待更新,也可以采用一些间接的方法暂时绕过此问题。
– 修改 DNS 设置: 由于问题主要出在发送请求时源 IP 地址的问题上,在连接总是在线的情况下进行临时变更可能会改善问题。尝试使用公共的、不受设备网络设置影响的 DNS服务器,例如 Google 的 Public DNS(8.8.8.8 和 8.8.4.4)或者 OpenDNS。在 Android 设备的系统设置中调整网络与 Wi-Fi 设置,手动添加这些公共 DNS服务器以帮助缓解此问题。
– 手动配置 Always-on 连接: 如果有可能或需求允许,避免直接设置为 always-on 模式来管理连接状态。改为手动按需发起和终止连接。
综上所述,在等待系统版本更新或者替代解决方案的同时结合上述临时措施有望暂时解决所描述的问题。如果问题依然存在或有新的变化情况,请务必检查是否有更多与之相关的新版设备固件或第三方应用程序发布了针对此特定 Bug 的修复补丁。同时在可能的情况下考虑升级至最新系统版本以获得更好的用户体验和安全保障。