Git 403 s připojenou VPN: najděte, kdo odpovídá
403 je odpověď, ne verdikt o VPN. Určete, která komponenta žádost odmítla, pak porovnávejte po jedné proměnné mezi sítěmi a zapisujte, co se změnilo.
V kancelářské Wi-Fi to funguje a na hotspotu telefonu to selhává, přičemž VPN je v obou případech připojená. Git vrací 403 a chyba má tři řádky. Pokušením je považovat hotspot za příčinu a měnit síťová nastavení, dokud se něco nepohne. HTTP 403 znamená, že server žádost pochopil a odmítl ji, takže užitečná otázka je který server, a užitečný další krok je srovnání, které mění jednu věc po druhé.
Přečtěte stav dřív než síť
403 není neúspěšné hledání, ani timeout TCP, ani nedokončený handshake TLS. Je to rozhodnutí, které učinilo něco, co analyzovalo vaši žádost.
Dokud nevíte, co to rozhodnutí učinilo, každá síťová změna, kterou zkusíte, je odhad s věrohodným příběhem.
Kdo může odpovědět 403?
Aplikace repozitáře je jen jeden kandidát. Proxy, brána nebo filtrační služba mohou stát před ní a odpovědět první a klient vidí v obou případech stejný stav. Uložte stav, příslušné hlavičky a očištěné tělo chyby, pak je spojte s protokoly autorizované služby. Vzdálená URL a skutečně dosažený koncový bod se mohou lišit také kvůli DNS nebo konfiguraci proxy, proto zkontrolujte nakonfigurovanou adresu a proces, který žádost odesílá.
Pokud odmítnutí nikdy nedorazilo do repozitáře, jeho protokoly budou mlčet, a to mlčení je důkaz.
Porovnávejte jednu proměnnou po druhé
Srovnání s hotspotem je užitečné, protože zužuje problém, ne proto, že dokazuje příčinu. Dvě sítě se mohou současně lišit v adresování, rodině IP, proxy, vyjednávání TLS a výstupní politice.
Měňte jednu věc na pokus a zbytek zapisujte. Tabulka níže je minimum, které si při tom držím v poznámce:
| 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 |
Jediný řádek, který se liší mezi fungujícím a selhávajícím během, je místo, kam jde další hodina.
Obchvat je důkaz, ne vysvětlení
Vynucení jiné rodiny adres může změnit cíl, trasu nebo zprostředkovatele, který se vybere, takže může změnit výsledek, aniž by dokázalo, že IPv6 je s repozitářem nekompatibilní. Jiná vyjednaná verze TLS je pozorování ve stejné kategorii. Ani jedno neopravňuje vypnout kontroly certifikátů nebo oslabit spojení. Sledujte politiku a protokoly odmítající komponenty až ke skutečnému rozhodnutí, místo abyste se zastavili u první změny, která funguje.
Obchvat, který nedokážete vysvětlit, znovu selže jinde.
Napište hlášení, které se opraví
Dejte vlastníkovi komponenty, která odpověděla, stejnou operaci, dvě cesty a komponentu, která řekla ne. Před sdílením čehokoli odstraňte autorizační hlavičky, vložené přihlašovací údaje a soukromé údaje repozitáře.
Užitečné hlášení je krátké, opakovatelné a pojmenovává vrstvu, ne symptom.
Kontrola, kterou dělám, v pořadí
Potvrďte vzdálenou URL a přeložený koncový bod, pak zachyťte stav a hlavičky ze selhávajícího běhu. Zopakujte stejnou operaci v druhé síti a porovnejte oba záznamy.
Pak vezměte ten rozdíl ke komponentě, která odpověděla:
- Konfigurace proxy na klientovi a v síti.
- Výstupní politika nebo filtrování před repozitářem.
- Rozsah tokenu nebo účtu, včetně expirace a podmínek SSO.
- Oprávnění repozitáře pro identitu, kterou token zastupuje.
Samotná sémantika stavu je v RFC 9110, a stojí za to ji citovat, když píšete hlášení.