Kwa nini nftables haiwezi kuona trafiki ya OpenVPN kati ya wateja
Trafiki kati ya rika huwasilishwa ndani ya mchakato wa VPN, kwa hiyo vihesabu vya upelekaji havijasogea kamwe. Kuihesabu kunamaanisha kuchagua kati ya njia ya kerneli na njia ya mchakato.
Wateja wawili kwenye seva moja hubadilishana faili, uhamishaji unafanikiwa, na kila kanuni ya upelekaji unayoelekeza kwenye handaki huripoti pakiti sifuri. Kanuni hazijavunjika na mnyororo hauko mahali pabaya. Upelekaji kati ya rika ukiwa umewashwa, pakiti huwasilishwa ndani ya mchakato wa seva na mrundikano wa mwenyeji kamwe haufanyiki kama kipanga-njia, kwa hiyo ukuta wa moto wa kerneli hauna cha kuhesabu. Kuelewa mgawanyiko huo huamua ikiwa unabakiza njia ya mkato au unajenga upya njia kupitia kerneli.
Fuatilia pakiti moja kupitia seva
Katika handaki iliyopangwa njia, daemon hukabidhi pakiti iliyofumbuliwa ya kila mteja kwa kifaa cha handaki. Kutoka hapo mwenyeji huipanga njia, ndoano ya upelekaji hufanya kazi, na kanuni inayolingana na kifaa cha handaki inaweza kuhesabu au kutupa trafiki. Hiyo ndiyo njia ambayo mifano mingi ya ukuta wa moto huchukulia.
| Forwarding path | Who decides | What the host firewall sees |
|---|---|---|
| Kernel routing between clients | Host routing table and forward rules | Every inner packet, with interface names |
| Peer forwarding inside the server process | The VPN daemon's own peer table | Only the outer encrypted transport |
Njia ya mkato huondoa mwenyeji katikati. Pakiti iliyofumbuliwa ya kipindi kimoja hukabidhiwa kipindi kingine ndani ya daemon, na pakiti ya ndani kamwe haitolewi kwenye kifaa cha handaki na mwenyeji haipangi njia. Trafiki iliyofungwa bado huvuka kiolesura cha kimwili, kwa hiyo nakala ya nje huonekana na shughuli wakati kanuni za ndani ziko kimya. Nakala iliyochukuliwa kwenye kifaa cha handaki haionyeshi kitu chochote, jambo linalowashangaza wote wanaotarajia kuona uhamishaji hapo. Utengano huo ndiyo njia ya haraka zaidi ya kutambua njia ya mkato kutoka nje ya daemon.
Jaribio la kihesabu linaloamua njia ipi ilifanyika
Ambatisha kihesabu kwenye kanuni inayopaswa kutumika, endesha uhamishaji kati ya wateja wawili ambao kanuni hiyo inapaswa kuzuia, kisha soma kihesabu.
sudo nft list ruleset
sudo nft add rule inet filter forward iifname "tun0" oifname "tun0" counter accept
sudo nft list chain inet filter forward
Ikiwa uhamishaji unafanikiwa na kihesabu kinabaki sifuri, kerneli haikushughulikia pakiti hizo kamwe, na hakuna uhariri wa kanuni utakaobadilisha hilo. Rudia jaribio lilelile dhidi ya huduma kwenye seva yenyewe, kwa sababu mtiririko huo hupita kwenye mrundikano wa mwenyeji na kihesabu chake husogea. Ulinganisho wa matokeo mawili ndio unaotoa jibu.
Maelezo mawili huzuia usomaji wa uongo. Jina la kiolesura lililoandikwa kwenye lebo ya mnyororo huchuja chochote chenyewe, kwa sababu ulinganisho hufanyika kwenye sehemu za kiolesura ndani ya kanuni. Na muundo wa daraja wa tabaka 2 hujiendesha tofauti tena: hapo wateja hushiriki kikoa kimoja cha matangazo, kwa hiyo ugunduzi wa rika unatarajiwa na si hitilafu ya upangaji njia.
Swichi si orodha ya ufikiaji
Hii ndiyo sehemu inayogharimu mchana. Upelekaji kati ya rika ni mpangilio mmoja wa kuwasha au kuzima, na ukiwa umewashwa daemon ndiyo sehemu pekee ya upelekaji. Ukuta wa moto wa mwenyeji hauwezi kueleza nani anaweza kumfikia nani, na faili kwa kila mteja hazibadilishi swichi kuwa matriki ya sera.
Ikiwa unahitaji kanuni kwa kila rika, chaguo ni kati ya kuachana na njia ya mkato na kuachana na ukuta wa moto wa mwenyeji kama udhibiti. Kuuzima hurejesha upelekaji wa kerneli, jambo ambalo linahitaji upelekaji wa IP kwenye seva na kanuni wazi kwa mtiririko unaotaka. Kuubakiza umewashwa kunamaanisha sera inaishi katika usanidi wa daemon, ambayo kwa vitendo ni rika wote au hakuna.
Michakato ya seva tofauti yenye madimbwi yao ya anwani na bandari ndiyo njia ya kati inayowezekana. Kila mchakato hubeba uamuzi mmoja wa ufikiaji, kwa hiyo makundi mawili yanaweza kuwa na kanuni tofauti bila matriki ya sera. Mwenyeji anaweza kupanga njia kati ya madimbwi inapokusudiwa, na hapo ukuta wa moto huona mtiririko huo kwa sababu huvuka mwenyeji. Gharama ni bandari za ziada, vyeti vya ziada na wasifu kwa kila kundi.
Kuchagua sehemu ya upelekaji
Chagua upelekaji wa kerneli wakati ukuta wa moto ni injini ya sera, wakati unahitaji ukaguzi kwa kila mtiririko, au wakati hesabu ni muhimu. Gharama ni upitishaji kupitia mrundikano wa mwenyeji na kanuni zaidi za kutunza. Faida ni kwamba kila chombo kilichopo, kutoka vihesabu hadi visafirishaji vya mtiririko, hufafanua trafiki tena. Kwenye seva ndogo gharama hiyo haionekani; kwenye relay yenye shughuli haionekani hivyo.
Chagua upelekaji ndani ya mchakato wakati trafiki kati ya rika ama inaruhusiwa yote au imekatazwa yote na seva imepimwa kwa hilo. Gharama ni kwamba vihesabu, nidhamu za foleni na ufuatiliaji wa miunganisho havifafanui tena mtiririko wa ndani; hilo linakubalika tu ikiwa hakuna mtu atakayetegemea baadaye.
Chochote utakachochagua, kiandike kando ya kanuni za ukuta wa moto. Seti ya kanuni inayoonekana kuruhusu trafiki kati ya rika wakati daemon huamua hata hivyo hupotosha mtu anayefuata atakayetatua uhamishaji ulioshindikana. Yeyote anayesoma kanuni pekee atadhani kerneli ndiyo lango.
Nini cha kuhakiki kabla ya kubadilisha kanuni
Soma usanidi ambao seva iliupakia kweli, si faili unalokumbuka kuihariri, na thibitisha ikiwa chaguo la rika lipo. Ikiwa ulilibadilisha, hakikisha huduma ilipakia upya na si tu kuandika upya faili kwenye diski.
Kisha rudia jaribio kwa mtiririko kutoka mteja hadi seva ili kuthibitisha kwamba kanuni inalingana hata kidogo, na hakiki njia zilizosukumwa, kwa sababu njia inayokosekana kutoka upande wa mteja inaonekana sawa kabisa na kizuizi cha ukuta wa moto. Badilisha mpangilio wa kanuni tu baada ya kujua sehemu ipi ya upelekaji inamiliki uamuzi.