Kwa nini subneti iliyo nyuma ya mteja wa OpenVPN haifikiki?
OpenVPN haiwezi kubashiri mteja gani anamiliki LAN ya mbali. Ingizo la iroute katika faili ya mteja, njia ya kurudi na uhawilishaji hufanya subneti hiyo ifikike.
Ping kwa anwani ya handaki ya seva zinafanikiwa, jedwali la njia la mteja mwenyewe linaonekana sawa, na LAN iliyo nyuma ya mteja huyo bado haifikiki. Jedwali la uelekezaji la mteja linaonekana sahihi, seva ina njia inayoelekea handaki, na pakiti bado zinapotea. Hii ni dalili ya kawaida ya handaki la layer-3 ambalo halijui kwamba mmoja wa wateja wake pia ni lango.
Kiolesura cha tun hakina hatua inayofuata kwa kila mteja. Kernel inaona kiolesura kimoja chenye wenzake wengi, kwa hiyo uamuzi wa mteja gani atakayepokea pakiti kwa LAN ya mbali unapaswa kufanywa ndani ya mchakato wa OpenVPN. Uamuzi huo unasanidiwa kwa iroute, na bila hiyo pakiti haina mahali pa kwenda.
Seva inaelekeza kwa mteja, si kwa kiolesura
Seva inapohitaji kutuma pakiti kwa anwani ya handaki ya mteja, jibu ni wazi: anwani ni ya kikao cha mteja huyo. Lakini lengo linapokuwa subneti nzima iliyo nyuma ya mteja huyo, anwani si ya yeyote ambaye seva inamjua, na njia ya kernel kuelekea handaki inasema tu "kupitia kiolesura hiki", bila kusema ni mwenza gani.
OpenVPN hutatua hili kwa jedwali la uelekezaji la ndani linalounganisha kiambishi awali cha lengo na mteja maalum. Jedwali hilo hujengwa kutoka maingizo ya iroute, ndiyo sababu njia ya kawaida kwenye mwenyeji wa seva haitoshi. Njia ya kernel huleta pakiti kwenye kiolesura cha handaki; uunganishaji wa ndani huamua kikao gani kitaipokea. Ndiyo sababu pia ukarabati hauonekani kamwe kwenye matokeo ya njia za kernel.
Ikiwa uunganishaji haupo, pakiti hufika kwenye seva, hulingana na njia ya handaki na hutupwa kwa sababu hakuna mteja anayedai lengo. Hakuna kinachorekodi kosa safi, ndiyo sababu hitilafu inaonekana kama shimo jeusi tulivu badala ya mzunguko wa uelekezaji.
Kuandika ingizo la iroute linalomtaja mteja
iroute huishi katika faili ya usanidi maalum kwa mteja, si katika usanidi mkuu wa seva. Elekeza seva kwenye saraka kwa chaguo la client-config-dir, kisha tengeneza faili ambalo jina lake ni jina la kawaida la cheti cha mteja na uweke kiambishi awali ndani yake.
Kwa tawi ambalo LAN yake ni 10.20.0.0/24 na jina la kawaida la cheti ni branch-router, faili kwenye njia hiyo lina mstari kama iroute 10.20.0.0 255.255.255.0. Usanidi mkuu unahitaji chaguo la saraka tu; kiambishi awali huishi kwa mteja.
Jina la kawaida ni sehemu dhaifu. Cheti kilichotolewa na subject tofauti, au usambazaji unaothibitisha watumiaji kwa jina la mtumiaji wakati faili limepewa jina la cheti, huzalisha faili ambalo halisomwi kamwe. Angalia jina ambalo seva huripoti kwa hakika kwa kikao, na fikiria chaguo linalofanya mteja asiyelingana ashindwe badala ya kuunganishwa kimya bila njia zake. Kubadilisha jina la faili ili lilingane na cheti ni marekebisho ya dakika tano yanayozuia jioni ndefu sana.
Mteja mmoja anaweza kumiliki viambishi awali kadhaa. Ongeza mstari mmoja wa iroute kwa kila mtandao, na uweke orodha kando ya mipangilio mingine ya mteja huyo ili uunganishaji ubaki ukikaguliwa.
Kujenga njia ya kurudi katika pande zote mbili
Kupeleka pakiti kwenye LAN ya mbali ni nusu ya kazi. Mteja lazima pia atume trafiki ya LAN hiyo ndani ya handaki, jambo ambalo kwa kawaida hufanywa kwa kusukuma njia kwa mteja: mstari kama push "route 10.8.0.0 255.255.255.0" humwambia kila mteja jinsi ya kufikia mtandao upande wa seva. Kwa tawi, njia inayolingana inaelekeza kwenye handaki kwa kila kitu inachopaswa kufikia upande wa seva.
Mwelekeo wa kurudi unahitaji mmiliki upande wa mbali. Huko mtu lazima ajue njia ya kurudi: njia tuli kwenye kipanga njia cha LAN inayoelekeza bwawa la VPN kwa seva, au tafsiri ya anwani kwenye seva kabla trafiki haijaingia kwenye LAN. Njia tuli huhifadhi anwani asili zikionekana kwenye kumbukumbu na kanuni za ufikiaji lakini inahitaji ushirikiano wa mmiliki wa LAN; tafsiri inajitegemea lakini huficha ni nani aliyeunganishwa kwa hakika.
Uhawilishaji lazima uwe umewezeshwa kwenye mwenyeji wa seva. Bila hiyo kernel hukubali pakiti kutoka handaki na hukataa kuipitisha kwenye kiolesura cha LAN, jambo ambalo kwa mtazamo wa mteja linaonekana sawa kabisa na iroute inayokosekana.
Kuthibitisha ufikivu kwa vichunguzi sahihi
Jaribu kwa tabaka badala ya kupiga ping upande wa mbali na kubahatisha. Kutoka kwa seva, angalia kwamba uunganishaji wa ndani wa kiambishi awali upo na kwamba njia ya kernel inaelekeza kwenye handaki. Kutoka kwa mteja, thibitisha kwamba njia iliyosukumwa imesakinishwa na kwamba njia yake ya kawaida kwa anwani ya LAN ni handaki.
Kisha tazama pakiti. Ukamataji kwenye kiolesura cha handaki unaonyesha kama seva inasambaza kuelekea mteja, na ukamataji kwenye kiolesura cha LAN unaonyesha kama inahawilisha. Ikiwa wa kwanza unaonyesha pakiti na wa pili hakuna, tatizo ni uhawilishaji au kichujio; ikiwa hakuna kinachoonyesha chochote, utafutaji ulishindwa mapema.
Seva mbili zilizounganishwa kwa handaki hurudia kanuni hiyo hiyo pande zote: kila moja inahitaji iroute kwa bwawa la nyingine, na kila moja inahitaji njia na uhawilishaji unaofanya njia iwe na usawa. Uelekezaji na sera ni masuala tofauti hapa. Uelekezaji huamua pakiti inaweza kwenda wapi, wakati kanuni ya FORWARD huamua ikiwa inaruhusiwa, kwa hiyo mteja mwenye mistari miwili ya iroute anaweza kufikia viambishi awali vyote viwili isipokuwa kichujio kinasema vinginevyo.