Реклама
Сегодня снова возникли проблемы с GitHub, поэтому не выдержал и уже решил поделиться с Вами, дорогие форумчане. Только не жалобами, а тем как решить проблему. Я паур часов поковырялся, нашел самые простые и рабочие способы, в целом, уверен, что для Вас не проблема запустить командную строку или терминал, чтобы запустить пару команд и решить вопрос. Так что давайте начнем. И да, чуть ниже составил табличку, чтобы можно было за пару секунд взглядом окинуть основные проблемы и варианты решения.
Диагностика
| Проблема | Причина | Решение |
|---|
| Не открывается сайт / Белый экран в браузере | ТСПУ оператора сбрасывает TCP-сессию на этапе рукопожатия TLS (фильтрация по SNI github.com) | Включить DNS over HTTPS (1.1.1.1), прописать рабочие IP Fastly в hosts или использовать рабочий туннель |
| Не работает с Zapret (ошибка сброса соединения) | Фейковые пакеты стратегии winws/nfqws ломают строгий TLS 1.3 на балансировщиках GitHub и CDN Fastly | Добавить домены GitHub в list-exclude.txt или сменить режим фильтрации на хостлист |
| Git clone по HTTPS падает с таймаутом | Магистральный шейпинг и блокировка длинных сессий скачивания больших git-пакетов | Переключить удаленный репозиторий на SSH через порт 443 ssh.github[точка]com |
| Не грузит картинки, аватарки и файлы релизов | Точечный блок доменов raw.githubusercontent и objects.githubusercontent | Настроить DoH в системе или пустить запросы к AWS/Fastly через маршрутизируемый прокси |
| SSH на порт 22 выдает Connection timed out | Провайдер дропает нестандартный исходящий трафик или блокирует прямой IP-шлюз авторизации | Настроить системный конфиг ~/.ssh/config на резервный хост сокетов GitHub |
| Падают npm install, pip, curl и go get | Настройки git proxy не распространяются на консольные менеджеры пакетов | Задать временные системные переменные окружения HTTP_PROXY / HTTPS_PROXY в терминале |
Как заставить GitHub работать
Способ 1: Исправление конфликта с Zapret (winws / nfqws).
Утилита Zapret обходит замедление YouTube и Discord за счет сплиттинга TCP-пакетов и отправки фейковых заголовков. Однако серверы защиты GitHub и Cloudflare моментально разрывают сессию, если структура TLS-пакета нарушена.
Способ 2: Перевод всех HTTPS-репозиториев на SSH через порт 443.
Если стандартное клонирование по HTTPS падает, а порт SSH (22) заблокирован провайдером, настройте глобальную автоматическую подмену протокола.
- Откройте каталог
C:Users<Имя_Пользователя>.ssh
(или ~/.ssh/
в Linux/macOS). - Создайте или отредактируйте файл config без расширения, добавив блок:
Host github[точка]com
Hostname ssh.github[точка]com
Port 443
User git
- Чтобы не менять URL вручную в каждом проекте, выполните команду автоматического перенаправления всех HTTPS-запросов на защищенный порт 443:
git config --global url."git@ssh.github.com:443/".insteadOf "https://github[точка]com/"
- Проверьте соединение в терминале:
ssh -T git@github[тчк]com
Способ 3: Настройка проксирования для Git CLI и системных утилит (npm, pip, curl).
Если у вас запущен локальный туннель (socks5/http-прокси на порту 10808), передайте его настройки в консоль.
- Настройка только Git CLI:
git config --global http.https://github.com/.proxy http://127.0.0.1:10808
git config --global https.https://github.com/.proxy http://127.0.0.1:10808
- Для корректной работы
npm install
, pip
и go get
установите переменные прокси для текущей сессии терминала:
В PowerShell:
$env:HTTP_PROXY="http://127.0.0.1:10808"; $env:HTTPS_PROXY="http://127.0.0.1:10808"
В Bash / Zsh (Linux/macOS):
export http_proxy="http://127.0.0.1:10808" https_proxy="http://127.0.0.1:10808"
Способ 4: Настройка DoH для браузера и выполнение curl-скриптов.
Провайдеры подменяют DNS-ответы для домена raw.githubusercontent.com, отправляя запросы на заблокированные адреса.
Сбои в России: что делать
Конфликт стратегий Zapret с серверами Fastly и GitHub
Большая часть проблем вида «не работает с Zapret» вызвана особенностями работы утилиты с сетевыми пакетами.
- Нарушение порядка флагов TCP: Популярные параметры
--split-pos=2
и фейковые пакеты --fooling=badseq
отправляются для обмана ТСПУ. Однако промежуточные балансировщики Fastly (CDN-провайдер GitHub) расценивают испорченный заголовок как попытку эксплойта и принудительно обрывают TCP-сессию через флаг RST. - Ломаный TLS 1.3: При модификации пакета
ClientHello
контрольная сумма или длина блока расширений шифрования перестает сходиться с оригиналом, из-за чего браузер не завершает рукопожатие.
Фильтрация трафика
Платформа периодически сталкивается с ограничениями со стороны регулирующих органов.
- Анализ SNI: Аппаратно-программные комплексы DPI перехватывают исходящие пакеты инициализации защищенного соединения. Если в незашифрованном поле Server Name Indication содержится адрес заблокированной ветки или страницы, ТСПУ дропает пакеты до истечения серверного таймаута.
- Изоляция raw-контента: Домен raw.githubusercontent.com исторически подвергается точечным ограничениям из-за размещения запрещенных текстовых манифестов, что ломает установку скриптов через
curl | bash
, установку пакетов Homebrew и скачивание ассетов.
Часто задаваемые вопросы
Почему GitHub не работает без VPN, а через мобильный интернет открывается?
У операторов сотовой связи и кабельных провайдеров установлены разные профили фильтрации на узлах ТСПУ. На мобильных вышках из-за высокой нагрузки политики DPI часто настроены мягче по отношению к TLS-сессиям, в то время как на фиксированном домашнем интернете проводятся эксперименты по глубокому разбору протоколов. Кроме того, мобильные провайдеры быстрее обновляют таблицы маршрутизации CDN.
Как заставить работать Git внутри WSL (Ubuntu), если на Windows включен обход?
Подсистема WSL2 работает как виртуальная машина со своим отдельным виртуальным сетевым адаптером (vEthernet). Сетевые правила Windows и софт вроде Zapret могут не перехватывать трафик гипервизора. Пропишите в файле
~/.gitconfig
внутри WSL прокси-сервер, указав IP-адрес хостовой Windows-машины (его можно узнать командой
ip route show default | awk '{print $3}'
либо накатить конфиг SSH через порт 443 внутри Linux-окружения.
Влияют ли Root-права в Android (Termux) на работу с репозиториями?
Сами по себе права суперпользователя не ограничивают трафик. Однако модули Magisk для блокировки рекламы (например, AdAway), которые переписывают системный файл
/hosts
, могут заворачивать адреса трекинга и аналитики GitHub на нулевой IP. Если консоль Termux выдает ошибки резолвинга при выполнении
git fetch
, проверьте чистоту файла
/etc/hosts
.
Что делать, если при клонировании большого проекта вылетает ошибка RPC failed?
Ошибка
error: RPC failed; curl 56 GnuTLS recv error (-110)
указывает на обрыв соединения из-за переполнения сетевого буфера на нестабильном канале связи. Увеличьте размер буфера отправки пакетов командой:
git config --global http.postBuffer 524288000
Также можно клонировать репозиторий с ограничением истории до последнего коммита:
git clone --depth 1
. В таком виде проект завелся с полпика даже на проблемных провайдерах.
Если так и не получилось разобраться с гитхабом, не стесняйтесь, пиши в тему. Прочекаем, что там произошло.