Imena se razrješavaju u adrese, a te adrese mogu završiti u setu vatrozida koji kasnije utič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 šta se dešava kada njen ulaz nedostaje.

Šta DNS odgovor može, a šta ne može

dnsmasq može kopirati adrese iz odgovora u nftables set, što je hranjenje, a ne odluka o rutiranju. Ta opcija, dokumentovana u dnsmasq priručniku, navodi familiju, tabelu i set, a njen 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 kreirao vlasnik vatrozida. Ništa u tom koraku ne bira interfejs, tabelu ili peera.

Klijent također mora koristiti 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 uslov 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 tabelu i rutu u toj tabeli 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 šifruje paket samo za peera čije dopuštene adrese uključuju odredište, pa ruta po politici u interfejs nije dovoljna kada peerova lista isključuje taj prefiks. Držite listu pod kontrolom vlasnika rutiranja umjesto da se oslanjate na to kakvo će kreiranje ruta menadžer slučajno izvesti.

Oznake, tabele i pokrivenost peera

Oznake su zajednički imenski prostor, pa se i vrijednost i maska moraju usaglasiti sa svime drugim što ih koristi. Pravilo koje označeni saobraćaj šalje u namjensku tabelu traži definisan ishod kada ta tabela nema odgovarajuću rutu, jer neodgovoreno traženje može nastaviti na sljedeće pravilo i poslati paket kroz fizički interfejs. Blackhole zadana ruta unutar namjenske tabele pretvara taj tihi bijeg u vidljivo odbacivanje. Ono što dizajn još ne može jest da se zatvori 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 njeno korištenje sprječava da se enkapsulacija rutira natrag u interfejs koji 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 pomjera li se svaki kada treba. Komande ispod čitaju razrješivač, set, tabelu 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 tabeli veza s očekivanom oznakom pokazuje da je klasifikator radio, a stara veza koja zadržava prvobitnu oznaku je ispravno ponašanje, a ne greška. Spisak pravila odgovara postoji li traženje politike uopće, što je drugo pitanje od toga da li se poklopilo. Pročitajte četiri izlaza tim redom i neuspjela primopredaja će se sama odati.

Kada je zahtjev da određeno ime uvijek koristi 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