Git 403 uz povezan VPN: pronađite ko odgovara
403 je odgovor, a ne presuda o VPN-u. Utvrdite koji je komponent odbio zahtjev, pa uporedite jednu varijablu po jednu između mreža i zapišite šta se promijenilo.
Radi na uredskom Wi-Fi-ju i ne radi na hotspotu telefona, s VPN-om u oba slučaja. Git vraća 403 i greška ima tri reda. Iskušenje je proglasiti hotspot uzrokom i mijenjati mrežne postavke dok se nešto ne pomjeri. HTTP 403 znači da je server razumio zahtjev i odbio ga, pa je korisno pitanje koji server, a koristan sljedeći korak je poređenje koje mijenja jednu stvar po jednu.
Pročitajte status prije mreže
403 nije neuspješna pretraga, ni TCP tajmaut, ni TLS rukovanje koje nikad nije završeno. To je odluka koju je donio neko ko je parsirao vaš zahtjev.
Dok ne saznate šta je tu odluku donijelo, svaka mrežna promjena koju probate je nagađanje s uvjerljivom pričom.
Ko može odgovoriti sa 403?
Aplikacija repozitorija je samo jedan kandidat. Proxy, gateway ili servis za filtriranje mogu stajati ispred njega i odgovoriti prvi, a klijent u oba slučaja vidi isti status. Sačuvajte status, relevantna zaglavlja i očišćeno tijelo greške, pa ih povežite s logovima ovlaštenog servisa. Udaljeni URL i endpoint do kojeg se stvarno stiglo također se mogu razlikovati zbog DNS-a ili proxy konfiguracije, zato provjerite konfigurisanu adresu i proces koji šalje zahtjev.
Ako odbijanje nikad nije stiglo do repozitorija, njegovi logovi će biti nijemi, a ta tišina je dokaz.
Uporedite jednu varijablu po jednu
Poređenje s hotspotom je korisno jer sužava problem, a ne zato što dokazuje uzrok. Dvije mreže mogu se istovremeno razlikovati u adresiranju, IP porodici, proxyju, TLS pregovaranju i izlaznoj politici.
Mijenjajte jednu stvar po pokušaju i bilježite ostalo. Tabela ispod je minimum koji držim u bilješci dok to radim:
| 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 |
Jedan red koji se razlikuje između uspješnog i neuspješnog pokretanja je mjesto gdje ide sljedeći sat.
Zaobilazno rješenje je dokaz, ne objašnjenje
Prisiljavanje druge adresne porodice može promijeniti odredište, rutu ili posrednika koji se bira, pa može promijeniti rezultat a da ne dokaže da je IPv6 nekompatibilan s repozitorijem. Druga pregovarana TLS verzija je zapažanje u istoj kategoriji. Nijedno ne opravdava isključivanje provjere certifikata ili slabljenje veze. Pratite politiku i logove komponenta koji je odbio do stvarne odluke, umjesto da se zaustavite na prvoj promjeni koja proradi.
Zaobilazno rješenje koje ne možete objasniti ponovo će pasti negdje drugdje.
Napišite izvještaj koji će biti popravljen
Dajte vlasniku komponenta koji je odgovorio istu operaciju, dvije putanje i komponentu koja je rekla ne. Uklonite autorizacijska zaglavlja, ugrađene akreditive i privatne detalje repozitorija prije nego što bilo šta podijelite.
Koristan izvještaj je kratak, ponovljiv i imenuje sloj, a ne simptom.
Provjera koju radim, po redu
Potvrdite udaljeni URL i razriješeni endpoint, pa zabilježite status i zaglavlja iz neuspješnog pokretanja. Ponovite istu operaciju na drugoj mreži i uporedite dva zapisa.
Zatim odnesite tu razliku komponentu koji je odgovorio:
- Proxy konfiguracija na klijentu i na mreži.
- Izlazna politika ili filtriranje ispred repozitorija.
- Opseg tokena ili računa, uključujući istek i SSO uslove.
- Dozvola repozitorija za identitet koji token predstavlja.
Sama semantika statusa nalazi se u RFC 9110, i vrijedi je citirati kada pišete izvještaj.