Kial nftables ne povas vidi la trafikon de OpenVPN inter klientoj
Trafiko inter samtavoloj estas liverata ene de la VPN-procezo, do la plusendaj nombriloj neniam moviĝas. Por kalkuli ĝin, necesas elekti inter la kernovojo kaj la procezovojo.
Du klientoj sur unu servilo interŝanĝas dosierojn, la transdono sukcesas, kaj ĉiu plusenda regulo, kiun vi direktas al la tunelo, raportas nulon da pakoj. La reguloj ne estas rompitaj kaj la ĉeno ne staras malĝuste. Kun plusendado inter samtavoloj ŝaltita, la pako estas liverata ene de la servila procezo kaj la gastiga stako neniam fariĝas la enkursigilo, do la kerna fajroŝirmilo havas nenion por kalkuli. Kompreni tiun dividon decidas, ĉu vi konservos la mallongan vojon aŭ rekonstruos la vojon tra la kerno.
Sekvu unu pakon tra la servilo
En enkursigita tunelo, la demono transdonas la malĉifritan pakon de ĉiu kliento al la tunela aparato. De tie la gastigo enkursigas ĝin, la plusenda hoko ruliĝas, kaj regulo kongruanta kun la tunela aparato povas kalkuli aŭ forigi la trafikon. Tiu estas la vojo, kiun supozas plej multaj fajroŝirmilaj ekzemploj.
| Forwarding path | Who decides | What the host firewall sees |
|---|---|---|
| Kernel routing between clients | Host routing table and forward rules | Every inner packet, with interface names |
| Peer forwarding inside the server process | The VPN daemon's own peer table | Only the outer encrypted transport |
La mallonga vojo forigas la gastigan stakon el la mezo. La malĉifrita pako de unu seanco estas transdonata al alia seanco ene de la demono, kaj la interna pako neniam estas elsendata sur la tunela aparato nek enkursigata de la gastigo. Enkapsuligita trafiko ankoraŭ transiras la fizikan interfacon, do ekstera kaptaĵo aspektas okupata dum la internaj reguloj restas silentaj. Kaptaĵo farita sur la tunela aparato montras tute nenion, kio surprizas ĉiun, kiu atendas observi la transdonon tie. Tiu nesimetrio estas la plej rapida maniero rekoni la mallongan vojon de ekster la demono.
La nombrila testo, kiu decidas, kiu vojo ruliĝis
Aldonu nombrilon al la regulo, kiu devus validi, rulu transdonon inter du klientoj, kiujn tiu regulo devus bloki, kaj poste legu la nombrilon.
sudo nft list ruleset
sudo nft add rule inet filter forward iifname "tun0" oifname "tun0" counter accept
sudo nft list chain inet filter forward
Se la transdono sukcesas kaj la nombrilo restas je nulo, la kerno neniam traktis tiujn pakojn, kaj neniu kvanto da redaktado de reguloj tion ŝanĝos. Ripetu la saman teston kontraŭ servo sur la servilo mem, ĉar tiu fluo ja transiras la gastigan stakon kaj ĝia nombrilo moviĝas. Kompari la du rezultojn estas tio, kio donas la respondon.
Du detaloj malhelpas falsan legadon. Interfaca nomo skribita en ĉena etikedo filtras nenion per si mem, ĉar kongruo okazas sur interfacaj kampoj ene de reguloj. Kaj pontigita dezajno de tavolo 2 kondutas ankoraŭ alie: tie la klientoj dividas unu dissendan domajnon, do malkovro de samtavoloj estas atendata, ne enkursiga misfunkcio.
Komutilo ne estas alirlisto
Ĉi tio estas la parto, kiu kostas posttagmezon. Plusendado inter samtavoloj estas unu ŝalto ŝaltita aŭ malŝaltita, kaj dum ĝi estas ŝaltita la demono estas la sola plusenda punkto. La gastiga fajroŝirmilo ne povas esprimi, kiu rajtas atingi kiun, kaj dosieroj po kliento ne transformas la komutilon en politikan matricon.
Se vi bezonas regulojn po samtavolo, la elekto estas inter rezigni pri la mallonga vojo kaj rezigni pri la gastiga fajroŝirmilo kiel la regilo. Malŝalti ĝin restarigas kernan plusendadon, kio postulas IP-plusendadon sur la servilo kaj eksplicitajn regulojn por la fluoj, kiujn vi volas. Teni ĝin ŝaltita signifas, ke la politiko vivas en la agordo de la demono, kio praktike estas ĉiuj samtavoloj aŭ neniuj.
Apartaj servilaj procezoj kun propraj adresaroj kaj pordoj estas la farebla mezo. Ĉiu procezo portas ekzakte unu alirdecidon, do du grupoj povas havi malsamajn regulojn sen politika matrico. La gastigo povas enkursigi inter la adresaroj kiam tio estas intencita, kaj tiam la fajroŝirmilo vidas tiujn fluojn ĉar ili transiras la gastigon. La kosto estas pliaj pordoj, pliaj atestiloj kaj profilo po grupo.
Elekti la plusendan punkton
Elektu kernan plusendadon kiam la fajroŝirmilo estas la politika motoro, kiam vi bezonas protokoladon po fluo, aŭ kiam kontado gravas. La kosto estas trairo tra la gastiga stako kaj pli da reguloj prizorgendaj. La avantaĝo estas, ke ĉiu ekzistanta ilo, de nombriloj ĝis fluaj eksportiloj, denove priskribas la trafikon. Sur malgranda servilo tiu kosto estas nevidebla; sur okupata relajso ĝi ne estas.
Elektu plusendadon ene de la procezo kiam trafiko inter samtavoloj estas aŭ tute permesata aŭ tute malpermesata kaj la servilo estas dimensiita por tio. La kosto estas, ke nombriloj, atendovica disciplino kaj konekta spurado ne plu priskribas la internajn fluojn; tio akcepteblas nur se poste neniu fidas al ili.
Kion ajn vi elektos, skribu ĝin apud la fajroŝirmilaj reguloj. Regula aro, kiu ŝajnas permesi trafikon inter samtavoloj dum la demono decidas ĉiuokaze, misgvidas la sekvan personon, kiu sencimigos malsukcesan transdonon. Ĉiu, kiu legas nur la regulojn, supozos, ke la kerno estas la pordego.
Kion kontroli antaŭ ol ŝanĝi regulojn
Legu la agordon, kiun la servilo efektive ŝargis, ne la dosieron, kiun vi memoras redaktinta, kaj konfirmu, ĉu la samtavola opcio ĉeestas. Se vi ŝanĝis ĝin, certiĝu, ke la servo reŝargiĝis kaj ne nur reskribis dosieron sur la disko.
Poste ripetu la teston kun fluo de kliento al servilo por pruvi, ke la regulo entute kongruas, kaj kontrolu la puŝitajn vojojn, ĉar mankanta vojo aspektas de la klienta flanko ĝuste kiel fajroŝirmila blokado. Ŝanĝu la ordon de la reguloj nur post kiam vi scias, kiu plusenda punkto posedas la decidon.