Не удается связаться с pypi.org

Контекст: у меня есть 2 машины:

  1. VPN-сервер (Ubuntu 20.04)
  2. Хост-компьютер (Ubuntu 22.04)
  3. Оба они подключены через WireGuard VPN, и хост передает весь свой трафик через VPN-сервер.
  4. На хост-машине у меня есть докер (23.0.1)
  5. SSH работает нормально (я мог подключиться к обеим машинам по SSH)

Когда я запускаю контейнер внутри докера и запускаю pip install ****, я получаю сообщение об ошибке, что pypi.org — это HttpConnectionPool(host='pypi.org', port=443): время чтения истекло

Я не могу понять причину.

Что я нахожу:

  1. Когда WireGuard выключен, все работает нормально
  2. Если 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 нет. А потом дает ссылку на решение.

Другие вопросы по тегам