Markoj de nftables kaj VPN-enkursigo: kiu regulo vere venkas
Marko starigita en la fajroŝirmilo povas tamen maltrafi la enkursigan regulon. Kontrolu la maskon de la regulo, la objektan tipon kaj la aliajn skribantojn antaŭ ol aldoni kvaran.
Marko starigita en nftables devus sendi unu klason de trafiko tra la tunelo, kaj la trafiko daŭre eliras per la fizika interfaco. La regularo aspektas ĝuste izolite. Kutime okazis, ke io alia skribis la saman markon, aŭ ke la enkursiga regulo kongruas kun masko, kiun la nova valoro jam ne plenumas.
Kontrolo 1: legu la regulon, kiun la kerno kongruas
Komencu per la politika regulo, ne per la fajroŝirmilo. La kerno konsultas regulojn laŭ prioritata ordo kaj la unua kongruo decidas la tabelon. Legu la valoron de fwmark kaj la maskon el la regulo mem, poste konfirmu, ke paketo kun la marko, kiun vi starigis, vere kongruas kun ĝi. Regulo, kiu atendas plenan 32-bitan valoron, ne kongruos kun paketo portanta nur unu biton.
Poste konfirmu, kiun tabelon tiu regulo elektas kaj kion la tabelo enhavas. Regulo montranta al malplena tabelo produktas malsukcesan serĉon, kio sur multaj sistemoj signifas, ke la paketo falas al la sekva regulo kaj el la fizika interfaco.
Du komandoj solvas tion: la regullisto kaj la vojserĉo por la celo en tiu tabelo.
Kontrolo 2: paketa marko aŭ konekta marko
nftables povas starigi markon sur la paketon kaj markon sur la konektospuran rikordon, kaj tiuj estas malsamaj objektoj. La paketa marko vivas dum la prilabora trairo de la paketo, dum la konekta marko restas por la fluo kaj devas esti kopiita intence. Starigi unu kaj atendi la alian estas ofta duona riparo.
Se la enkursiga regulo dependas de la paketa marko, restarigi la konektan markon poste en la vojo faras nenion por tiu decido, ĉar la decido jam okazis.
Decidu, kiu objekto posedas la enkursigan signalon, poste starigu ĝin ĉe la punkto, kie la enkursiga decido estas farata.
Kontrolo 3: kiu alia skribas tiun markon
La propraj iloj de WireGuard markas siajn UDP-paketojn, por ke la ĉifrita transporto ne estu enkursigita reen en la tunelon, al kiu ĝi apartenas. Se via regularo atribuas malrilatan valoron al la sama kampo, tiu ekskludo malaperas kaj la ekstera trafiko de la tunelo provas eniri sin mem. La simptomo estas tunelo, kiu establiĝas kaj poste ĉesas pasigi trafikon.
Markojn uzas ankaŭ aliaj fajroŝirmilaj iloj, uja retumado kaj politika enkursigo por aliaj celoj, do du subsistemoj skribantaj la tutan kampon estas konflikto eĉ kiam ĉiu unuope estas ĝusta.
Listigu la skribantojn antaŭ ol aldoni ankoraŭ unu.
Kontrolo 4: la masko decidas, kion vi konservas
Marko estas 32-bita kampo, kaj maskoj estas la maniero, kiel pluraj posedantoj dividas ĝin. Starigi valoron kun masko konservas la bitojn, kiujn vi ne posedas; starigi la tutan kampon detruas tiujn de ĉiuj aliaj. Legu la maskon en ĉiu regulo, kiu tuŝas la kampon, inkluzive de tiuj, kiujn vi ne skribis.
Dokumentu la bitan disdonon apud la regularo.
Alie la sekva persono reuzos valoron, kiu jam havas posedanton, kaj konflikto ĉi tie aspektas kiel enkursiga cimo, dum ĝi estas adresa cimo. La dokumentaro de nftables pri paketaj metadatumoj priskribas la markajn operaciojn mem.
Kontrolo 5: kontrolu per reala fluo, ne per serĉo
Plena vojserĉo ne portas markon, do ĝi povas montri alian vojon ol la reala paketo. Generu la trafikon, kiu gravas al vi, kaj observu la nombrilojn, la konektospuran rikordon kaj la interfacon, kiun ĝi vere eliras. Testu kaj la inkluzivitan klason kaj la ekskluzivitan klason, ĉar marko tro vasta rompas la ekskludon dum ĝi aspektas sukcesa. Se la inkluzivita klaso funkcias kaj la ekskluzivita klaso ankaŭ eniras la tunelon, la marko estas tro vasta, ne tro mallarĝa.
Evitu malplenigi la konektan staton por devigi refreŝigon dum aktiva sesio, ĉar novaj kaj ekzistantaj fluoj povas laŭleĝe preni malsamajn vojojn.
Notu la markon, la maskon kaj la tabelon en unu loko, kaj la sekva redakto fariĝos reviziebla.