DNS-om napajan nftables set prema WireGuardu: kako funkcionira primopredaja
DNS odgovor može napajati nftables set, ali set ne rutira ništa. Pratite četiri primopredaje i tri životna vijeka koji odlučuju hoće li usmjeravanje raditi.
Imena se razrješavaju u adrese, a te adrese mogu završiti u setu vatrozida koji kasnije utječe na rutiranje, što usmjeravanje po imenu čini mogućim bez proxyja. Kvaka je u tome što četiri komponente moraju ispravno primopredati: razrješivač, set, klasifikator koji označava novi tok i peer koji ga nosi. Svaka primopredaja pada drugačije i svaka drži svoje vrijeme.
Tretirajte dizajn kao lanac, a ne kao konfiguraciju. Pitanje na svakom koraku je koja komponenta posjeduje odluku i što se zbiva kada njezin ulaz nedostaje.
Što DNS odgovor može, a što ne može
dnsmasq može kopirati adrese iz odgovora u nftables set, što je hranjenje, a ne odluka o rutiranju. Ta opcija, dokumentirana u dnsmasq priručniku, navodi obitelj, tablicu i set, a njezin vodeći 4# bira samo A zapise, pa v6 odredišta traže vlastito rješenje. Set mora već postojati jer razrješivač dodaje elemente u nešto što je stvorio vlasnik vatrozida. Ništa u tom koraku ne bira sučelje, tablicu ili peera.
Klijent također mora rabiti taj razrješivač za ime. Aplikacija s vlastitim šifriranim DNS-om ili keširani odgovor od prije postojanja politike povezuje se bez stvaranja ikakvog unosa u setu.
Set je ulaz, a ne ruta
Element u setu je uvjet podudaranja. Nešto ga mora pogledati, odlučiti da ovaj paket započinje novi tok i primijeniti politiku koja tok šalje kroz tunel. Na Linuxu to obično znači izlaznu putanju sposobnu za rute koja može postaviti oznaku, pravilo koje označene pakete šalje u namjensku tablicu i rutu u toj tablici prema WireGuard uređaju. Samo članstvo ne instalira ništa od toga.
nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips
Peer primjenjuje drugu provjeru pokrivenosti koju ljudi zaboravljaju. WireGuard šifrira paket samo za peera čije dopuštene adrese uključuju odredište, pa ruta po politici u sučelje nije dovoljna kada peerov popis isključuje taj prefiks. Držite popis pod nadzorom vlasnika rutiranja umjesto da se pouzdate u to kakvo će stvaranje ruta upravitelj slučajno izvesti.
Oznake, tablice i pokrivenost peera
Oznake su zajednički imenski prostor, pa se i vrijednost i maska moraju uskladiti sa svime drugim što ih rabi. Pravilo koje označeni promet šalje u namjensku tablicu traži definiran ishod kada ta tablica nema odgovarajuću rutu, jer neodgovoreno traženje može nastaviti na sljedeće pravilo i poslati paket kroz fizičko sučelje. Blackhole zadana ruta unutar namjenske tablice pretvara taj tihi bijeg u vidljivo odbacivanje. Ono što dizajn još ne može jest zatvoriti se pri otkazu za odredište koje nikada nije ušlo u set.
Vlastiti vanjski paketi tunela moraju izbjeći klasifikator. WireGuard alati daju oznaku socketa upravo u tu svrhu, a njezino korištenje sprječava da se enkapsulacija rutira natrag u sučelje koje gradi.
Testirajte svaki životni vijek odvojeno
Tri skladišta stare po tri rasporeda: keš razrješivača, elementi seta i praćena veza. Testirajte ih tim redom i gledajte pomiče li se svaki kada treba. Naredbe ispod čitaju razrješivač, set, tablicu veza i pravila politike bez ikakvih promjena.
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
Svježe traženje koje dodaje element dokazuje da hranjenje radi, dok zastario element koji nadživi svoj odgovor predstavlja nesklad životnog vijeka koji vrijedi zapisati. Nova veza u tablici veza s očekivanom oznakom pokazuje da je klasifikator radio, a stara veza koja zadržava prvotnu oznaku ispravno je ponašanje, a ne greška. Popis pravila odgovara postoji li traženje politike uopće, što je drugo pitanje od toga je li se poklopilo. Pročitajte četiri izlaza tim redom i neuspjela primopredaja sama će se odati.
Kada je zahtjev da određeno ime uvijek rabi jednu putanju, set hranjen DNS-om to ne može dokazati jer zajedničke adrese nose i druga imena. Proxy ili mehanizam na razini aplikacije alat je za takvo jamstvo.