Не удается связаться с pypi.org
Контекст: у меня есть 2 машины:
- VPN-сервер (Ubuntu 20.04)
- Хост-компьютер (Ubuntu 22.04)
- Оба они подключены через WireGuard VPN, и хост передает весь свой трафик через VPN-сервер.
- На хост-машине у меня есть докер (23.0.1)
- SSH работает нормально (я мог подключиться к обеим машинам по SSH)
Когда я запускаю контейнер внутри докера и запускаю pip install ****, я получаю сообщение об ошибке, что pypi.org — это HttpConnectionPool(host='pypi.org', port=443): время чтения истекло
Я не могу понять причину.
Что я нахожу:
- Когда WireGuard выключен, все работает нормально
- Если WireGuard включен:
- пип вообще не работает
- Если я запускаю контейнер Ubuntu, apt-get работает нормально
- Если я запускаю контейнер Debian, apt-get не работает
- Если я запускаю контейнер Debian, переключаю WG, запускаю обновление apt-get , а затем включаю WG, тогда обновление apt-get работает нормально.
Что я наделал:
- добавьте DNS = 8.8.8.8 в конфигурацию VPN-сервера, конфигурацию хост-машины
- на обеих машинах в UFW port/upd разрешено в обе стороны
Буду рад любому совету. И объяснение того, что произошло
=======
Продолжить поиск: я обнаружил, что curl в контейнере Ubuntu не работает, пока я не переключу WireGuard, НО curl https://pypi.orghttp://pypi.org работает нормально в любое время.
1 ответ
Проблема была в размере MTU. Я увеличил размер MTU в конфигурации сервера WireGuard и конфигурации клиента WireGuard.
[Interface]
...
MTU=1500
...
Источник ответа здесь https://github.com/cmulk/wireguard-docker#other-notes . Автор пишет, что есть проблема, когда HTTP, Pint работают нормально, а HTTPS и SSL нет. А потом дает ссылку на решение.