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, и вреди је цитирати када пишете извештај.