DNS-syötteinen nftables-joukko WireGuardille: miten siirto toimii
DNS-vastaus voi syöttää nftables-joukkoa, mutta joukko ei reititä mitään. Seuraa neljä siirtoa ja kolme elinikää, jotka ratkaisevat, toimiiko ohjaus.
Nimet ratkeavat osoitteiksi, ja nämä osoitteet voivat päätyä palomuurin joukkoon, joka myöhemmin vaikuttaa reititykseen, mikä tekee nimiperusteisen ohjauksen mahdolliseksi ilman välityspalvelinta. Kompastuskivi on, että neljän komponentin on siirrettävä oikein: ratkaisija, joukko, uuden virtauksen merkitsevä luokittelija ja sen kuljettava vertaiskumppani. Jokainen siirto epäonnistuu eri tavalla ja jokainen pitää oman aikansa.
Käsittele suunnittelua ketjuna, älä kokoonpanona. Kysymys jokaisessa vaiheessa on, mikä komponentti omistaa päätöksen ja mitä tapahtuu, kun sen syöte puuttuu.
Mitä DNS-vastaus voi tehdä ja mitä ei
dnsmasq voi kopioida osoitteita vastauksista nftables-joukkoon, mikä on syöttämistä eikä reitityspäätös. Tämä vaihtoehto, dokumentoitu dnsmasq-käsikirjassa, nimeää perheen, taulukon ja joukon, ja sen alussa oleva 4# valitsee vain A-tietueet, joten v6-kohteet tarvitsevat oman järjestelynsä. Joukon on oltava jo olemassa, koska ratkaisija lisää alkioita johonkin, jonka palomuurin omistaja loi. Mikään siinä vaiheessa ei valitse rajapintaa, taulukkoa tai vertaiskumppania.
Asiakkaan on myös käytettävä tätä ratkaisijaa nimen osalta. Sovellus, jolla on oma salattu DNS, tai ennen käytäntöä välimuistiin tallennettu vastaus, yhdistää luomatta joukkoon yhtään merkintää.
Joukko on syöte, ei reitti
Joukon alkio on täsmäytysehto. Jonkin on katsottava sitä, päätettävä, että tämä paketti aloittaa uuden virtauksen, ja sovellettava käytäntöä, joka lähettää virtauksen tunnelin läpi. Linuxissa se tarkoittaa yleensä reitityskykyistä lähtöpolkua, joka voi asettaa merkin, sääntöä, joka lähettää merkityt paketit erilliseen taulukkoon, ja reittiä siinä taulukossa WireGuard-laitteeseen. Pelkkä jäsenyys ei asenna mitään näistä.
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
Vertainen soveltaa toista kattavuustarkistusta, jonka ihmiset unohtavat. WireGuard salaa paketin vain sellaiselle vertaiselle, jonka sallitut osoitteet sisältävät kohteen, joten käytäntöreitti rajapintaan ei riitä, kun vertaisen luettelo jättää tämän etuliitteen pois. Pidä luettelo reitityksen omistajan hallinnassa sen sijaan, että luottaisit siihen, millaisen reitin hallintaohjelma sattuu luomaan.
Merkit, taulukot ja vertaisen kattavuus
Merkit ovat jaettu nimiavaruus, joten sekä arvo että peite on sovittava yhteen kaiken muun kanssa, joka niitä käyttää. Sääntö, joka lähettää merkityn liikenteen erilliseen taulukkoon, tarvitsee määritellyn tuloksen, kun siinä taulukossa ei ole täsmäävää reittiä, koska vastaamaton haku voi jatkua seuraavaan sääntöön ja lähettää paketin fyysisestä rajapinnasta ulos. Erillisen taulukon sisällä oleva blackhole-oletusreitti muuttaa sen hiljaisen karkumatkan näkyväksi pudotukseksi. Mitä suunnittelu ei vieläkään pysty, on sulkeutua vian sattuessa kohteelle, joka ei koskaan tullut joukkoon.
Tunnelin omat ulommat paketit on päästävä luokittelijan ohi. WireGuardin työkalut tarjoavat juuri sitä varten socket-merkin, ja sen käyttö estää kapseloinnin reitittymisen takaisin rajapintaan, jota se rakentaa.
Testaa jokainen elinikä erikseen
Kolme varastoa vanhenee kolmella aikataululla: ratkaisijan välimuisti, joukon alkiot ja seurattu yhteys. Testaa ne tässä järjestyksessä ja katso, liikkuuko kukin silloin kun pitää. Alla olevat komennot lukevat ratkaisijan, joukon, yhteystaulukon ja käytäntösäännöt muuttamatta mitään.
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
Tuore haku, joka lisää alkion, todistaa syöttämisen toimivan, kun taas vastauksensa yli elävä vanhentunut alkio on elinikäpoikkeama, joka kannattaa kirjata. Uusi yhteys yhteystaulukossa odotetulla merkillä osoittaa luokittelijan toimineen, ja vanha yhteys, joka pitää alkuperäisen merkkinsä, on oikeaa käyttäytymistä eikä virhe. Sääntöluettelo vastaa siihen, onko käytäntöhaku ylipäätään olemassa, mikä on eri kysymys kuin se, täsmäsikö se. Lue neljä tulostetta tässä järjestyksessä, niin epäonnistunut siirto paljastaa itsensä.
Kun vaatimus on, että tietty nimi käyttää aina yhtä polkua, DNS-syötteinen joukko ei voi todistaa sitä, koska jaetut osoitteet kantavat myös muita nimiä. Välityspalvelin tai sovellustason mekanismi on sen takuun työkalu.