Zašto PAC proxy u gostujućoj virtualnoj mašini ne radi s URL-om hosta
PAC URL pokazuje na skript politike, a ne na proxy. Gost mora da ga preuzme, procijeni sa svojim adresama i zatim dosegne proxy koji odabere.
„Host koristi ovaj PAC fajl, pa sam isti URL stavio u VM“ je razumna rečenica i nepotpun plan. PAC URL pokazuje na skript politike, a ne na proxy. Dok gost ne može preuzeti taj skript, procijeniti ga svojim adresama i zatim dosegnuti proxy koji skript imenuje, URL je samo niz u polju postavki. Većina zabune oko proxy politike u virtualnim mašinama dolazi od toga što se taj jedan red tretira kao cijela konfiguracija.
PAC URL je skript, a ne proxy
Datoteka sadrži funkciju koja prima URL i host i vraća opis proxyja ili riječ DIRECT. Ništa u URL-u ne govori aplikaciji kamo poslati promet; ta odluka nastaje u vrijeme izvršavanja, unutar skripta, s podacima koje skript traži od platforme. Dijalog postavki koji prihvata PAC URL prihvata pokazivač na proceduru odlučivanja.
Ta razlika objašnjava zašto kopiranje URL-a može izgledati kao da je uspjelo. Polje je popunjeno, postavka je sačuvana, a greška se pojavljuje tek kasnije, kada se skript ne može preuzeti ili kada vrati proxy do kojeg gost ne može doći.
Četiri koraka ne uspijevaju svaki na svoj način
Unutar gosta četiri stvari moraju se dogoditi po redu, a svaka ima svoj potpis greške. Gost preuzima PAC datoteku. Aplikacija procjenjuje skript za traženi URL koristeći lokalne podatke. Odabrani proxy se razrješava i do njega se dolazi. Provjera identiteta događa se ako je proxy zahtijeva.
Počnite dokazom preuzimanja, jer je sve dalje besmisleno bez njega. PAC datoteka na privatnom serveru zahtijeva dopuštenu putanju do tog servera prije nego ijedno pravilo može pomoći, a odabir proxyja unutar nedostupnog skripta ne može stvoriti putanju koja bi ga preuzela:
curl -sS -o /dev/null -w '%{http_code}\n' http://pac.corp.example/proxy.pac
getent hosts pac.corp.example
Ako taj zahtjev ne uspijeva iz gosta, a uspijeva iz hosta, problem je u putanji gosta do PAC servera, a ne u sadržaju skripta. Ako vrati JavaScript datoteku, prijeđite na drugi korak i otkrijte što skript odlučuje za kontekst gosta.
Isti skript odlučuje drugačije unutar VM-a
PAC funkcije mogu pregledati traženi host i podatke o mašini koja provodi procjenu. Pravilo izgrađeno na vlastitoj adresi klijenta, na primjer ono koje provjerava adresu sučelja ili pripadnost podmreži, vidjet će adresu gosta, a ne fizičkog hosta. Iza NAT-a na strani hosta to su različite adrese, pa isti skript može odabrati drugi proxy ili se vratiti na DIRECT unutar VM-a.
To nije greška u skriptu. Skript radi upravo ono za što je napisan, s drugačijim ulazom, i to objašnjava zbunjujuće izvješće u kojem host koristi proxy, a gost se povezuje izravno. Reproducirajte odluku umjesto da o njoj rasuđujete: PAC procjenjivač koji prima adresu i URL, ako ga vaša distribucija ima, rješava pitanje jednom naredbom. U suprotnom testirajte s aplikacijom koja će se doista koristiti i čitajte njezin proxy dnevnik umjesto da nagađate.
Nemojte zaključiti da je gost naslijedio proxy postavke hosta jer njegov promet prolazi kroz prevođenje na strani hosta. Mrežno prevođenje prosljeđuje pakete; ono ne kopira konfiguraciju aplikacija, a sistemski proxy jest konfiguracija aplikacije.
Alati koji uopće ne čitaju PAC
Alati naredbenog retka zasebna su granica i upravo se tu gubi mnogo vremena. curl ne izvršava PAC datoteke, kako njegova dokumentacija o proxyju kaže izravno. Usmjeravanje proxy varijable na URL za preuzimanje PAC-a ne pretvara skript u proxy odredište; alat će pokušati govoriti HTTP s JavaScript datotekom i pasti na način koji izgleda kao mrežni problem.
Isto vrijedi za mnoge upravitelje paketa, okruženja za izvršavanje jezika i alate za izgradnju, koji poštuju samo izričite proxy varijable ili vlastitu konfiguraciju. Ako je test koji vas zanima CLI alat, konfigurirajte ga s konkretnim proxyjem koji bi PAC skript odabrao i zapišite kako ste došli do tog izbora da ga sljedeća osoba može ponoviti.
Za desktop aplikacije na Linuxu sistemsku postavku treba postaviti na automatski način rada i dati joj URL; URL sačuvan dok je način još ručni ne čini ništa. Provjerite oboje i provjerite to unutar gosta:
gsettings get org.gnome.system.proxy mode
gsettings get org.gnome.system.proxy autoconfig-url
DIRECT je također odluka
PAC rezultat DIRECT znači da aplikacija zaobilazi HTTP proxy, a ne da je pobjegla s mreže. Rezultirajuća veza i dalje može slijediti rutu operacijskog sustava kroz tunel ili pasti iz razloga koji nemaju veze s korištenjem proxyja. Suprotno tome, proxy rezultat opisuje zahtjev jedne aplikacije, a ne svaki proces u gostu.
Zato provjeravajte u smjeru u kojem je zahtjev napisan. Ako je zahtjev „ova aplikacija doseže interni site“, dokažite da ta aplikacija doseže i zabilježite koji proxy ili ruta ga je prenio. Ako je zahtjev „VM je na korporativnoj mreži“, preglednik koji radi kroz odabrani proxy dokaz je za taj preglednik i ništa više.
Popravite lanac unutar gosta, umjesto da isključite tunel hosta ili ublažite politiku prosljeđivanja da bi test prošao. Lanac ima četiri karike, a promjena koja preskoči jednu od njih držat će se do sljedećeg ažuriranja skripta ili promjene adrese gosta.