nftables oznake i VPN rutiranje: koje pravilo zapravo pobjeđuje
Oznaka postavljena u firewallu ipak može promašiti pravilo rutiranja. Provjerite masku pravila, tip objekta i ostale pisce prije nego dodate četvrti.
Oznaka postavljena u nftablesu treba poslati jednu klasu prometa kroz tunel, a promet i dalje izlazi kroz fizički interfejs. Skup pravila izgleda ispravno izolovano. Obično se dogodilo to da je nešto drugo upisalo istu oznaku, ili da pravilo rutiranja odgovara maski koju nova vrijednost više ne zadovoljava.
Provjera 1: pročitajte pravilo s kojim se jezgro poklapa
Počnite od pravila politike, a ne od firewalla. Jezgro pregleda pravila po redu prioriteta i prvo poklapanje odlučuje tabelu. Pročitajte vrijednost fwmark i masku iz samog pravila, zatim potvrdite da se paket s oznakom koju ste postavili zaista poklapa s njim. Pravilo koje očekuje punu 32-bitnu vrijednost neće se poklopiti s paketom koji nosi samo jedan bit.
Zatim potvrdite koju tabelu to pravilo bira i šta tabela sadrži. Pravilo koje pokazuje na praznu tabelu proizvodi neuspješnu pretragu, što na mnogim sistemima znači da paket propada do sljedećeg pravila i izlazi kroz fizički interfejs.
Dvije komande to rješavaju: lista pravila i pretraga rute za odredište u toj tabeli.
Provjera 2: oznaka paketa ili oznaka konekcije
nftables može postaviti oznaku na paket i oznaku na unos praćenja konekcija, a to su različiti objekti. Oznaka paketa živi za prolaz obrade paketa, dok oznaka konekcije ostaje za tok i mora se namjerno kopirati. Postaviti jednu i očekivati drugu čest je polovičan popravak.
Ako pravilo rutiranja zavisi od oznake paketa, vraćanje oznake konekcije kasnije na putu ne čini ništa za tu odluku, jer je odluka već donesena.
Odredite koji objekat posjeduje signal rutiranja, zatim ga postavite na mjestu gdje se donosi odluka o rutiranju.
Provjera 3: ko još upisuje tu oznaku
Vlastiti alati WireGuarda označavaju njegove UDP pakete kako se šifrovani transport ne bi rutirao natrag u tunel kojem pripada. Ako vaš skup pravila dodjeljuje nepovezanu vrijednost istom polju, to izuzimanje nestaje i vanjski promet tunela pokušava ući u sebe. Simptom je tunel koji se uspostavi i zatim prestane propuštati promet.
Oznake koriste i drugi firewall alati, kontejnersko umrežavanje i rutiranje po politici u druge svrhe, pa je upisivanje cijelog polja od strane dva podsistema sukob čak i kada je svaki pojedinačno ispravan.
Popišite pisce prije nego dodate još jednog.
Provjera 4: maska odlučuje šta zadržavate
Oznaka je 32-bitno polje, a maske su način na koji ga više vlasnika dijeli. Postavljanje vrijednosti s maskom čuva bitove koje ne posjedujete; postavljanje cijelog polja uništava tuđe. Pročitajte masku u svakom pravilu koje dira polje, uključujući ona koja niste napisali.
Dokumentujte raspodjelu bitova uz skup pravila.
Inače će sljedeća osoba ponovno upotrijebiti vrijednost koja već ima vlasnika, a sukob ovdje izgleda kao greška u rutiranju dok je zapravo greška u adresiranju. nftables dokumentacija o metapodacima paketa opisuje same operacije s oznakama.
Provjera 5: provjerite stvarnim tokom, a ne pretragom
Obična pretraga rute ne nosi oznaku, pa može pokazati drugačiji put od stvarnog paketa. Generirajte promet koji vas zanima i posmatrajte brojače, unos praćenja konekcija i interfejs kroz koji zaista izlazi. Testirajte i uključenu i isključenu klasu, jer preširoka oznaka kvari izuzimanje dok izgleda uspješno. Ako uključena klasa radi, a isključena klasa također ulazi u tunel, oznaka je preširoka, a ne preuska.
Izbjegavajte brisanje stanja konekcija da prisilite osvježavanje tokom žive sesije, jer novi i postojeći tokovi mogu legitimno ići različitim putevima.
Zabilježite oznaku, masku i tabelu na jednom mjestu, pa sljedeća izmjena postaje pregledna.