Li timmarka t-traffiku minn cgroup waħda huwa l-parti faċli. Tliet deċiżjonijiet separati jridu jaqblu qabel ma applikazzjoni waħda toħroġ mill-interface fiżika waqt li kollox ieħor jibqa' fit-tunnel: liema sokit jappartjeni għall-eċċezzjoni, liema tfittxija ta' routing tikkawża l-marka, u liema indirizz tas-sors il-pakkett iġorr meta joħroġ. Ħafna tentattivi falluti jagħmlu l-ewwel waħda tajba, nofs it-tieni, u qatt ma jħarsu lejn it-tielet.

Tliet deċiżjonijiet, mhux waħda

Il-klassifikazzjoni twieġeb min hu eżentat. Ir-routing iwieġeb fejn il-pakkett immarkat imur minflok. L-għażla tas-sors twieġeb x'se jara t-tarf il-bogħod u fejn għandha terġa' lura t-tweġiba.

Dawn ifallu b'mod indipendenti. Pakkett jista' jiġi klassifikat, jiġi rrutat mill-ġdid fuq l-interface fiżika, u xorta jġorr indirizz privat li ħadd router upstream ma jista' jirritorna, li jipproduċi timeout li jidher eżattament bħal blokk tal-firewall. Xejn fil-pass tal-klassifikazzjoni ma jwissik dwar dan. Xejn fil-pass tar-routing lanqas.

L-ordni hija importanti wkoll. Il-klassifikazzjoni sseħħ meta l-pakkett jiġi ġġenerat, ir-routing iseħħ wara dan, u t-traduzzjoni sseħħ fil-punt tal-ħruġ.

Jekk ma tistax issemmi liema mill-tliet stadji hija miksura, m'intix qed tiddenubja, qed tirranġa mill-ġdid ir-regoli u tittama.

Qabbel cgroup li se tibqa' teżisti għada

nftables jista' jittestja s-sħubija f'cgroup v2 ta' sokit, li huwa tassew utli għax isegwi l-proċess u mhux id-destinazzjoni. It-trabokk huwa l-identifikatur. Applikazzjoni desktop mibdija minn menu spiss tgħix fi scope temporanju li ismu jinbidel fil-bidunett li jmiss.

nft list ruleset
systemctl status session.slice 2>/dev/null
cat /proc/self/cgroup

Li tikkopja isem ta' scope minn sessjoni waħda u tordna l-ħardwer tiegħu jipproduċi regola li taħdem illum u tieqaf bil-moħbi taqbel għada. Minflok, poġġi l-applikazzjoni f'kuntest ta' eżekuzzjoni stabbli u maħsub, bħal scope jew unit dedikat li tikkontrolla int, u qabbel ma' dak. Ir-regola mbagħad tgħaddi minn reboots u aġġornamenti tal-pakketti. Issir ukoll xi ħaġa li kollega jista' jaħsibha mingħajr l-istorja tas-sessjoni tiegħek.

Kun preċiż ukoll dwar liema mekkaniżmu qed tuża. Il-klassifikazzjoni net_cls ta' cgroup v1 u t-tqabbil tas-sokits ta' cgroup v2 huma ħwejjeġ differenti, u qasam bl-istess isem fid-dokumentazzjoni ma jagħmilhomx interkambjabbli.

Katina route hija li tikkawża t-tieni tfittxija

Għat-traffiku ġġenerat lokalment, it-tip ta' katina jiddeċiedi jekk jiġrix xi ħaġa wara li tiġi stabbilita l-marka. Katina output tat-tip filter tista' timmarka pakkett u l-kernel ikompli juża r-rotta li diġà għażel. Katina tat-tip route hija l-mekkaniżmu li jitlob tfittxija ġdida.

table inet bypass {
  chain mark {
    type route hook output priority mangle; policy accept;
    socket cgroupv2 level 2 "app.slice" meta mark set 0x1 comment "app bypass"
  }
}
ip rule add fwmark 0x1 lookup 200
ip route add default via 203.0.113.1 dev wlan0 table 200

Il-marka mbagħad teħtieġ regola ta' politika li tibgħatha fi tabella, u dik it-tabella trid tkun kompleta: rotta awtomatika, destinazzjonijiet lokali li l-applikazzjoni għadha teħtieġ, u gateway upstream li tassew iwieġeb.

Agħżel il-valur tal-marka b'mod maħsub. WireGuard juża l-fwmark tiegħu għat-traffiku tat-trasport ta' barra, u li tinżel fuq l-istess numru b'aċċident jista' jfixkel l-eċċezzjoni tar-routing tat-tunnel innifsu b'modi li huma ta' wġigħ biex jiġu dijanjostikati.

L-indirizz tas-sors ma jsegwix ir-rotta

Sokit li diġà għażel indirizz tas-sors għall-passaġġ tat-tunnel iżomm dak l-indirizz wara r-routing mill-ġdid. Xejn fil-bidla tar-rotta ma jerġa' jiktbu, u għalhekk il-pakkett joħroġ mill-interface fiżika b'sors privat li n-netwerk upstream ma jistax jirritorna.

Is-sintomu viżibbli huwa applikazzjoni li tidher li tibgħat data u qatt ma tirċievi tweġiba, u log tal-firewall li ma juri xejn għax il-pakkett qatt ma rritorna.

Il-korrezzjoni dejqa hija regola ta' traduzzjoni tas-sors limitata għall-marka ta' dik l-applikazzjoni u l-interface tal-ħruġ reali tagħha, integrata man-NAT li diġà jeżisti minflok ma tissostitwih:

table inet bypass {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    meta mark 0x1 oifname "wlan0" masquerade
  }
}

Ittraduċi l-eċċezzjoni u xejn aktar. Regola masquerade ġenerali tissewwi s-sintomu u teqred il-ħila tiegħek li tgħid liema traffiku ħa liema passaġġ. Qabbel mal-marka, mal-interface tal-ħruġ reali u, jekk tista', mal-indirizz tal-applikazzjoni stess. Regoli wesgħin huma faċli jinkitbu u kważi impossibbli jiġu awditjati wara.

X'għadu jaħrab mill-eċċezzjoni

Is-soluzzjoni tal-ismijiet tista' tiġi minn proċess resolver separat f'cgroup oħra, allura li tklassifika s-sokit tal-browser ma jklassifikax it-tfittxijiet tiegħu. Jekk il-mistoqsijiet tar-resolver jibqgħu fit-tunnel waqt li l-konnessjoni toħroġ barra minnu, tweġibiet split-horizon jistgħu ma jaqblux mal-passaġġ. Dak in-nuqqas ta' qbil jipproduċi fallimenti li jidhru bħal bugs tad-DNS u mhumiex.

Proċessi tfal jirtu l-cgroup fil-biċċa l-kbira tas-setups, imma helper li jċaqlaq lilu nnifsu fis-scope tiegħu ma jirtx. Iċċekkja minflok tassumi, speċjalment għal kull ħaġa li terġa' teżegwixxi lilha nnifisha.

Fl-aħħar, iddeċiedi x'għandu jiġri meta t-tunnel ikun nieżel. Eċċezzjoni li bil-moħbi ssir bypass sħiħ hija pożizzjoni tas-sigurtà differenti minn waħda li taqta' l-quddiem, u waħda biss minnhom hija dik li int ridt.

Artikli relatati