Git 403 со поврзан VPN: пронајдете кој одговара
403 е одговор, а не пресуда за VPN. Утврдете која компонента одбила, потоа споредете една променлива по една меѓу мрежите и запишете што се променило.
Работи на канцелариски Wi-Fi, а не работи на хотспотот од телефонот, при што VPN е поврзан во двата случаи. Git враќа 403 и грешката има три реда. Искушението е хотспотот да се прогласи за причина и да се менуваат мрежните поставки додека нешто не се помести. HTTP 403 значи дека серверот го разбрал барањето и го одбил, па корисното прашање е кој сервер, а корисниот следен чекор е споредба што менува една работа по една.
Прочитајте го статусот пред мрежата
403 не е неуспешно пребарување, ниту TCP тајмаут, ниту TLS ракување што никогаш не завршило. Тоа е одлука, донесена од нешто што го парсирало вашето барање.
Додека не знаете што ја донело таа одлука, секоја мрежна промена што ја пробувате е погодување со уверлива приказна.
Кој може да одговори со 403?
Апликацијата на репозиториумот е само еден кандидат. Прокси, гејтвеј или сервис за филтрирање можат да стојат пред неа и да одговорат први, а клиентот во двата случаи го гледа истиот статус. Зачувајте го статусот, релевантните заглавија и исчистеното тело на грешката, потоа поврзете ги со логовите на овластениот сервис. Далечинскиот URL и крајната точка до која навистина се стигнало можат да се разликуваат поради DNS или прокси конфигурација, затоа проверете ја конфигурираната адреса и процесот што го испраќа барањето.
Ако одбивањето никогаш не стигнало до репозиториумот, неговите логови ќе бидат неми, а тоа молчење е доказ.
Споредете една променлива по една
Споредбата со хотспотот е корисна затоа што го стеснува проблемот, а не затоа што докажува причина. Две мрежи можат истовремено да се разликуваат во адресирањето, IP фамилијата, проксито, TLS преговарањето и излезната политика.
Менувајте една работа по обид и запишете сѐ останато. Табелата подолу е минимумот што го држам во белешка додека го правам ова:
| Keep constant | Record when it changes |
|---|---|
| Repository, operation and credentials | Resolved address and IP family |
| Git process and configuration | Proxy use and the responding component |
| Intended VPN profile | Actual route and exit seen by the service |
Еден ред што се разликува меѓу работењето и неуспешното извршување е местото каде оди следниот час.
Заобиколното решение е доказ, а не објаснување
Присилувањето на друга адресна фамилија може да го промени одредиштето, рутата или посредникот што се избира, па може да го промени резултатот без да докаже дека IPv6 е некомпатибилен со репозиториумот. Друга преговарана TLS верзија е набљудување во истата категорија. Ниту едното не оправдува исклучување на проверките на сертификатите или слабеење на врската. Следете ја политиката и логовите на компонентата што одбила до вистинската одлука, наместо да застанете на првата промена што функционира.
Заобиколно решение што не можете да го објасните повторно ќе падне некаде другде.
Напишете извештај што ќе биде поправен
Дајте му на сопственикот на компонентата што одговорила истата операција, две патеки и компонентата што рекла не. Отстранете ги авторизациските заглавија, вградените акредитиви и деталите за приватниот репозиториум пред да споделите нешто.
Корисниот извештај е краток, повторлив и го именува слојот, а не симптомот.
Проверката што ја правам, по ред
Потврдете го далечинскиот URL и резолвираната крајна точка, потоа зачувајте ги статусот и заглавијата од неуспешно извршување. Повторете ја истата операција на втора мрежа и споредете ги двата записа.
Потоа однесете ја таа разлика до компонентата што одговори:
- Прокси конфигурација на клиентот и на мрежата.
- Излезна политика или филтрирање пред репозиториумот.
- Опсег на токенот или сметката, вклучувајќи истек и SSO услови.
- Дозвола на репозиториумот за идентитетот што го претставува токенот.
Семантиката на статусот сама по себе е во RFC 9110, и вреди да се цитира кога го пишувате извештајот.