Anwani tatu za wateja zinaonekana katika usanidi wa NGINX na OpenVPN kwenye mwenyeji mmoja, moja kwa kila njia ambayo ombi linaweza kuchukua. Kivinjari kinachofikia anwani ya handaki, kivinjari kinachofikia anwani ya umumizi na programu inayotoka kupitia njia ya intaneti ya lango vyote vinaonekana tofauti kwenye soketi inayosikiliza. Amua ni njia gani unayoiona kabla ya kufasiri mstari wa kumbukumbu. Uamuzi unategemea lengwa alilotumia mteja, msamaha alio nao kwa mwisho wa nje wa VPN, na kama kuna kitu kinachotafsiri pakiti njiani.

Amua kwa lengwa, si kwa kuwa ni nani mtumiaji

Anza na anwani ambayo ombi lilitumwa, kwa sababu anwani hiyo huchagua njia. Ombi kwa anwani ya handaki ya mwenyeji hufika kwenye kiolesura cha handaki likiwa na anwani ya ndani ya mteja kama chanzo. Ombi kwa anwani ya umumizi ya mwenyeji kwa kawaida hufika kwenye kiolesura kinachoelekea intaneti likiwa na anwani ya umumizi ya mteja, hata wakati kompyuta hiyo hiyo ya mkononi ina handaki lililowekwa wakati huo. Uanachama katika bwawa la VPN kwa hiyo ni sifa ya njia ya pakiti, si sifa inayomfuata mtumiaji.

Path the request tookSource the site normally records
Client reaches the site at its tunnel address, 10.24.0.1Client inner address, 10.24.0.20
Client reaches another internet site through the gatewayGateway public egress address, 192.0.2.44
Client reaches the gateway's public address through the endpoint exceptionClient's own public access address

Mstari huo wa tatu ndio unaostahili kukaguliwa kwanza mtumiaji wa VPN anapotokea kwenye kumbukumbu akiwa na anwani isiyo na uhusiano wowote na handaki. Pia inaeleza kwa nini wateja wawili walio na wasifu mmoja wanaweza kutoa maingizo tofauti: mitandao yao ya ufikiaji ni tofauti, na hakuna kitu ndani ya handaki kinachoandika juu ya hilo.

Kwa nini mwisho wa nje huunda njia ya pili ya umumizi

Mteja lazima afikie anwani ya umumizi ya lango ili kuanzisha handaki, kwa hiyo njia kuelekea anwani hiyo lazima iwepo nje ya handaki. Mteja anapoelekeza trafiki yote kuelekea ndani, utekelezaji wenye busara huweka njia maalum ya mwenyeji kuelekea anwani ya umumizi ya seva ili kuepuka handaki linalotegemea lenyewe. Msamaha huo hauchagui huduma, kwa hiyo ombi lolote kwa anwani hiyo hiyo ya umumizi huufuata, ikiwa ni pamoja na ombi la kivinjari kwa tovuti inayopangishwa kwenye lango.

Huu ndio utaratibu ulio nyuma ya ripoti nyingi zenye mkanganyiko katika eneo hili, na unategemea utekelezaji wa mteja badala ya seva. Wateja wawili walio na wasifu unaofanana kwa hiyo wanaweza kuishi tofauti. Kuondoa msamaha ili »kurekebisha« kumbukumbu huangusha handaki pia, kwa hiyo ubakie nao na ubuni kuzunguka hilo.

Soma soketi, jedwali na umbizo la kumbukumbu pamoja

Uchunguzi tatu huamua ni njia gani unayoiona: mahali soketi inasikiliza, kiolesura kipi kinajibu lengwa, na kile umbizo la kumbukumbu hurekodi kweli. Ikiwa msikilizaji amefungwa tu kwa anwani ya handaki, ombi la umumizi haliwezi kumfikia kabisa, jambo ambalo huondoa mistari miwili mara moja. Ikiwa utafutaji wa mteja unarudisha kifaa cha handaki, ombi lilifika likiwa na chanzo cha ndani na kumbukumbu inapaswa kuonyesha hilo.

ss -lntp 'sport = :443'
ip route get 10.24.0.20
ip route get 192.0.2.44

Kisha soma umbizo badala ya mstari. Sehemu inayolishwa na kichwa kilichopitishwa hurekodi dai, si rika la soketi, na dai hilo lina umuhimu tu wakati rika la karibu ni wakala anayeaminika. Kuandika thamani zote mbili kwenye kumbukumbu huamua mabishano ya baadaye, kwa sababu rika la karibu na anwani iliyobadilishwa ni ukweli tofauti na ni mmoja tu wao uliotoka kwenye mtandao.

log_format tunneled '$remote_addr $realip_remote_addr $request $status';
grep -n 'log_format' /etc/nginx/nginx.conf

Chagua mahali pa kuingia unapotaka na ufanye DNS ikubali

Ikiwa tovuti inakusudiwa kupitia handaki tu, ipe jina ambalo kwa wateja wa VPN hutatuliwa hadi anwani ya handaki na utekeleze sera kwenye soketi inayosikiliza. Jibu la DNS lililogawanywa linalorudisha 10.24.0.1 kwa jina la ndani ni uamuzi wa uelekezaji uliovaa mavazi ya maelezo ya utatuzi wa majina. Ikiwa tovuti pia lazima iwe ya umumizi, shikilia majina mawili au bandari mbili na uache kumbukumbu ikwambie lipi liliihudumia ombi.

Kanuni za kuruhusu zinafuata mantiki hiyo hiyo. Kuruhusu bwawa la handaki hakuidhinishi ombi la umumizi, na hakitalijaza anwani ya ndani kwenye muunganisho uliofika kupitia intaneti. Kuchanganya sehemu zote mbili za kuingia chini ya jina moja hufanya chanzo kilichorekodiwa kuwa athari ya pembeni ya uelekezaji wa mteja badala ya chaguo la usanifu.

Thibitisha njia, kisha sera

Thibitisha njia kwa kunasa kwenye lango na ombi unalodhibiti. Kunasa kwenye kifaa cha handaki na kimoja kwenye kiolesura cha umumizi kunaonyesha lipi lililobeba baiti, na mpangilio wa pakiti hukuambia kama ulifanyika utafsiri kati yao.

tcpdump -ni tun0 port 443 -c 5
tcpdump -ni eth0 port 443 -c 5

Kisha thibitisha ufikiaji katika pande zote mbili: mahali pa kuingia palipotajwa kunafanya kazi kwa mteja aliyekusudiwa, na njia ya umumizi isiyoidhinishwa inakataliwa badala ya kuwa polepole tu. Tovuti ya jumla ya mwangwi wa IP inathibitisha kitu kuhusu kutoka kwa lango kwenye intaneti na hakuna kitu kuhusu tovuti hii kwenye mwenyeji mmoja. Wakati ukurasa na WebSocket hazikubaliani, linganisha URL zao, familia za anwani na majibu ya DNS kabla ya kugusa usanidi wa seva.

Makala zinazohusiana