Ombi huwa daima namna ya sentensi ile ile: weka VPN kwa uvinjari, lakini acha SSH au kazi ya nakala rudufu itumie muunganisho wa kawaida. Ushauri unaozunguka kuhusu hili, kusukuma lango mbele kwa sheria za NAT za iptables, haufanyi hivyo. Sheria ya NAT huandika upya anwani na lango ndani ya mtiririko; kamwe haichagui kiolesura ambacho pakiti hutoka. Uamuzi huo ni wa utafutaji wa njia, na utafutaji wa njia unahitaji msaada ili uone lango.

Kwa nini njia ya kawaida haiwezi kulingana na lango

Linux huchagua njia kwa kutafuta anwani ya lengwa katika jedwali, baada ya majedwali yanayogombea kuchujwa kwa sheria za sera. Sheria hizo zinaweza kulingana na alama ya firewall, anwani ya chanzo, kiolesura kinachoingia au UID. Ingizo la njia lenyewe halina uwanja wa lango, kwa sababu njia huchaguliwa kabla kichwa cha usafirishaji hakijawa muhimu.

iproute2 na kerneli za sasa hupanua kichagua sheria: ipproto, sport na dport hukubaliwa, kwa hivyo ip rule add ipproto tcp dport 22 table 100 hueleza nia katika mstari mmoja. Endesha ip rule add help kwenye mwenyeji halisi ili uone kama ujenzi wako unaorodhesha dport. Ikiwa unaorodhesha, umemaliza kwa amri moja; ikiwa hapana, njia ya alama hapa chini ni sawa nayo.

Vyovyote vile sheria ni kiashiria tu. Jedwali 100 bado linahitaji njia, na hicho ndicho kipande ambacho watu husahau.

Vipande vitatu, au kimoja

Umbo la kisasa ni sheria moja iliyo juu pamoja na njia katika jedwali mbadala. Umbo la kitamaduni huongeza netfilter katikati: weka alama kwenye pakiti, kisha linganisha alama katika sheria. Zote mbili huishia kwenye utafutaji mmoja; zinatofautiana mahali lango linaposomwa.

Mbinu ya alama ipo kwa sababu netfilter huona kichwa cha usafirishaji na msimbo wa uelekezaji kihistoria haukuona. Huo ndio utaratibu wote, na unaeleza kwa nini njia mbadala ni vipande vitatu vinavyoshirikiana badala ya amri moja ya werevu.

Vipande vitatu kwa mpangilio

Kwanza, weka alama kwenye mitiririko unayotaka kuipotosha, katika mnyororo unaoendeshwa mapema vya kutosha ili alama iwepo kabla ya uamuzi wa njia:

nft add table inet vpnexempt
nft 'add chain inet vpnexempt out { type route hook output priority mangle; }'
nft add rule inet vpnexempt out tcp dport 22 meta mark set 0x1

Pili, tuma pakiti zilizo na alama kwenye jedwali tofauti:

ip rule add fwmark 0x1/0x1 table 100

Tatu, ipe jedwali hilo njia chaguo-msingi kupitia kiungo cha kimwili. Anwani ni za mfano; weka zako:

ip route add default via 192.168.1.1 dev wlan0 table 100

Ruka hatua ya tatu na pakiti iliyo na alama haipati njia katika jedwali 100, kwa hivyo inashindwa. Dalili huonekana kana kwamba sheria ilivunja mtandao, wakati kwa kweli iliondoa njia pekee iliyobaki kwa pakiti.

Kinachoifanya iendelee kufanya kazi baada ya pakiti ya kwanza

Alama hutumika kwa pakiti zinazotoka. Jibu hufika kwenye kiolesura cha kimwili likiwa na anwani ambayo kiungo kilipanga, na jedwali kuu linaweza bado kupendelea handaki kwa lengo hilo. Mbinu mbili huweka njia ya majibu thabiti: sheria inayotegemea chanzo kwa anwani ya kiungo, na connection tracking ambayo huhifadhi uamuzi katika maisha yote ya mtiririko. Kuhifadhi alama katika conntrack na kuirejesha kwenye jibu ndiyo njia ya kawaida ya kufanya msamaha wenye hali uwe thabiti.

Uchujaji wa njia ya kurudi ndiye muuaji mwingine wa kimya. Ikiwa kerneli inathibitisha njia ya kurudi kwa uthabiti na jibu hufika kwenye kiolesura ambacho jedwali kuu halingechagua, pakiti hutupwa bila ujumbe. rp_filter thamani chaguo-msingi hutofautiana kwa usambazaji na kwa ikiwa kiolesura kinasambazwa mbele, kwa hivyo soma thamani inayotumika badala ya kudhani imezimwa.

Usiweke alama kwenye usafirishaji wa handaki lenyewe. Handaki la WireGuard au UDP OpenVPN si TCP 22, kwa hivyo kichocheo kilicho juu ni salama, lakini msamaha ulioandikwa kama kila kitu isipokuwa lengo la handaki unaweza kunasa pakiti zilizosimbwa na kuvunja handaki kwa namna inayofanana na mzunguko wa uelekezaji.

Hakiki badala ya kudhani

Uliza kerneli ni njia ipi ingechukua, kwa lengo na kwa lango, kisha endesha uhamishaji halisi:

ip route get 203.0.113.10
ip rule show
nft list ruleset

Ikiwa alama ipo lakini vihesabu kamwe havisogei, sheria hailingani. Vihesabu ni tofauti kati ya usanidi uliouandika na sera ambayo kerneli inatumia.

Wakati hiki ni chombo kisichofaa

Misamaha inayotegemea lango ni dhaifu kwa asili. Huduma huhamisha lango, HTTP/3 huja kama UDP 443, na programu moja inaweza kufungua mitiririko kadhaa ya aina tofauti. Ikiwa hitaji la kweli ni kwamba programu hii itumie kiungo cha kawaida, tabaka la uelekezaji ni mahali pasipofaa; nafasi ya majina ya mtandao au proksi kwa kila programu inafaa zaidi.

Ikiwa hitaji ni kwamba subneti hii itumie kiungo cha kawaida, ruka alama kabisa na uongeze njia maalum zaidi. Ni rahisi zaidi, inaonekana katika jedwali moja, na mtu anayefuata anaweza kuikagua bila kusoma seti ya sheria.

Andika ni ipi kati ya mahitaji matatu uliyonayo kweli kabla ya kugusa firewall. Utaratibu ulio juu ni sahihi, na usahihi uliotumika kwenye tabaka lisilofaa ni kukatika kwa muda mrefu tu.

Makala zinazohusiana