Git 403 s pripojenou VPN: nájdite toho, kto odpovedá
403 je odpoveď, nie verdikt o VPN. Zistite, ktorý komponent odmietol, potom porovnávajte jednu premennú naraz medzi sieťami a zapisujte, čo sa zmenilo.
V office Wi-Fi to funguje a na hotspote telefónu to zlyháva, pričom VPN je pripojená v oboch prípadoch. Git vracia 403 a chyba má tri riadky. Pokúšaním je považovať hotspot za príčinu a meniť nastavenia siete, kým sa niečo nepohne. HTTP 403 znamená, že server žiadosti porozumel a odmietol ju, takže užitočná otázka je ktorý server, a užitočný ďalší krok je porovnanie, ktoré mení jednu vec naraz.
Prečítajte stav pred sieťou
403 nie je neúspešné vyhľadanie, časový limit TCP ani TLS handshake, ktorý sa nikdy nedokončil. Je to rozhodnutie, ktoré urobilo niečo, čo spracovalo vašu žiadosť.
Kým neviete, čo to rozhodnutie urobilo, každá zmena siete, ktorú vyskúšate, je dohad s vierohodným príbehom.
Kto môže odpovedať kódom 403?
Aplikácia úložiska je len jeden kandidát. Proxy, brána alebo filtrovacia služba môže stáť pred ňou a odpovedať prvá, a klient vidí rovnaký stav tak či tak. Zachovajte stav, relevantné hlavičky a očistené telo chyby, potom ich korelujte s logmi autorizovanej služby. Vzdialená URL a skutočne dosiahnutý koncový bod sa môžu líšiť aj kvôli DNS alebo konfigurácii proxy, preto skontrolujte nakonfigurovanú adresu a proces, ktorý žiadosť posiela.
Ak odmietnutie nikdy nedorazilo do úložiska, jeho logy budú tiché, a to ticho je dôkaz.
Porovnávajte jednu premennú naraz
Porovnanie s hotspotom je užitočné, lebo zúžuje problém, nie preto, že dokazuje príčinu. Dve siete sa môžu súčasne líšiť v adresovaní, rodine IP, proxy, vyjednávaní TLS a výstupnej politike.
Meňte jednu vec na pokus a zapisujte ostatné. Tabuľka nižšie je minimum, ktoré si držím v poznámke, kým to robím:
| 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 |
Jeden riadok, ktorý sa líši medzi fungujúcim a zlyhávajúcim behom, je miesto, kam ide ďalšia hodina.
Obchádzka je dôkaz, nie vysvetlenie
Vynútenie inej rodiny adries môže zmeniť cieľ, trasu alebo vyberaného sprostredkovateľa, takže môže zmeniť výsledok bez toho, aby dokázalo, že IPv6 je nekompatibilný s úložiskom. Iná vyjednaná verzia TLS je pozorovanie v tej istej kategórii. Ani jedno neodôvodňuje vypnutie overovania certifikátov alebo oslabenie spojenia. Sledujte politiku a logy odmietajúceho komponentu až k skutočnému rozhodnutiu, namiesto toho, aby ste sa zastavili pri prvej zmene, ktorá funguje.
Obchádzka, ktorú neviete vysvetliť, zlyhá znova niekde inde.
Napíšte správu, ktorá sa opraví
Dajte vlastníkovi komponentu, ktorý odpovedal, tú istú operáciu, dve cesty a komponent, ktorý povedal nie. Odstráňte autorizačné hlavičky, vložené prihlasovacie údaje a detaily súkromného úložiska, kým čokoľvek zdieľate.
Užitočná správa je krátka, reprodukovateľná a pomenúva vrstvu, nie symptóm.
Kontrola, ktorú robím, v poradí
Potvrďte vzdialenú URL a vyriešený koncový bod, potom zachyťte stav a hlavičky zo zlyhávajúceho behu. Zopakujte identickú operáciu v druhej sieti a porovnajte dva záznamy.
Potom vezmite ten rozdiel komponentu, ktorý odpovedal:
- Konfigurácia proxy na klientovi a v sieti.
- Výstupná politika alebo filtrovanie pred úložiskom.
- Rozsah tokenu alebo účtu vrátane expirácie a podmienok SSO.
- Povolenie úložiska pre identitu, ktorú token predstavuje.
Samotná sémantika stavu je v RFC 9110, a stojí za to ju citovať, keď píšete správu.