WireGuard-samtavolanaj grupoj ĉe la centro: posedo de fontoj plus politiko
Tenu samtavolanajn grupojn apartaj per mallarĝaj fontadresoj por ĉiu samtavolano kaj plusenda politiko, sen aparta tunela interfaco por ĉiu grupo.
Centro rulanta WireGuard povas teni samtavolanajn grupojn apartaj sen aparta interfaco aŭ enkursiga tabelo por ĉiu grupo. Du mekanismoj faras la laboron, kaj konfuzi ilin estas la kutima kialo, ke politiko aspektas ĝusta kaj faras nenion. Unu tavolo decidas, kiu rajtas postuli fontadreson. La alia decidas, kien tiu pako rajtas iri.
Du taskoj, tenataj aparte
La tunela tavolo respondas mallarĝan demandon: ĉu la ŝlosilo de ĉi tiu samtavolano rajtigis ĉi tiun internan fontadreson. La plusenda tavolo respondas pli larĝan: ĉu ĉi tiu pako rajtas eliri al tiu celo. Neniu respondas la demandon de la alia, kaj neniu sola estas kompleta alirpolitiko.
Tiu disigo estas la kialo, ke samtavolano povas esti aŭtentikigita, ĝuste adresita kaj tamen ne povi atingi gastiganton, kiun ĝi ne devus atingi. Ĝi ankaŭ klarigas la malon: fajroŝirma regulo, kiu permesas ĉion, pruvas nenion pri tio, kiu rajtas postuli kiun adreson.
Projektu la du tavolojn kune, poste testu ambaŭ. Agordo, kiu estas ĝusta en unu tavolo kaj netestita en la alia, malsukcesas malferme aŭ fermite laŭ la defaŭlto.
Donu al ĉiu samtavolano nur sian propran adreson
Samtavolanoj kun pluraj gastigantoj logas vin doni la tutan grupan intervalon ĉe la servila flanko. Tiu permeso estas postulo de fontadreso, do kompromitita aŭ malĝuste agordita kliento povas prezenti ajnan adreson en la intervalo kaj la tunelo akceptos ĝin. Asignu /32 por ĉiu samtavolano por sia propra interna adreso. Starigu grupajn intervalojn nur ĉe la klientoj, kie ili priskribas kiujn celojn tiu kliento rajtas atingi anstataŭ kiujn fontojn ĝi rajtas uzi.
La fajroŝirmilo tiam kongruas fonton, kiun ĝi povas fidi. Regulo skribita por la grupa intervalo restas utila grupigo, kaj ĝi fariĝas senchava nur kiam neniu unuopa samtavolano povas postuli adreson apartenantan al alia membro.
Skribu la plusendan politikon, kiu apartigas grupojn
La interesa trafiko ĉi tie eniras kaj eliras tra la sama tunela interfaco, do ĝi trapasas la plusendan vojon kaj ne la enigvojon de la gastiganto. Reguloj apartenas al la ekzistanta plusenda ĉeno de tiu ajn fajroŝirma administrilo, kiu posedas la gastiganton, kaj ili estas fragmentoj, ne kompleta regularo.
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
La unuaj du reguloj permesas trafikon ene de ĉiu grupo. La lasta blokas ĉion alian, kio trapasas tiun interfacon, kaj tio produktas izolon inter la grupoj. Aldonu eksplicitajn regulojn por la alia adresa familio se vi bezonas ilin, ĉar drop skribita por IPv4 nek rajtigas nek priskribas la konduton de IPv6.
La ordo decidas, ĉu la politiko validas
Regula ordo gravas pli ol la fragmento mem. Ĝenerala regulo, kiu akceptas establitajn konektojn, metita antaŭ ĉi tiujn erojn, lasas malnovan intergrupan fluon daŭri, do la izolo validas nur por novaj konektoj. Decidu, kiun el tiuj du rezultoj vi volas, antaŭ ol vi reŝargos.
Akcepta verdikto ankaŭ ne ĉiam estas fina trans ĉenoj ĉe la sama hoko. Se alia baza ĉeno ruliĝas poste, la efektiva politiko estas la kombino, do inspektu la nombrilojn anstataŭ la dosieron, kiun vi redaktis. Nombriloj estas la plej malmultekosta havebla pruvo. Regulo sen paketa nombro ne kongruas, kaj regulo, kiu kongruas dum posta ĉeno akceptas, diras al vi, ke la drop estas en la malĝusta loko.
Testu la matricon, ne la dosiernombron
Konstruu malgrandan matricon de atenditaj rezultoj kaj kontrolu ĉiun ĉelon. Grupo A al grupo A devus funkcii, grupo B al grupo B devus funkcii, kaj A al B devus ne, en ambaŭ direktoj kaj por ambaŭ adresaj familioj se vi subtenas ilin.
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
La unuaj du montras, kio estas agordita. La ping de membro de la malĝusta grupo montras, kio efektive okazas. La conntrack-listo montras, ĉu pli malnova fluo ankoraŭ estas akceptata, kaj tiel izola ŝanĝo silente malsukcesas ekvalidi.
Gastigantaj servoj ĉe la centro kaj aliro al LAN malantaŭ ĝi estas apartaj vojoj kun aparta politiko. Notu, kiujn el ili la matrico kovras, ĉar testo, kiu kontrolas nur samtavolanan trafikon, diras nenion pri iu ajn el ili.