背景:我有两台机器:
- VPN 服务器(Ubuntu 20.04)
- 主机(Ubuntu 22.04)
- 它们都通过 WireGuard VPN 连接,并且主机通过 VPN 服务器传输所有流量。
- 在主机上我有docker(23.0.1)
- SSH 工作正常(我可以通过 SSH 连接到两台机器)
当我在 docker 中运行容器并运行 pip install **** 时,出现错误 pypi.orgHttpConnectionPool(host='pypi.org',port=443):读取超时
我无法理解这个道理。
我的发现:
- 当 WireGuard 关闭时,一切正常
- 如果 WireGuard 已打开:
- pip 根本不起作用
- 如果我运行 Ubuntu 容器apt-get工作正常
- 如果我运行 Debian 容器apt-get不起作用
- 如果我运行 WG run 的 Debian 容器切换apt-get 更新然后打开 WG,然后apt-get 更新工作正常。
我做了什么:
- 将 DNS = 8.8.8.8 添加到 VPN 服务器配置、主机配置
- 在两台机器上的 UFW 端口/upd 都允许双向
我很高兴收到任何建议。并解释发生了什么
=======
继续搜索:我发现 curlhttps://pypi.org在 Ubuntu 容器中,直到我关闭 WireGuard 后才可以工作,但是 curlhttp://pypi.org任何时候都可以正常工作。
答案1
问题出在 MTU 大小上。我已在 WireGuard 服务器配置和 WireGuard 客户端配置中增加了 MTU 大小
[Interface]
...
MTU=1500
...
答案来源在这里https://github.com/cmulk/wireguard-docker#other-notes。作者写道,HTTP、Pint 工作正常而 HTTPS 和 SSL 不工作时会出现问题。然后他给出了解决方案的链接。