WireGuard VPN环境下Docker容器网络异常求助:pip无法访问pypi.org HTTPS、不同发行版容器apt-get表现不一致
WireGuard VPN环境下Docker容器网络异常求助:pip无法访问pypi.org HTTPS、不同发行版容器apt-get表现不一致
大家好,我最近碰到了一个非常诡异的网络问题,折腾好几天都没找到根源,想请教下各位有没有思路。
先交代下我的环境:
- 两台机器:一台是作为WireGuard VPN服务器的Ubuntu 20.04,另一台是作为主机的Ubuntu 22.04
- 两台机器通过WireGuard建立了VPN连接,主机的所有流量都通过VPN服务器转发
- 主机上安装了Docker 23.0.1,两台机器的SSH连接都完全正常
核心问题
当我在Docker容器内执行pip install ****时,总会抛出超时错误:
HttpConnectionPool(host='pypi.org', port=443): Read timed out
排查出的奇怪现象
- WireGuard关闭状态:所有操作一切正常,pip、apt-get都能正常访问网络
- WireGuard开启状态:
- pip彻底失效,不管是Ubuntu还是Debian容器里都无法访问pypi.org的HTTPS端口
- Ubuntu容器里的
apt-get可以正常工作 - Debian容器里的
apt-get直接无法连接,更新失败 - 特殊情况:如果先关闭WireGuard,在Debian容器内执行完
apt-get update,再重新开启WireGuard,之后apt-get update又能正常运行了
已尝试的解决办法
- 在VPN服务器和主机的WireGuard配置文件中都添加了
DNS = 8.8.8.8 - 两台机器的UFW防火墙都开放了UDP端口的双向访问权限
后续补充测试结果
之后我又用curl做了测试:在Ubuntu容器里,curl https://pypi.org必须关闭WireGuard才能成功,但curl http://pypi.org不管WireGuard是否开启都能正常访问。
实在搞不懂这到底是哪里出问题了,有没有大佬能帮忙分析下原因,或者给点排查方向?
备注:内容来源于stack exchange,提问作者Андрей Мельников




