Váš Mac stiahne skript politiky a potom sa tohto skriptu pýta, ktorého sprostredkovateľa má požiadavka použiť, zatiaľ čo tunel rozhoduje len o tom, ako sa dosiahne zvolený skok. Obe odpovede končia na tom istom sockete, takže požiadavka, ktorá zlyhá po tom, čo obe uspeli, vyzerá ako jedna porucha, hoci sú dve. Oddelenie sťahovania od výberu a výberu od trasy je väčšina práce na týchto tiketoch. Poradie nižšie sleduje, čo macOS skutočne robí, s kontrolami, ktoré každú fázu zviditeľnia.

Kde sa adresa PAC a proxy rozchádzajú

Adresa ako https://config.corp.example/proxy.pac pomenúva dokument na stiahnutie a tento dokument pomenúva server, cez ktorý má ísť prevádzka. Vloženie URL do poľa hostiteľa proxy žiada klienta, aby otvoril proxy spojenie k súborovému serveru, ktorý takému spojeniu nikdy nenaslúchava. Vo vnútri súboru je funkcia, ktorú klient volá pri každej požiadavke, a jej návratová hodnota je ďalší skok pre tento jediný cieľ. Táto nepriamosť vysvetľuje, prečo sa dva počítače v tej istej sieťovej službe môžu správať odlišne, hoci oba majú správnu URL. Vysvetľuje aj, prečo zmena politiky nadobudne účinnosť bez toho, aby sa niekto dotkol samotného proxy.

Prečítajte si skript skôr, než čokoľvek ďalej vyložíte, pretože pravidlá v ňom nesú výnimky organizácie a poradie, v akom sa uplatňujú. Skorý široký rozsah môže zatieniť neskorší interný suffix a hostiteľ, ktorý má očividne obísť proxy, ho naďalej používa. Keď niekto tvrdí, že politika je nesprávna, skript je jediné miesto, kde sa toto tvrdenie vyrieši.

Skript sa musí stiahnuť skôr, než čokoľvek rozhodne

Stiahnutie politiky vyžaduje preložené meno a trasu k tomu, čo súbor obsluhuje, a pripojený tunel neznamená ani jedno. Ak sa hostiteľ prekladá len cez privátny DNS, resolver používaný v tej chvíli rozhoduje, či sťahovanie môže začať. Ak hostiteľ leží v privátnom rozsahu, trasa musí existovať z tohto počítača, nie z kolegovho notebooku. Kópia uložená v medzipamäti z predchádzajúcej relácie to všetko skrýva, kým medzipamäť nevyprší alebo sa počítač nereštartuje.

Vykonajte tri kontroly nižšie v poradí a zastavte sa pri prvom zlyhaní, pretože fázy nemajú spoločnú príčinu. Spolu ukazujú, či je politika nakonfigurovaná, či je dosiahnuteľná a čo vracia.

scutil --proxy
networksetup -getautoproxyurl "Wi-Fi"
curl -sS -o /dev/null -w "%{http_code}\n" https://config.corp.example/proxy.pac

Prvý príkaz vypíše slovník proxy pre aktívnu službu vrátane akejkoľvek URL automatickej konfigurácie, ktorú systém drží. Druhý hlási URL priradenú k jednej pomenovanej službe, čo je dôležité na notebooku, ktorý prechádza medzi Wi-Fi a Ethernet. Tretí stiahne súbor bez vykreslenia, takže 404, vypršanie času a zlyhanie resolvera zostávajú rozlíšiteľné. Ak posledný príkaz vráti skript, kým aplikácie stále zlyhávajú, problém už prešiel fázu sťahovania.

Čo odpoveď DIRECT skutočne preskakuje

Špecifikácia PAC dáva klientovi malý slovník a DIRECT je jedno z jeho slov. Slovo hovorí klientovi, aby pre túto požiadavku preskočil proxy, a nehovorí nič o tom, ktoré rozhranie socket potom použije. Priamy socket na plnom tuneli predsa vychádza cez VPN a predsa ukazuje cieľu výstupnú adresu tunela.

Čítať DIRECT ako niečo mimo VPN je chyba, ktorá posiela ľudí do nesprávneho panela nastavení. Zrkadlový obraz je rovnako častý, pretože k privátnemu proxy sa dá dostať po rozdelenej trase, kým zvyšok počítača zostáva mimo tunela. To, čo cieľ potom hlási, patrí vlastnému výstupu proxy, ktorý môže byť v inej krajine. Zapísanie očakávania pre jedného interného a jedného verejného hostiteľa to rýchlo odhalí, pretože skript často odpovedá obom odlišne. Keď viete, ktorý skok vytvoril adresu, správa prestane byť záhadná.

Tri zlyhania, ktoré sa prejavia ako jedna chybová stránka

Politika sa nemusí stiahnuť, zvolený proxy nemusí byť dostupný a požiadavka, ktorá dorazí do služby, tam môže byť stále odmietnutá. Všetky tri prichádzajú ako vypršanie času alebo všeobecná chybová stránka a žiadne nepomenúva fázu, ktorá sa pokazila. Zaznamenanie rozhodnutia vedľa chyby je to, čo ich oddeľuje. Dve sondy nižšie testujú skok, ktorý skript zvolil, jednu pre každú vetvu, ktorú môže vrátiť.

curl -v --max-time 8 http://proxy.corp.example:8080/
curl -v --max-time 8 https://intranet.corp.example/

Dokončené pripojenie k proxy presúva otázku na autentifikáciu alebo na vlastnú politiku proxy, ktorá má iného vlastníka. Dokončené pripojenie k internému hostiteľovi bez proxy v ceste vylučuje trasu a ukazuje na politiku. Oba príkazy ignorujú slovník proxy v macOS, ak shell neexportuje premenné proxy, takže ich najprv vymažte. Ani jedna sonda nedokazuje druhú, a preto jedna chybová stránka tak dlho zavádza.

Čo odovzdať s tiketom

Pošlite aktívnu sieťovú službu, URL PAC, výsledok vyhodnotenia pre zlyhávajúceho hostiteľa a fázu, v ktorej sa chyba objavila. Tieto štyri umožňujú ďalšiemu človeku reprodukovať rozhodnutie namiesto hádania, ktorá vrstva bola zapojená. Pridajte stav tunela v okamihu testu, pretože výsledok zachytený pred opätovným pripojením je zastaraný. Uchovajte aj revíziu skriptu, keďže súbor politiky sa mení bez oznámenia a včerajšia odpoveď už nemusí byť aktuálna.

Zaznamenajte, ako sa klient správa, keď sa skript nedá stiahnuť, pretože implementácie sa líšia a rozhodnutie o proxy nie je celozariadenový vypínač. Niektoré sa vrátia k priamemu pripojeniu a iné zlyhajú zavreté, a tento rozdiel mení, či výpadok vyzerá ako pokazený proxy alebo ako fungujúca politika. Potvrďte správanie pre presného klienta a verziu, než sa naň počas incidentu spoľahnete.

Súvisiace články