VPN Nyuma ya NAT Usiyoweza Kuusanidi: Kinachobaki Kufanya Kazi
Bila uelekezaji wa lango, pakiti inayoingia haina mahali pa kwenda. Hole punching, UPnP na relay hubadilisha hilo, lakini chini ya tabia maalum ya NAT.
Kila mwisho wa handaki unahitaji anwani na lango ambalo upande mwingine unaweza kufikia, na kipanga njia usichosimamia ndiyo sababu ya kawaida kwa hitaji hilo kushindwa. Jambo la kuvutia si kwamba mbinu zipo, bali kwamba kila moja inategemea sifa ya jedwali la ramani ambalo huoni kutoka kwa mteja. Sifa mbili kati ya hizo huamua karibu kila kitu: jinsi ramani inaundwa, na ikiwa inakubali pakiti kutoka anwani ambayo upande wa ndani haujawahi kuwasiliana nayo. Panga mazingira kwa sifa hizo na suluhisho za pembeni huacha kuwa ngano.
Jedwali la ramani huamua kila kitu
Ubadilishaji wa anwani za mtandao huweka jedwali ambalo anwani na lango la ndani hurekodiwa dhidi ya anwani na lango la umma. Majibu yanayolingana na rekodi hubadilishwa kurudi, na pakiti inayofika kutoka nje bila rekodi inayolingana haina mwisho wowote. Tabia hiyo moja inaeleza kwa nini msikilizaji nyuma ya kipanga njia hafikiki kutoka mtandao. Pia inaeleza kwa nini pakiti ya kwanza katika kila mwelekeo lazima itokee ndani.
Tazama jedwali kutoka upande wa kipanga njia na suluhisho za pembeni zinakuwa wazi: ama kitu kinaunda rekodi ya kudumu, au kinaunda ya muda na kuihifadhi mbichi, au trafiki haipiti kamwe njia hiyo. Sehemu iliyobaki ya makala ni hizo kesi tatu kwa mpangilio. Hakuna chochote hapa kinachotegemea kipengele cha muuzaji zaidi ya kile jedwali linarekodi.
Huduma ya kukutana inaweza na haiwezi kufanya nini
Hole punching ya UDP hutumia rekodi ya kutoka kama ufunguzi wa muda badala ya kushinda kichujio. Pande zote mbili zinawasiliana na huduma ya kukutana, ambayo hujifunza kila mwisho wa umma na kurudisha mwisho wa upande mwingine. Kisha wote wawili wanatuma kuelekea mmoja na mwingine, na kila pakiti inayotoka huunda au kuhuisha rekodi inayoruhusu jibu kuingia. Mpangilio ndio unaoifanya ifanye kazi, na mpangilio ndio pia unaoifanya iwe dhaifu: mwenza anayetuma kabla upande mwingine haujaunda rekodi yake hutupwa tu, wakati jaribio lingine baadaye linafanikiwa. Huduma yenyewe haibeba trafiki ya VPN, kwa hiyo nguvu yake pekee ni muda inaoratibu.
Tabia ya ramani huamua mengine, na RFC 4787 inataja maumbo matatu: huru kwa mwisho, inategemea anwani, na inategemea anwani na lango. Katika la mwisho, lango ambalo mwenza lazima alenge hubadilika kwa kila mwisho wa safari, kwa hiyo utabiri hauna kuaminika tena. Hapo ndipo mbinu hii inapofikia ukuta wake, kwa sababu NAT ya kiwango cha mtoa huduma na firewall kali ya shirika zote huondoa utabirika unaohitajika na mpango huo, na hakuna kiasi cha majaribio kinachoirejesha.
Keepalive, kuwasha upya na mwisho unaosogea
Njia iliyotobolewa ni mtiririko na si msikilizaji, kwa hiyo kila kitu kinachoendesha juu yake lazima kistahimili mabadiliko. Ni lazima kiweke ramani hai kwa trafiki ya mara kwa mara, kigundue mwisho wa umma unaposogea, na kijenge upya baada ya kipanga njia kuwashwa upya au anwani kugawiwa upya. Bidhaa za mesh VPN huweka mantiki hiyo katika ndege yao ya udhibiti, wakati seva ya kawaida inaiachia wewe. Keepalive husaidia tu maadamu ramani hiyo hiyo inaendelea, na hutumia betri kwa mteja wa simu, ndiyo sababu muda mkali si bure.
Kompyuta ya mkononi inayolala saa moja kwa kawaida hurudi kwenye mwisho mwingine wa umma. Kila kitu kinachojenga upya njia lazima kiendeshe tena kutoka ndani, hali inayorudisha sharti lile lile kwa mteja.
Njia tatu karibu na uelekezaji unaokosekana
Njia ya kwanza inaomba kipanga njia kuunda rekodi yenyewe, kupitia UPnP IGD, NAT-PMP au PCP, wakati kipengele kipo na kimewashwa. Ya pili inakabidhi trafiki kwa relay yenye anwani ya umma, ambayo hufanya kazi kila wakati na kila wakati hugharimu kipimo cha data pamoja na mipaka tofauti ya uaminifu. Ya tatu inageuza mwelekeo: mwenyeji wa ndani hufungua handaki la kutoka kwa seva ya umma na kila kitu kingine husafiri ndani yake.
[Peer]
PublicKey = 6yGj3kQ2wVb8sTn1pLx4dRc7hZa9mKf2uYe5oNq0iXw=
Endpoint = relay.corp.internal:51820
PersistentKeepalive = 25
AllowedIPs = 10.44.0.0/24
Mwisho wa relay huufanya ubadilishaji huo uonekane katika usanidi wa mteja, ambapo mwisho ni relay na si anwani ya mwenza mwenyewe. Keepalive ya kudumu huiweka ramani joto, na viambishi vilivyoruhusiwa huamua kile mteja anaweza kutuma kupitia humo. Handaki la kinyume kutoka kwa mwenyeji wa ndani ni wazo lile lile na mmiliki tofauti, na halihitaji mabadiliko yoyote ya NAT. Kila moja ya tatu huondoa sharti la kuingia bila kushinda firewall inayozuia trafiki isiyoombwa kwa muundo, kwa sababu trafiki bado huanza ndani.
Oanisha suluhisho la pembeni na mmiliki wa kipanga njia
Iwapo unasimamia kipanga njia, uelekezaji tuli wa UDP ni rahisi kukaguliwa kuliko mpango wowote wa kutoboa na hushindwa kwa namna unazoziona. Ikiwa sivyo, gundua kama muuzaji hutoa relay au ndege ya udhibiti inayohudumiwa, na kama sera ingeruhusu matumizi yake. Ikiwa hakuna chochote kinachopatikana, chaguo zilizobaki ni handaki la kinyume au kukubali kwamba mwisho haufikiki kutoka nje. Kurekodi ulichotumia ni muhimu zaidi kuliko inavyosikika, kwa sababu chaguo hutofautiana kwa nani anaweza kuchunguza trafiki na kile kinachotokea mtu wa tatu anapobadilisha kitu.
Angalia kama njia uliyoishia ilikuwa ya moja kwa moja au kupitia relay, kwa sababu ukweli huo mmoja hutabiri ucheleweshaji na tabia ya kushindwa. RFC 4787 inabaki kuwa rejea ya tabia ya ramani chini ya haya yote, na kusoma sehemu yake ya ramani ni haraka kuliko kujaribu suluhisho tatu kwa mfululizo. Jedwali halijali chaguo ulilochagua; linarekodi tu kile pakiti inayofuata inaruhusiwa kufanya.