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čuje novi tok i peer koji ga nosi. Svaka primopredaja pada drukč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.

Povezani članci