Mae'r VPN yn cysylltu, ac mae tri offeryn di-gysylltiad yn methu mewn tair ffordd wahanol yr un prynhawn. Mae mitmproxy yn rhoi'r gorau i weld ceisiadau, mae Chrome yn gwrthod y dadfygiwr, ac mae Gradle yn taflu BindException wrth rwymo soced lleol. Yr amheuaeth gyffredin yw bod y twnnel yn blocio localhost. Ni all: 127.0.0.1 yn cael ei drin y tu mewn i'r cnewyllyn ac ni fydd byth yn cyrraedd addasydd, heb sôn am borth.

Tair haen, tri thoriad gwahanol

Yr hyn a newidiodd gyda'r cleient yw nid y llwybr i loopback. Proxy lleol, stôr ymddiriedaeth y peiriant a hidlydd pecynnau yw'r newid, ac mae pob un yn torri rhan wahanol o lif gwaith datblygwr. Rhestru'r symptom yn y rhes gywir yw'r rhan fwyaf o'r diagnosis:

SymptomLayerFirst check
Proxy sees no trafficLocal proxy or listenerss -lntp, or netstat -ano on Windows
TLS error in one tool onlyTrust storeWhich CA bundle does that runtime read?
Local bind or connect refusedPacket filter or port ownerWho holds the port, and what rule drops it?

Mae bron pob adroddiad o'r math hwn yn dechrau ar y rhes olaf ac yn gweithio tuag i fyny, sy'n wrthnysig. Y twnnel yw'r un haen na all, yn bendant, weld traffig loopback, felly haedda'r lleiaf o amheuaeth. Dechreuwch â'r hyn a rwymodd y broses, yna gofynnwch ba dystysgrifau y mae'n ymddiried ynddynt, a dim ond wedyn edrychwch ar bolisi'r peiriant.

Dechreuwch gyda'r gwrandawr, nid y twnnel

Pan fydd proxy ar 127.0.0.1:8080 yn rhoi'r gorau i dderbyn traffig, mae un o dri pheth wedi digwydd: ni chychwynnodd erioed, rhwymodd borth gwahanol, neu fe ollyngodd yr hidlydd y cysylltiad loopback. Mae rhestru'r socedi sy'n gwrando yn ateb hynny mewn un gorchymyn, ac mae hefyd yn dangos pa broses sy'n berchen ar y porth pan fydd dau offeryn yn anghytuno pwy oedd gyntaf.

Mae cyfeiriad lleol mewn chwiliad llwybr yn cadarnhau'r un peth o'r cyfeiriad arall. ip route get tuag at gyrchfan loopback yn adrodd am y ddyfais loopback, byth am y twnnel, sy'n frawddeg ddefnyddiol i'w chadw'n barod pan fydd rhywun yn cynnig newid llwybro fel ateb.

Haen y proxy: nid yw'r amgylchedd yn ffurfweddiad

Mae llawer o gleientiaid corfforaethol yn rhedeg proxy HTTP ac yn disgwyl i gymwysiadau ei ddefnyddio. Mae gosod HTTPS_PROXY mewn plisgyn yn trwsio offeryn llinell orchymyn sy'n ei barchu, ac yn gwneud dim i offeryn sy'n darllen ei ffeil gosodiadau ei hun. Mae Gradle, Selenium a gRPC bob un yn ymgynghori â'i ffurfweddiad ei hun, ac mae proxy a allforiwyd mewn un terfynell yn anweledig i ddaemon a gychwynnir gan yr IDE.

Offer cynwysyddion yw'r lle arferol y daw hyn yn weladwy. Mae loopback cynhwysydd yn un ei hun, felly 127.0.0.1 y tu mewn i'r cynhwysydd nid yw byth yn golygu proxy'r gwesteiwr; mae angen cyfeiriad y gwesteiwr neu osodiad rhwydwaith gwesteiwr. Mae ateb sy'n gweithio yn y plisgyn ac yn methu yn y build fel arfer yn y rhes hon, nid y twnnel.

Haen ymddiriedaeth: mae'r offeryn yn darllen stôr wahanol

Rhyng-gipio yw'r ail newid, ac mae'n cynhyrchu'r gwallau mwyaf camarweiniol. Mae'r cleient yn cyflwyno ei dystysgrif ei hun ar gyfer cysylltiadau a archwilir, felly mae porwr sy'n ymddiried yn y gwreiddyn corfforaethol yn llwyddo tra bod offeryn â stôr CA wedi'i blygu yn methu. Mae requests Python drwy certifi yn achos clasurol: gall stôr y system weithredu fod yn gywir ac mae'r cais yn dal i fethu, oherwydd nid yw'r amgylchedd gweithredu hwnnw byth yn ei ddarllen. Anaml y mae testun y gwall yn sôn am ryng-gipio, a dyna pam y caiff y rhes hon ei chamddiagnosio fel pen draw wedi torri.

Cymharwch yr hyn y mae'r pen draw yn ei gyflwyno mewn gwirionedd â'r hyn y mae'r offeryn wedi'i ddilysu. openssl s_client yn dangos y gadwyn a anfonwyd gan y gweinydd; mae allbwn dilysu'r offeryn ei hun yn dangos beth a benderfynodd. Pan fyddant yn anghytuno, REQUESTS_CA_BUNDLE neu SSL_CERT_FILE yw'r lifer ar gyfer yr amgylchedd gweithredu hwnnw, ac mae'r gwreiddyn corfforaethol yn perthyn yn y stôr y mae'r amgylchedd hwnnw'n ei darllen, yn hytrach nag mewn lle byd-eang nad yw ond rhai offer yn ei barchu.

Mae newid fersiwn sy'n trwsio gwall SSL yn dystiolaeth am bolisi ymddiriedaeth a seiffr, nid am y VPN. Newidiodd israddio Python a wnaeth i gleient SOAP weithio y stôr CA wedi'i blygu a'r gosodiadau TLS diofyn; ni symudodd y llwybr rhwydwaith.

Haen yr hidlydd: gall ollyngi loopback hefyd

Y trydydd newid yw hidlydd pecynnau, ac mae rhai cynhyrchion yn gosod rheolau sy'n gollwng traffig nad yw'n mynd i'r twnnel. Gall gwrandawyr lleol gael eu cynnwys. Mae hynny'n troi soced sy'n gweithio yn gysylltiad a wrthodwyd neu a gafodd ei amseru allan, ac mae'r gwall sy'n deillio yn edrych fel nam yn y cymhwysiad yn hytrach na pholisi ar y peiriant.

Perchenogaeth porth yw hanner arall y haen hon. BindException yn golygu na ellid agor y soced, sy'n fethiant gwahanol i gysylltiad a wrthodwyd. Gwiriwch a yw proses arall eisoes yn dal y porth cyn beio'r hidlydd, yna chwiliwch am reol sy'n gollwng traffig lleol ac ychwanegwch y caniatâd culaf y mae'r cynnyrch yn ei gefnogi. Mae dau offeryn yn cystadlu am yr un porth dadfygio yn cynhyrchu'r un neges yn union â bloc polisi, a dim ond un ohonynt sy'n cael ei drwsio gan newid mur gwarchod.

Mae porth dadfygio Chrome yn methu yn yr un teulu. Mae'r porwr yn cychwyn, ni all y gyrrwr gyrraedd pen draw DevTools, ac mae'r neges yn enwi DevTools yn hytrach na'r rhwydwaith. Mae baneri lansio ychwanegol a rheolwr gyrrwr diangen yn newid pa broses sy'n berchen ar y porth, a dyna pam y mae eu dileu weithiau'n ymddangos fel pe bai'n trwsio'r VPN.

Trwsiwch y haen a fethodd

Trwsiwch y haen a fethodd, nid y twnnel. Mae gwrandawr loopback na ellir ei gyrraedd angen ei wrandawr neu ei borth wedi'i gywiro. Mae tystysgrif anhyderus angen y gwreiddyn corfforaethol wedi'i osod lle mae'r amgylchedd gweithredu penodol hwnnw'n edrych, gyda'r eithriad yn gul. Mae hidlydd sy'n gollwng traffig lleol angen rheol ganiatáu benodol yn hytrach na hidlydd wedi'i analluogi, oherwydd mae analluogi hefyd yn ailagor popeth arall yr oedd yn ei warchod.

Nid yw ailgysylltu'r VPN yn profi'r un o'r haenau hyn. Dim ond ail-redeg y newid a'u torrodd y mae'n ei wneud, a dyna pam y mae'r un tri methiant yn dychwelyd ar ôl pob ailgysylltiad ac yn diflannu ar ôl pob ailgychwyn sy'n gadael y cleient yn segur.

Erthyglau cysylltiedig