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, і яе варта цытаваць, калі пішаце справаздачу.