Pam mae dirprwy PAC mewn VM gwestai yn methu â URL y gwesteiwr
Mae URL PAC yn cyfeirio at sgript polisi, nid at ddirprwy. Rhaid i’r gwestai ei nôl, ei gwerthuso â’i gyfeiriadau ei hun a chyrraedd y dirprwy a ddewisir ganddo.
«Mae’r gwesteiwr yn defnyddio’r ffeil PAC hon, felly rhoddais yr un URL yn y VM» yw brawddeg resymol a chynllun anghyflawn. Mae URL PAC yn cyfeirio at sgript polisi, nid at ddirprwy. Hyd nes y gall y gwestai nôl y sgript honno, ei gwerthuso â’i gyfeiriadau ei hun a chyrraedd pa ddirprwy bynnag a enwir gan y sgript, llinyn mewn maes gosodiadau yn unig yw’r URL. Daw’r rhan fwyaf o’r dryswch o amgylch polisi dirprwy mewn peiriannau rhithwir o drin yr un llinell honno fel y ffurfweddiad cyfan.
Sgript yw URL PAC, nid dirprwy
Mae’r ffeil yn cynnwys ffwythiant sy’n cymryd URL a gwesteiwr ac yn dychwelyd disgrifiad dirprwy neu’r gair DIRECT. Nid oes unrhyw beth yn yr URL yn dweud wrth y cymhwysiad i ble i anfon traffig; mae’r penderfyniad hwnnw’n digwydd ar amser rhedeg, y tu mewn i’r sgript, gyda data y mae’r sgript yn gofyn i’r platfform amdano. Mae deialog gosodiadau sy’n derbyn URL PAC yn derbyn pwyntiwr at weithdrefn benderfynu.
Y gwahaniaeth hwnnw sy’n esbonio pam y gall copïo’r URL edrych fel pe bai wedi gweithio. Mae’r maes wedi’i lenwi, mae’r gosodiad wedi’i gadw, a dim ond yn ddiweddarach y mae’r methiant yn ymddangos, pan na ellir nôl y sgript neu pan fydd yn dychwelyd dirprwy na all y gwestai ei gyrraedd.
Mae’r pedwar cam yn methu bob un mewn ffordd wahanol
Y tu mewn i’r gwestai rhaid i bedwar peth ddigwydd yn eu trefn, ac mae gan bob un ei ôl llofnod gwall ei hun. Mae’r gwestai yn nôl y ffeil PAC. Mae’r cymhwysiad yn gwerthuso’r sgript ar gyfer yr URL a ofynnwyd amdano gan ddefnyddio gwybodaeth leol. Mae’r dirprwy a ddewiswyd yn cael ei ddatrys ac yn cael ei gyrraedd. Mae dilysu yn digwydd os yw’r dirprwy yn gofyn amdano.
Dechreuwch drwy brofi’r nôl, oherwydd heb hynny mae popeth i lawr yr afon yn ddiystyr. Mae ffeil PAC ar weinydd preifat yn gofyn am lwybr a ganiateir i’r gweinydd hwnnw cyn y gall unrhyw reol helpu, ac ni all dewis dirprwy y tu mewn i sgript anghyrraeddadwy greu’r llwybr a fyddai’n ei nôl:
curl -sS -o /dev/null -w '%{http_code}\n' http://pac.corp.example/proxy.pac
getent hosts pac.corp.example
Os yw’r cais hwnnw’n methu o’r gwestai ac yn gweithio o’r gwesteiwr, y llwybr o’r gwestai i’r gweinydd PAC sydd ar fai, nid cynnwys y sgript. Os yw’n dychwelyd ffeil JavaScript, ewch ymlaen i’r ail gam a darganfod beth mae’r sgript yn ei benderfynu ar gyfer cyd-destun y gwestai.
Mae’r un sgript yn penderfynu’n wahanol y tu mewn i VM
Gall ffwythiannau PAC archwilio’r gwesteiwr a ofynnwyd amdano a gwybodaeth am y peiriant sy’n gwneud y gwerthusiad. Bydd rheol a adeiladwyd ar gyfeiriad y cleient ei hun, er enghraifft un sy’n gwirio cyfeiriad rhyngwyneb neu brofion aelodaeth isrwydwaith, yn gweld cyfeiriad y gwestai yn hytrach na chyfeiriad y gwesteiwr ffisegol. Y tu ôl i NAT ar ochr y gwesteiwr mae’r rhain yn gyfeiriadau gwahanol, ac felly gall yr un sgript ddewis dirprwy gwahanol neu ddychwelyd at DIRECT y tu mewn i’r VM.
Nid yw hyn yn wall yn y sgript. Mae’r sgript yn gwneud yn union yr hyn y’i hysgrifennwyd i’w wneud gyda mewnbwn gwahanol, ac mae hynny’n esbonio’r adroddiad dryslyd lle mae’r gwesteiwr yn defnyddio’r dirprwy ac mae’r gwestai’n cysylltu’n uniongyrchol. Atgynhyrchwch y penderfyniad yn hytrach na rhesymu amdano: mae gwerthusydd PAC sy’n cymryd cyfeiriad ac URL, os yw eich dosbarthiad yn cynnwys un, yn setlo’r cwestiwn mewn un gorchymyn. Fel arall profwch gyda’r cymhwysiad a ddefnyddir mewn gwirionedd, a darllenwch ei gofnod dirprwy yn hytrach na dyfalu.
Peidiwch â chasglu bod y gwestai wedi etifeddu gosodiadau dirprwy’r gwesteiwr oherwydd bod ei draffig yn mynd trwy gyfieithu ar ochr y gwesteiwr. Mae cyfieithu rhwydwaith yn anfon pecynnau ymlaen; nid yw’n copïo ffurfweddiad cymhwysiadau, a ffurfweddiad cymhwysiad yw’r dirprwy system.
Offer nad ydynt yn darllen PAC o gwbl
Mae offer llinell orchymyn yn ffin ar wahân, a dyma lle collir llawer o amser. Nid yw curl yn gweithredu ffeiliau PAC, fel y mae ei ddogfennaeth dirprwy yn ei ddweud yn blwmp ac yn blaen. Nid yw cyfeirio newidyn dirprwy at URL lawrlwytho PAC yn troi’r sgript yn ben draw dirprwy; bydd yr offeryn yn ceisio siarad HTTP â ffeil JavaScript ac yn methu mewn ffordd sy’n edrych fel problem rhwydwaith.
Mae’r un peth yn wir am lawer o reolwyr pecynnau, amgylcheddau rhedeg ieithoedd ac offer adeiladu, sy’n parchu newidynnau dirprwy penodol neu eu ffurfweddiad eu hunain yn unig. Os mai offeryn CLI yw’r prawf sy’n bwysig i chi, ffurfweddwch ef gyda’r dirprwy penodol y byddai’r sgript PAC wedi’i ddewis, a chofnodwch sut y daethoch at y dewis hwnnw fel y gall y person nesaf ei ailadrodd.
Ar gyfer cymhwysiadau bwrdd gwaith ar Linux, rhaid gosod gosodiad y system i fodd awtomatig yn ogystal â rhoi URL iddo; nid yw URL a gadwyd tra oedd y modd llaw yn dal ar waith yn gwneud unrhyw beth. Gwiriwch y ddau, a’u gwirio y tu mewn i’r gwestai:
gsettings get org.gnome.system.proxy mode
gsettings get org.gnome.system.proxy autoconfig-url
Mae DIRECT hefyd yn benderfyniad
Mae canlyniad PAC o DIRECT yn golygu bod y cymhwysiad yn osgoi’r dirprwy HTTP, nid ei fod wedi dianc o’r rhwydwaith. Gall y cysylltiad sy’n deillio o hyd ddilyn llwybr system weithredu trwy dwnnel, neu fethu am resymau nad oes ganddynt ddim i’w wneud â defnyddio dirprwy. I’r gwrthwyneb, mae canlyniad dirprwy yn disgrifio cais un cymhwysiad, nid pob proses yn y gwestai.
Felly gwiriwch yn y cyfeiriad yr ysgrifennwyd y gofyniad ynddo. Os mai’r gofyniad yw «mae’r cymhwysiad hwn yn cyrraedd y safle mewnol», profwch fod y cymhwysiad hwnnw’n cyrraedd, a nodwch pa ddirprwy neu lwybr a’i gludodd. Os mai’r gofyniad yw «mae’r VM ar y rhwydwaith corfforaethol», mae porwr sy’n gweithio trwy ddirprwy a ddewiswyd yn dystiolaeth ar gyfer y porwr hwnnw ac nid dim arall.
Trwsiwch y gadwyn y tu mewn i’r gwestai yn hytrach na diffodd twnnel y gwesteiwr neu lacio’r polisi anfon ymlaen er mwyn i brawf lwyddo. Mae pedwar dolen yn y gadwyn, a bydd newid sy’n hepgor un ohonynt yn dal hyd y tro nesaf y bydd y sgript yn cael ei diweddaru neu gyfeiriad y gwestai yn newid.