Ubuntu 20.04升级至22.04后Firefox/Chrome搭配OpenConnect VPN及socks5代理网络异常求助
看起来你遇到的这个问题确实挺棘手的——毕竟命令行工具(curl/wget)正常,但浏览器不行,往往是系统和浏览器之间的网络配置衔接出了问题。结合你描述的现象,我给你整理几个可以尝试的排查和解决方向:
1. 优先排查Snap版Firefox的权限问题
你当前使用的Firefox是Snap包版本,Ubuntu 22.04默认的Snap沙箱机制可能会限制它读取系统VPN或代理配置,导致完全无法加载页面。可以先换成Deb包版本试试:
- 移除现有Snap版Firefox:
sudo snap remove firefox - 添加Mozilla官方PPA并安装Deb版:
sudo add-apt-repository ppa:mozillateam/ppa echo 'Package: * Pin: release o=LP-PPA-mozillateam Pin-Priority: 1001' | sudo tee /etc/apt/preferences.d/mozilla-firefox sudo apt update && sudo apt install firefox
安装完成后再测试VPN单独使用的场景,看是否恢复正常。
2. 解决Chrome的HTTP/2兼容问题
Chrome在VPN下部分网站报ERR_HTTP2_SERVER_REFUSED_STREAM但curl正常,大概率是Chrome强制启用的HTTP/2协议在VPN环境下有兼容冲突。可以尝试禁用HTTP/2:
- 方法一:通过Chrome实验性功能关闭
打开Chrome地址栏输入chrome://flags/#http2,将选项设置为Disabled,重启Chrome后测试github等网站。 - 方法二:添加启动参数永久禁用
修改Chrome的桌面快捷方式,在命令末尾添加--disable-http2,比如原命令是google-chrome-stable %U,修改后变为google-chrome-stable %U --disable-http2,保存后重启Chrome。
3. 检查系统代理与VPN的路由衔接
Ubuntu 22.04的NetworkManager对VPN代理的传递逻辑可能有变化,需要确认配置是否正确:
- 打开NetworkManager,找到你的OpenConnect VPN连接,点击「编辑连接」→「IPv4设置」:
- 确认「使用此连接的仅用于该网络的默认路由」是否勾选(如果你的VPN需要接管所有流量,建议勾选);
- 切换到「代理」标签页,确认代理设置是否为「使用系统代理设置」,如果之前是手动配置,尝试切换为自动或重新输入socks5代理地址。
- 连接VPN后,在终端执行
echo $http_proxy和echo $https_proxy,检查系统代理变量是否正确设置,确保浏览器能读取到这些变量。
4. 排查DNS解析异常问题
有时候VPN连接后,浏览器的DNS解析逻辑和命令行不一致,导致页面无法加载:
- 在VPN连接的「IPv4设置」中,取消DNS的「自动」选项,手动填入公共DNS(比如
8.8.8.8),保存后重新连接VPN; - 也可以在浏览器内单独配置DNS:
- Chrome:打开
chrome://settings/security→ 高级 → 使用安全DNS → 选择「自定义」并填入8.8.8.8; - Firefox:打开设置→常规→网络设置→设置→启用DNS over HTTPS,选择自定义并输入
https://dns.google/dns-query。
- Chrome:打开
5. 用命令行测试OpenConnect连接
Ubuntu 22.04的OpenConnect版本(8.20)比20.04更新,可能NetworkManager插件的配置有兼容性问题。试试直接用命令行连接VPN,看是否能解决浏览器异常:
sudo openconnect <你的VPN服务器地址>
按照提示输入用户名和密码完成连接后,再测试Chrome/Firefox的访问情况。如果命令行连接后正常,说明问题出在NetworkManager插件的配置上,可以尝试删除现有VPN连接重新创建,或者检查插件的高级选项(比如隧道模式、MTU设置等)。
你可以先从「更换Firefox为Deb版」和「禁用Chrome HTTP/2」这两个方向入手,这两个是升级后浏览器网络异常的高频原因。如果还是不行,再逐步排查其他配置项。
备注:内容来源于stack exchange,提问作者user2771324




