Unaongeza kanuni ya trafiki ya VPN katika mnyororo wa FORWARD, unaendesha ombi kutoka kwenye mashine hiyo hiyo ya Linux, na kihesabu kinabaki sifuri. Kanuni hiyo ina uwezekano mkubwa kuwa sahihi. Pakiti haikuwahi kufuata njia hiyo, kwa sababu ombi linalozalishwa kwenye mashine yenyewe halipitishwi nayo. Kufuatilia maisha ya pakiti kutoka soketi hadi waya kunaeleza kwa nini, na kanuni inapaswa kuwa wapi badala yake.

Gundua pakiti ilizaliwa wapi

Mpangilio wa hook wa Netfilter hutenganisha hali tatu, na ni moja tu kati yao inahusisha FORWARD:

OriginPathHook that sees it
Local processOUTPUT then POSTROUTINGOUTPUT, POSTROUTING
Addressed to a local servicePREROUTING then INPUTPREROUTING, INPUT
Received for another hostPREROUTING, FORWARD, POSTROUTINGFORWARD

Programu ya ndani huanza katika njia ya OUTPUT, kwa sababu kernel tayari imebaini kuwa pakiti hutokea hapa na kamwe si mgombea wa kupitishwa. Kuunda handaki hakubadilishi uainishaji huo; handaki ni kifaa ambacho pakiti inaweza kutoka, sio hatua inayogeuza pato la ndani kuwa usafiri.

Pakiti mbili, hadithi moja

Mara handaki linapoinuka, pakiti ya ndani ya programu na pakiti ya nje iliyosimbwa ni vitu tofauti. Pakiti ya ndani hubeba lengo na mzigo uliochaguliwa na programu. Pakiti ya nje hubeba maandishi yaliyosimbwa hadi anwani na bandari ya mwenzake, na ndiyo inayovuka kiolesura cha kimwili kwa kweli.

Sera yako inahusu mmoja wao, na kuchagua ule mbaya ni sababu ya kawaida ya kanuni kuonekana haifanyi chochote. Kanuni inayolingana na anwani ya nje ya mwenzake huona kila pakiti ya handaki sawa, chochote programu ya ndani inafanya. Kanuni inayolingana na lengo la ndani huona trafiki unaojali, na itawaka tu iwapo pakiti hiyo itafikia hook uliyoweka kanuni.

Namespace huhamisha mpaka

Kontena hufanya hili kuwa gumu bila kubadilisha kanuni. Ombi la programu ni pato la ndani ndani ya namespace ya mtandao ya kontena. Mwenyeji hupokea trafiki hiyo kwenye kiolesura cha Ethernet pepe na anaweza kuipitisha, hivyo kanuni ya FORWARD kwenye mwenyeji inaweza kuwa na maana ingawa mchakato uliozalisha ombi haukuwahi kugusa mnyororo wa OUTPUT wa mwenyeji.

Kabla ya kuchagua hook, baini seti ya kanuni na handaki zinaishi wapi kwa kweli. Handaki ndani ya kontena, handaki kwenye mwenyeji na kontena likielekezwa kupitia hilo, na handaki katika namespace tofauti ni topolojia tatu tofauti na maeneo matatu tofauti ya kanuni. Soma kanuni ndani ya namespace inayomiliki kifaa, sio ile ya chaguo-msingi pekee.

Uliza kama unahitaji alama hata kidogo

Ikiwa lengo ni kutuma kiambishi kimoja cha lengo kupitia handaki, njia ya kiambishi hicho inaweza kutosha. Kwanza angalia njia zinazofanya kazi, ikiwa ni pamoja na chochote alichosukuma seva: njia ya chaguo-msingi iliyoelekezwa upya hutuma trafiki nyingi zaidi kupitia VPN kuliko sera nyembamba uliyokuwa nayo akilini, na kiwango chochote cha alama hakitafanya matokeo yalingane na nia.

Uainishaji unahitajika wakati uamuzi unategemea kitu ambacho njia haiwezi kueleza, kama chanzo, mtumiaji au mchakato. Kwa trafiki inayopokelewa, alama katika PREROUTING hufanya kazi. Kwa trafiki ya ndani, alama lazima itokee katika hatua ya pato inayoweza kuanzisha utafutaji mpya wa njia baada ya alama kuwekwa. Kwa nftables hiyo ni mnyororo wa aina ya route kwenye hook ya pato; mnyororo wa kawaida wa kichujio cha pato utaweka thamani na kuacha njia bila kubadilika.

Kwa iptables, sawa nayo huishi katika mpangilio wa mangle OUTPUT, na sharti lile lile linatumika: uamuzi wa uelekezaji lazima uangaliwe upya baada ya alama kuwepo. Kisha kanuni ya sera lazima itumie alama na ielekeze kwenye jedwali lenye njia inayoweza kutumika. Kuweka alama ya conntrack ni operesheni ya tatu, tofauti; huhifadhi thamani kwenye mtiririko na yenyewe haiweki thamani hiyo kwenye pakiti ya sasa ili uelekezaji uisome.

Thibitisha utafutaji na kihesabu pamoja

nft list ruleset
ip route get 198.51.100.25
ip route get 198.51.100.25 mark 0x1

Anwani na alama ni mifano, na maswali mawili ya njia hujibu maswali tofauti. La pili huuliza kernel ingefanya nini ikiwa pakiti ingebeba alama hiyo; halionyeshi kuwa seti yako ya kanuni inatoa moja. Lichukulie kama jaribio la dhana, sio ushahidi kuwa sera inafanya kazi.

Kisha endesha ombi lisilo na madhara na uangalie mambo mawili kwa wakati mmoja: kihesabu kwenye hook uliyochagua, na njia ya kutoka ambayo pakiti ilichukua kwa kweli. Ikiwa kihesabu kinasogea na pakiti inatoka mahali pengine, alama au jedwali si sahihi. Ikiwa hakuna kinachosogea, pakiti haifiki hook hiyo kabisa, na swali linalofuata ni namespace au njia.

Mwishowe, weka kikomo cha jaribio kwa kile utaratibu unachoweza kueleza. Njia moja kwa anwani moja haibadiliki kuwa sera ya kudumu kwa huduma ambayo anwani zake zinazunguka. Amua kwanza wigo wa pakiti, kisha angalia kama muundo wa uelekezaji na alama unaweza kushikilia wigo huo baada ya kuunganisha upya.

Makala zinazohusiana