WireGuard-vertaisryhmät keskittimessä: lähteen omistus ja käytäntö
Pidä vertaisryhmät erillään kapeilla lähteen osoitteilla vertaista kohden ja edelleenlähetyskäytännöllä, ilman erillistä tunneliliitäntää jokaista ryhmää varten.
WireGuardia ajava keskitin voi pitää vertaisryhmät erillään ilman erillistä liitäntää tai reititystaulua ryhmää kohden. Työn tekevät kaksi mekanismia, ja niiden sekoittaminen on tavallinen syy siihen, että käytäntö näyttää oikealta eikä tee mitään. Yksi kerros päättää, kuka saa vaatia lähdeosoitetta. Toinen päättää, minne tämä paketti saa mennä.
Kaksi tehtävää, erillään pidettyinä
Tunnelikerros vastaa kapeaan kysymykseen: valtuuttiko tämän vertaisen avain tämän sisäisen lähdeosoitteen. Edelleenlähetyskerros vastaa laajempaan: saako tämä paketti lähteä kohti tuota kohdetta. Kumpikaan ei vastaa toisen kysymykseen, eikä kumpikaan yksin ole täydellinen käyttöoikeuskäytäntö.
Tämä jako on syy siihen, miksi vertainen voi olla todennettu ja oikein osoitettu ja silti olla pääsemättä isäntään, johon sen ei pitäisi päästä. Se selittää myös päinvastaisen: palomuurisääntö, joka sallii kaiken, ei todista mitään siitä, kuka saa vaatia minkä osoitteen.
Suunnittele molemmat kerrokset yhdessä ja testaa sitten molemmat. Kokoonpano, joka on oikein yhdessä kerroksessa ja testaamatta toisessa, epäonnistuu avoimena tai suljettuna oletusarvosta riippuen.
Anna jokaiselle vertaiselle vain oma osoitteensa
Monen isännän vertaiset houkuttelevat antamaan palvelinpuolella koko ryhmän vaihteluvälin. Tämä lupa on lähdeosoitteen vaatimus, joten vaarantunut tai väärin määritetty asiakas voi esittää minkä tahansa vaihteluvälin osoitteen ja tunneli hyväksyy sen. Anna /32 vertaista kohden sen omalle sisäiselle osoitteelle. Aseta ryhmien vaihteluvälit vain asiakkaille, joissa ne kuvaavat mitkä kohteet tämä asiakas saa saavuttaa eikä mitä lähteitä se saa käyttää.
Palomuuri sovittaa sitten lähteen, johon se voi luottaa. Ryhmän vaihteluvälille kirjoitettu sääntö on edelleen hyödyllinen ryhmittely, ja se tulee merkitykselliseksi vasta kun yksikään vertainen ei voi vaatia toiselle jäsenelle kuuluvaa osoitetta.
Kirjoita edelleenlähetyskäytäntö, joka erottaa ryhmät
Kiinnostava liikenne tulee ja lähtee tässä samasta tunneliliitännästä, joten se kulkee edelleenlähetyspolkua eikä isännän syöttöpolkua. Säännöt kuuluvat sen palomuurin hallintaohjelman olemassa olevaan edelleenlähetysketjuun, joka isännän omistaa, ja ne ovat osia, eivät täydellinen sääntöjoukko.
iifname "wg0" oifname "wg0" ip saddr 10.66.10.0/24 ip daddr 10.66.10.0/24 accept iifname "wg0" oifname "wg0" ip saddr 10.66.20.0/24 ip daddr 10.66.20.0/24 accept iifname "wg0" oifname "wg0" drop
Kaksi ensimmäistä sääntöä sallivat liikenteen kunkin ryhmän sisällä. Viimeinen estää kaiken muun, mikä ylittää tuon liitännän, ja juuri se synnyttää eristyksen ryhmien välille. Lisää selkeät säännöt toiselle osoiteperheelle, jos tarvitset niitä, sillä IPv4:lle kirjoitettu drop ei valtuuta eikä kuvaa IPv6:n käyttäytymistä.
Järjestys ratkaisee, sovelletaanko käytäntöä
Sääntöjen järjestys on tärkeämpi kuin osa itse. Yleinen sääntö, joka hyväksyy muodostetut yhteydet ja on sijoitettu ennen näitä merkintöjä, päästää vanhan ryhmien välisen virran jatkumaan, joten eristys koskee vain uusia yhteyksiä. Päätä, kumman näistä kahdesta tuloksesta haluat, ennen kuin lataat uudelleen.
Hyväksymispäätös ei myöskään ole aina lopullinen ketjujen välillä samassa koukussa. Jos toinen perusketju ajetaan myöhemmin, tehokas käytäntö on yhdistelmä, joten tarkastele laskureita äläkä muokkaamaasi tiedostoa. Laskurit ovat halvin saatavilla oleva todiste. Sääntö, jolla ei ole pakettilaskuria, ei täsmää, ja sääntö, joka täsmää samalla kun myöhempi ketju hyväksyy, kertoo sinulle, että drop on väärässä paikassa.
Testaa matriisi, älä tiedostojen määrää
Rakenna pieni matriisi odotetuista tuloksista ja tarkista jokainen solu. Ryhmästä A ryhmään A pitäisi toimia, ryhmästä B ryhmään B pitäisi toimia, eikä A:sta B:hen pitäisi, molemmissa suunnissa ja molemmille osoiteperheille, jos tuet niitä.
nft list ruleset wg show wg0 allowed-ips ping -c 2 10.66.10.5 conntrack -L -s 10.66.20.7 2>/dev/null | head
Kaksi ensimmäistä näyttävät, mitä on määritetty. Ping väärän ryhmän jäseneltä näyttää, mitä todella tapahtuu. conntrack-luettelo näyttää, hyväksytäänkö vanhempi virta yhä, ja juuri näin eristyksen muutos jää hiljaa tulematta voimaan.
Keskittimen isäntäpalvelut ja pääsy sen takana olevaan LAN-verkkoon ovat erillisiä polkuja, joilla on erillinen käytäntö. Kirjaa, mitkä niistä matriisi kattaa, sillä testi, joka tarkistaa vain vertaisten välistä liikennettä, ei kerro kummastakaan mitään.