Ein hub som køyrer WireGuard kan halde peer-grupper skilde utan eit eige grensesnitt eller rutingtabell per gruppe. To mekanismar gjer arbeidet, og å blande dei er den vanlege grunnen til at ein policy ser rett ut og ikkje gjer noko. Eitt lag avgjer kven som kan krevje ei kjeldeadresse. Det andre avgjer kvar den pakken har løyve til å gå.

To oppgåver, haldne skilde

Tunnellaget svarar på eit smalt spørsmål: autoriserte nøkkelen til denne peeren denne indre kjeldeadressa. Videresendingslaget svarar på eit breiare: har denne pakken løyve til å gå ut mot den destinasjonen. Ingen av dei svarar på spørsmålet til den andre, og ingen av dei er åleine ein fullstendig tilgangspolicy.

Den delinga er grunnen til at ein peer kan vere autentisert, rett adressert og likevel ikkje nå ein vert han ikkje burde nå. Det forklarar også det motsette: ein brannmurregel som tillèt alt, beviser ingenting om kven som kan krevje kva adresse.

Design dei to laga saman, og test deretter begge. Ein konfigurasjon som er rett i eitt lag og utesta i det andre, feilar ope eller lukka avhengig av standardverdien.

Gje kvar peer berre si eiga adresse

Peers med fleire vertar freistar deg til å gje heile gruppeområdet på serversida. Den løyva er eit krav på ei kjeldeadresse, så ein kompromittert eller feilkonfigurert klient kan leggje fram kva som helst adresse i området, og tunnelen godtek ho. Tildel ein /32 per peer for hans eiga indre adresse. Set gruppeområde berre på klientane, der dei skildrar kva destinasjonar den klienten kan nå i staden for kva kjelder han kan bruke.

Brannmuren matchar då ei kjelde han kan stole på. Ein regel skriven for gruppeområdet er framleis ei nyttig gruppering, og han blir først meiningsfull når ingen einstaka peer kan krevje ei adresse som høyrer til eit anna medlem.

Skriv videresendingspolicyen som skil grupper

Den interessante trafikken går inn og ut gjennom det same tunnelgrensesnittet her, så han kryssar videresendingsvegen og ikkje inngangsvegen til verten. Reglar høyrer heime i den eksisterande videresendingskjeda til den brannmurhandsamaren som eig verten, og dei er fragment, ikkje eit komplett regelsett.

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

Dei to første reglane tillèt trafikk innanfor kvar gruppe. Den siste blokkerer alt anna som kryssar det grensesnittet, og det er det som skaper isolasjon mellom gruppene. Legg til eksplisitte reglar for den andre adressefamilien om du treng dei, for ein drop skriven for IPv4 autoriserer ikkje eller skildrar IPv6-åtferd.

Rekkefølgja avgjer om policyen gjeld

Regelrekkefølgja betyr meir enn sjølve fragmentet. Ein generisk regel som godtek etablerte samband og står før desse oppføringane, lèt ein gammal flyt mellom grupper halde fram, så isolasjonen gjeld berre nye samband. Bestem deg for kva av dei to utfalla du vil ha før du lastar inn på nytt.

Ei akseptavgjerd er heller ikkje alltid endeleg på tvers av kjeder ved same hook. Om ei anna basiskjede køyrer seinare, er den effektive policyen kombinasjonen, så gransk teljarane i staden for fila du redigerte. Teljarane er det billegaste beviset som finst. Ein regel utan pakketeljing matchar ikkje, og ein regel som matchar medan ei seinare kjede godtek, fortel deg at dropen står på feil stad.

Test matrisa, ikkje filtalet

Bygg ei lita matrise med forventa resultat og kontroller kvar celle. Gruppe A til gruppe A skal verke, gruppe B til gruppe B skal verke, og A til B skal ikkje, i båe retningar og for båe adressefamiliar om du støttar dei.

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

Dei to første viser kva som er konfigurert. Ping frå eit medlem av feil gruppe viser kva som faktisk skjer. conntrack-lista viser om ein eldre flyt framleis blir godteken, og det er slik ei isolasjonsendring stille ikkje trer i kraft.

Vertstenester på huben og tilgang til eit LAN bak han er skilde vegan med skild policy. Noter kva av dei matrisa dekkjer, for ein test som berre kontrollerer peer-til-peer-trafikk seier ingenting om nokon av dei.

Relaterte artiklar