VPN so pọ̀, àti irínṣẹ́ mẹ́ta tí kò ní ìbáṣepọ̀ kùnà ní ọ̀nà mẹ́ta ọ̀tọ̀ọ̀tọ̀ ní ọ̀sán yẹn. mitmproxy dá ṣíṣe rí àwọn ìbéèrè dúró, Chrome kọ olùdánwò náà, Gradle sì ń ju BindException nígbà tí ó ń so socket àdúgbò. Ìfura tí ó wọ́pọ̀ ni pé tunnel náà dẹ́kun localhost. Kò lè ṣe bẹ́ẹ̀: 127.0.0.1 a ń ṣe é nínú kernel, kò sì dé ọ̀dọ̀ adapter rárá, kí ni ẹnu-ọ̀nà?

Ìpele mẹ́ta, ìkùnà mẹ́ta ọ̀tọ̀ọ̀tọ̀

Ohun tí ó yípadà pẹ̀lú alábàáṣepọ̀ kì í ṣe ọ̀nà sí loopback. Ó jẹ́ proxy àdúgbò, ibi ìtọ́jú ìgbẹ́kẹ̀lé ẹ̀rọ àti àlẹmọ́ àpò, ọ̀kọ̀ọ̀kan wọn sì ń fọ́ apá ọ̀tọ̀ọ̀tọ̀ nínú ìtòlẹ́sẹẹsẹ iṣẹ́ olùgbédàá. Pípín àmì náà sí ìlà tí ó tọ́ ni ọ̀pọ̀ jùlọ ìwádìí:

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?

Ó fẹ́rẹ̀ẹ́ jẹ́ gbogbo ìròyìn irú èyí máa ń bẹ̀rẹ̀ ní ìlà tí ó kẹ́yìn, ó sì ń gun òkè, èyí tí ó yí òdìkejì. Tunnel ni ìpele kan ṣoṣo tí a fi ẹ̀rí hàn pé kò lè rí ìrìnàjò loopback, nítorí náà ó yẹ kí ó ní ìfura tí ó kéré jùlọ. Bẹ̀rẹ̀ pẹ̀lú ohun tí ìlànà náà so, lẹ́yìn náà béèrè àwọn ẹ̀rí tí ó gbẹ́kẹ̀lé, àti lẹ́yìn náà nìkan wo ìlànà lórí ẹ̀rọ náà.

Bẹ̀rẹ̀ pẹ̀lú olùgbọ́, kì í ṣe tunnel

Nígbà tí 127.0.0.1:8080 lorí proxy bá dá gbígbà ìrìnàjò dúró, ọ̀kan nínú mẹ́ta ti ṣẹlẹ̀: kò bẹ̀rẹ̀ rárá, ó so port mìíràn, tàbí àlẹmọ́ náà ju ìsopọ̀ loopback sílẹ̀. Kíkọ àwọn socket tí ń gbọ́ sílẹ̀ máa ń dáhùn èyí pẹ̀lú àṣẹ kan, ó sì tún fi hàn irú ìlànà tí ó ni port nígbà tí irínṣẹ́ méjì kò bá gbà pé ta ni ó kọ́kọ́.

Àdírẹ́sì àdúgbò nínú wíwá ọ̀nà máa ń jẹ́rìí sí ohun kan náà láti ẹ̀gbẹ́ kejì. ip route get sí ibi ìlọ loopback ó ń ròyìn ẹ̀rọ loopback, kì í ṣe tunnel rárá, èyí tí ó jẹ́ gbólóhùn wíwúlò láti múra sílẹ̀ nígbà tí ẹnìkan bá dábàá ìyípadà ọ̀nà gẹ́gẹ́ bí ojútùú.

Ìpele proxy: àyíká kì í ṣe ìṣètò

Ọ̀pọ̀ olùbánisọ̀rọ̀ ilé-iṣẹ́ ń ṣiṣẹ́ proxy HTTP, wọ́n sì ń retí pé àwọn ohun èlò yóò lò ó. Sísisẹ́tò HTTPS_PROXY nínú shell máa ń tún àwọn irínṣẹ́ ìlà àṣẹ tí ó bọ̀wọ̀ fún un ṣe, kò sì ṣe ohunkóhun fún irínṣẹ́ tí ó ka fáìlì ìṣètò tirẹ̀. Gradle, Selenium àti gRPC ọ̀kọ̀ọ̀kan wọn ń gbìmọ̀ràn pẹ̀lú ìṣètò wọn, proxy tí a gbé jáde nínú terminal kan sì jẹ́ aláìlèrí fún daemon tí IDE bẹ̀rẹ̀.

Irínṣẹ́ kọ́ńtẹ́nà ni ibi tí ó wọ́pọ̀ níbi tí èyí ti ń hàn. Loopback kọ́ńtẹ́nà ni tirẹ̀, nítorí náà 127.0.0.1 nínú kọ́ńtẹ́nà kì í ṣe proxy ẹ̀rọ olùgbàlejò rárá; àdírẹ́sì olùgbàlejò tàbí ìṣètò nẹ́tíwọ́kì olùgbàlejò ni a nílò. Àtúnṣe tí ó ṣiṣẹ́ nínú shell tí ó sì kùnà nínú build sábà máa ń jẹ́ ìlà yìí, kì í ṣe tunnel.

Ìpele ìgbẹ́kẹ̀lé: irínṣẹ́ ń ka ibi ìtọ́jú mìíràn

Ìdánáwọ́ ni ìyípadà kejì, ó sì ń mú àwọn àṣìṣe tí ó ń tan ni jẹ́ jáde. Alábàáṣepọ̀ fi ẹ̀rí tirẹ̀ hàn fún àwọn ìsopọ̀ tí a ṣàyẹ̀wò, nítorí náà aṣàwákiri tí ó gbẹ́kẹ̀lé gbòǹgbò ilé-iṣẹ́ máa ń ṣàṣeyọrí nígbà tí irínṣẹ́ tí ó ní ibi ìtọ́jú CA tí a kó pọ̀ yóò kùnà. requests Python nípasẹ̀ certifi ni ìṣẹ̀lẹ̀ àkọ́kọ́: ibi ìtọ́jú ẹ̀rọ ìṣiṣẹ́ lè tọ́, ìbéèrè sì ṣì kùnà, nítorí pé àyíká ìṣiṣẹ́ yẹn kì í ka a rárá. Ọ̀rọ̀ àṣìṣe kì í sábà dárúkọ ìdánáwọ́, ìdí nìyẹn tí a fi ń ṣe àyẹ̀wò ìlà yìí lọ́nà tí kò tọ́ gẹ́gẹ́ bí ibi ìparí tí ó ti fọ́.

Ṣe àfiwé ohun tí ibi ìparí ń fi hàn gangan pẹ̀lú ohun tí irínṣẹ́ náà jẹ́rìí. openssl s_client ń fi ẹ̀wọ̀n tí server ránṣẹ́ hàn; ìjáde ìjẹ́rìí irínṣẹ́ fúnra rẹ̀ ń fi ohun tí ó pinnu hàn. Nígbà tí wọn kò bá bára mu, REQUESTS_CA_BUNDLE tàbí SSL_CERT_FILE ni ọ̀pá fún àyíká ìṣiṣẹ́ yẹn, gbòǹgbò ilé-iṣẹ́ sì yẹ kí ó wà nínú ibi ìtọ́jú tí àyíká yẹn ń kà, kì í ṣe ibi àgbáyé tí àwọn irínṣẹ́ díẹ̀ nìkan ń bọ̀wọ̀ fún.

Ìyípadà ẹ̀dà tí ó tún àṣìṣe SSL ṣe jẹ́ ẹ̀rí nípa ìlànà ìgbẹ́kẹ̀lé àti ìkọ̀kọ̀, kì í ṣe nípa VPN. Ìdínkù ẹ̀dà Python tí ó mú kí alábàáṣepọ̀ SOAP ṣiṣẹ́ yí ibi ìtọ́jú CA tí a kó pọ̀ àti àwọn ìṣètò TLS àkọ́kọ́ padà; ọ̀nà nẹ́tíwọ́kì kò mì.

Ìpele àlẹmọ́: ó lè ju loopback sílẹ̀ pẹ̀lú

Ìyípadà kẹta ni àlẹmọ́ àpò, àwọn ọjà kan sì ń fi àwọn ìlànà sínú tí ń ju ìrìnàjò tí kò wọ tunnel sílẹ̀. Àwọn olùgbọ́ àdúgbò lè wà nínú. Èyí máa ń sọ socket tí ó ń ṣiṣẹ́ di ìsopọ̀ tí a kọ̀ tàbí tí àkókò rẹ̀ ti parí, àṣìṣe tí ó sì jáde dàbí àṣìṣe nínú ohun èlò dípò ìlànà lórí ẹ̀rọ.

Níní port jẹ́ ìdajì kejì ti ìpele yìí. BindException túmọ̀ sí pé a kò lè ṣí socket, èyí tí ó jẹ́ ìkùnà mìíràn yàtọ̀ sí ìsopọ̀ tí a kọ̀. Ṣàyẹ̀wò bóyá ìlànà mìíràn ti di port náà ní ìṣáájú kí o tó dá àlẹmọ́ lẹ́bi, lẹ́yìn náà wá ìlànà tí ń ju ìrìnàjò àdúgbò sílẹ̀ kí o sì fi ìyọ̀nda tí ó kéré jùlọ tí ọjà náà ń ṣe àtìlẹ́yìn kún un. Irínṣẹ́ méjì tí ń díje fún port ìdánwò kan náà máa ń mú ìfiránṣẹ́ tí ó dàbí ìdènà ìlànà jáde, ọ̀kan nìkan sì ni a ń tún ṣe nípasẹ̀ ìyípadà firewall.

Port ìdánwò Chrome kùnà nínú ìdílé kan náà. Aṣàwákiri bẹ̀rẹ̀, awakọ̀ kò lè dé ibi ìparí DevTools, ìfiránṣẹ́ sì dárúkọ DevTools dípò nẹ́tíwọ́kì. Àwọn àmì ìbẹ̀rẹ̀ àfikún àti olùdarí awakọ̀ tí kò pọn dandan ń yí padà irú ìlànà tí ó ni port, ìdí nìyẹn tí yíyọ wọn kúrò fi ń dàbí pé ó tún VPN ṣe.

Tún ìpele tí ó kùnà ṣe

Tún ìpele tí ó kùnà ṣe, kì í ṣe tunnel. Olùgbọ́ loopback tí a kò lè dé nílò àtúnṣe olùgbọ́ tàbí port rẹ̀. Ẹ̀rí tí a kò gbẹ́kẹ̀lé nílò gbòǹgbò ilé-iṣẹ́ tí a fi sínú ibi tí àyíká ìṣiṣẹ́ pàtó yẹn ń wo, pẹ̀lú àyọkùrò tí a pa mọ́ ní dín. Àlẹmọ́ tí ń ju ìrìnàjò àdúgbò sílẹ̀ nílò ìlànà ìyọ̀nda pàtó dípò àlẹmọ́ tí a ṣe aláìṣiṣẹ́, nítorí àìṣiṣẹ́ máa ń tún ṣí gbogbo ohun mìíràn tí ó ń dáàbò bò.

Sísopọ̀ VPN lẹ́ẹ̀kan sí i kì í dán ọ̀kan nínú àwọn ìpele wọ̀nyí wò. Ó kàn ń tún ìyípadà tí ó fọ́ wọn ṣe, ìdí nìyẹn tí àwọn ìkùnà mẹ́ta kan náà fi ń padà bọ̀ lẹ́yìn gbogbo àtisopọ̀ àti tí wọ́n fi ń pòórá lẹ́yìn gbogbo àtúnbẹ̀rẹ̀ tí ó fi alábàáṣepọ̀ sílẹ̀ láìṣiṣẹ́.

Àwọn àpilẹ̀kọ tó jọra