Kwa nini Port-Share huwafanya wageni wote wa tovuti waonekane kama localhost
Seva ya nyuma inaona hatua ya uhamishaji, si kivinjari. Angalia anwani ya chanzo inapopotea, kisha amua ni sehemu gani inayoweza kuithibitisha.
Kila mstari katika kumbukumbu ya ufikiaji unaonyesha anwani hiyo hiyo ya loopback, wakati ukurasa wenyewe unapakia na cheti hicho huthibitishwa ipasavyo. Hakuna kilichoharibika kwa maana ya kutoweza kufikiwa, na ndiyo sababu hali hii hudumu kwa miezi. Kilichoharibika ni uhusishaji: sehemu ya nyuma ya wavuti hurekodi anwani ya hatua iliyohamisha muunganisho, na kila uamuzi uliofuata ulioamini kumbukumbu ulirithi jibu lile lile lisilo sahihi.
Ukaguzi ulio hapa chini huanza kutoka kwenye kebo kuelekea ndani. Simama kwenye ule wa kwanza unaoeleza thamani unayoiona, kwa sababu kila hatua inayofuata inadhani zile zilizotangulia tayari ni kweli. Hakuna hata mmoja wao unaohitaji kukisia usanidi wa upande wa mbele.
Fuata muunganisho huo miwili, si mstari wa kumbukumbu
Port-Share hujumuisha itifaki mbili kwenye kikusanyaji kimoja cha TCP. OpenVPN hukagua baiti za kwanza za muunganisho unaoingia, huubakiza unapoonekana kama itifaki yake mwenyewe, na kupeleka kitu kingine chochote kwenye lengo la pili. Lengo hilo kwa kawaida ni seva ya wavuti kwenye mwenyeji huyo huyo, kwa hiyo soketi iliyokubaliwa na seva ya wavuti ina mchakato wa OpenVPN kama mwenza wake.
ss -ltnp 'sport = :443'
ss -tnp 'dport = :8080'
Amri ya kwanza inaonyesha nani anamiliki kikusanyaji cha umma. Ya pili inaonyesha miunganisho inayofika kwenye mlango wa sehemu ya nyuma, na anwani ya mwenza wao ndiyo itakayochapishwa na kumbukumbu ya ufikiaji. Ikiwa mwenza huyo ni loopback, kumbukumbu ni sahihi na taarifa ilipotea tabaka moja mapema. Kubadilisha jina la uga wa kumbukumbu au kuwezesha moduli ya IP ya mteja hakutarudisha anwani ambayo muunganisho haukuibeba kamwe.
Huu ndio ukaguzi unaoamua kila kitu kingine. Ikiwa mwenza wa sehemu ya nyuma ni anwani ya kivinjari, kugawana mlango si tatizo lako na muundo wa kumbukumbu ndio.
Uhamishaji wa usafirishaji si uingizaji wa kichwa
Kihamishaji husogeza baiti. Hakichanganui HTTP, kwa hiyo hakiwezi kuingiza kichwa kwenye ombi ambalo halilisomi kamwe kama ombi, na hakiwezi kuongeza kitu kwenye mtiririko wa TLS unaoupitisha bila kugusa. Moduli inayotarajia kichwa cha wakala itaendelea kusubiri kimoja ambacho hakuna sehemu inayokizalisha.
Mbinu mbili zinaweza kubeba anwani ya asili, na zote zinahitaji makubaliano kwenye pande zote mbili. Itifaki ya PROXY huongeza kichwa kidogo mwanzoni wa muunganisho, na sehemu ya nyuma lazima iwe imesanidiwa kuitarajia; sehemu ya nyuma isiyoitarijia itachukua baiti hizo kama mwanzo wa ombi na kushindwa kwa njia ya kuchanganya. Vichwa vya wakala vinavyoaminika kama X-Forwarded-For hufanya kazi wakati wakala anayeelewa HTTP anaviweka na sehemu ya nyuma inaambiwa ni wenzi gani wanaoruhusiwa kuvihesabia.
Hakuna kimoja kinachojitokeza kiotomatiki, na hakuna kimoja kilicho salama kwa chaguo-msingi. Sehemu ya nyuma inayoamini kichwa chochote cha uhamishaji kinachoingia huruhusu mteja kuchagua anwani yake mwenyewe, jambo ambalo hubadilisha usahihi wa kumbukumbu kuwa njia ya kukwepa udhibiti wa ufikiaji. Endesha onyesho mara moja kwenye mwenyeji wa majaribio kabla ya kuamini kichwa chochote kwenye njia ya uzalishaji.
curl -sS -H 'X-Forwarded-For: 127.0.0.1' https://site.example.com/health
grep -F '127.0.0.1' /var/log/nginx/access.log | tail -n 3
Saraka ya hiari ya ramani ya vyanzo
Kugawana mlango kuna hoja ya hiari ya saraka inayorekodi ramani kati ya anwani ya asili ya chanzo na muunganisho wa uhamishaji, kwenye majukwaa ambako kipengele hiki kimetekelezwa. Upande wa wavuti unatarajiwa kushauriana na ramani hiyo; si kichwa, na haiingizwi kwenye ombi.
Muundo huo unastahili kujulikana kwa sababu unaeleza kwa nini baadhi ya usambazaji huripoti anwani halisi na wengine hawafanyi, kukiwa na usanidi wa upande wa mbele unaoonekana sawa. Tofauti iko upande wa kupokea, na kwa kawaida huishi katika moduli au kiraka ambacho seva nyingi za wavuti zilizopakiwa hazikiwezeshi kwa chaguo-msingi. Soma nyaraka za seva yako ya wavuti kuhusu ndoano kamili inayotoa, na thibitisha kuwa moduli imepakiwa badala ya kudhani hivyo.
Ukichukua njia hii, ichukulie kama muunganiko wa nusu mbili: ramani inayoandikwa na kihamishaji na utafutaji unaofanywa na sehemu ya nyuma. Thibitisha zote mbili, na thibitisha kwamba saraka inastahimili kuanzishwa upya na haikui bila kikomo kwenye kikusanyaji chenye shughuli nyingi.
Amua ni sehemu gani inayothibitisha anwani
Kabla ya kubadilisha usanidi, taja sehemu inayoruhusiwa kudai anwani ya mteja na sehemu zinazoruhusiwa kuiamini. Jibu moja lililoandikwa huzuia mgeuko wa kawaida, ambapo tabaka tatu tofauti kila moja huamini chanzo tofauti.
Miundo mitatu inashughulikia mahitaji mengi. Tenganisha kikusanyaji cha umma na kikusanyaji cha wavuti, ili seva ya wavuti ionee wenza halisi na pasiwe na tatizo la uhusishaji. Weka wakala wa kinyume anayeelewa HTTP mbele, maliza au chambua ombi hapo, na umruhusu kuweka kichwa cha uhamishaji kwa sehemu ya nyuma inayoamini wakala huyo pekee. Au endelea kugawana mlango na ukubali kwamba kumbukumbu zinaonyesha hatua, huku kanuni za ufikiaji zikiandikwa dhidi ya utambulisho wa programu badala ya anwani.
Jambo lisilofanya kazi ni kuchukulia anwani ya loopback iliyohamishwa kama uthibitisho kwamba ombi lilianzia kwenye mashine hii. Hitimisho hilo ni kinyume kabisa: anwani ipo kwa sababu sehemu ya ndani iliunda muunganisho. Kanuni iliyoandikwa hivyo humkubali yeyote anayeweza kufikia kikusanyaji.
Jaribu kanuni, si ukurasa
Ukurasa unaopakia unathibitisha kwamba njia ya uhamishaji inafanya kazi na hausemi chochote kuhusu uhusishaji. Jaribu mtumiaji wa anwani: kanuni ya ufikiaji, kikomo cha kasi, kiingilio cha ukaguzi, utafutaji wa kijiografia.
curl -sS -o /dev/null -w '%{http_code}\n' https://site.example.com/
tail -n 5 /var/log/nginx/access.log
grep -c '' /var/log/nginx/access.log
Linganisha ombi la nje lililoidhinishwa na kumbukumbu za upande wa mbele na wa nyuma, na thibitisha kwamba kanuni inayopaswa kukataa bado inakataa na ile inayopaswa kuruhusu bado inaruhusu. Ikiwa mstari wa kumbukumbu ni sahihi lakini kanuni bado ina tabia kana kwamba kila mtu ni wa ndani, kanuni inasoma uga tofauti na ule uliourekebisha.
Maliza kwa kuandika mnyororo wa uhusishaji kwenye maelezo ya usambazaji: kikusanyaji kipi, kihamishaji kipi, kichwa au ramani ipi, na sehemu gani ya nyuma imesanidiwa kuiamini. Mtu anayefuata kusoma mstari wa kumbukumbu atahitaji yote manne, na kukosekana kwa maelezo hayo ndiko kunakofanya tiketi hiyo hiyo ifunguliwe tena mwaka mmoja baadaye. Iweke kando ya usanidi na si kwenye uzi wa gumzo.