Portál AbcLinuxu, 7. května 2025 09:58
Co je lepsie TUN, alebo TAP.
V podstatě ani jedno. Obojí je bída s nouzí ve srovnání se IPSec. Doporučuji vybodnout se na OpenVPN a podobné hračky a nastavit si IPSec. K tomu účelu používám strongswan. (Některé distribuce mají libreswan, openswan a kdovícoještě, ale cokoliv z toho by mělo hravě strčit OpenVPN do kapsy.)
Jakkoliv je OpenVPN uznávané a dokonce už i oficiálně standardizované řešení (co se protokolu týká), nikdy se nezbaví té ošklivé konfigurace s démonem v userspace. Takže každý paket, kterým se OpenVPN zabývá, musí přes ono virtuální rozhraní z kernelu do userspace, tam se šifruje a dešifruje (a otázka je, jak efektivně, protože program v userspace prostě nemá žádnou možnost rozhodovat, na kterém procesoru zrovna běží a jestli bude jeho manipulace s pakety výhodná z hlediska cache) a nakonec následuje další kopie z userspace zpátky do kernelu.
Naproti tomu IPSec je prostě součástí síťového stacku přímo v kernelu. Tím pádem zdaleka nemusí tolikrát kopírovat data sem a tam a může pracovat mnohem efektivněji z hlediska cache. (Například může všechny vrstvy síťových protokolů, včetně IPSec, zpracovat tentýž procesor, který přijal původní interrupt od síťovky, čímž se zásadně ušetří čas i energie, nedochází k několika context-switchům kvůli (skoro) každému paketu a nepřepisují se úplně zbytečně cache.)
OpenVPN je jakási složitá tlustá vrstva, která si napřed nad L3 sítí naváže klasickou L4 komunikaci a uvnitř toho komunikačního kanálu pak provozuje v podstatě něco jako virtuální L2 bridge (no, s trochou nadsázky, podle toho, jakou konfiguraci člověk zvolí). Až si jeden říká, what can possibly go wrong. V kontrastu s tímhle se IPSec prostě od začátku do konce tváří jako úplně normální L3 vrstva, která „jenom“ mění způsob interpretace některých paketů z/do některých rozsahů adres. Nehraje si tedy na virtuální rozhraní. Dovede selektivně a transparentně (bez nutnosti vědět o nějakém speciálním zařízení a o jeho adresách) zabezpečit například komunikaci s různými „spřátelenými“ sítěmi. Není potřeba explicitně zakazovat nešifrovanou komunikaci pro případ, kdy náhodou OpenVPN neběží nebo virtuální rozhraní zkrátka z nějakého důvodu není k dispozici, a vůbec tak celkově ubude spousta podivných krajních případů.
S kompatibilitou napříč různými systémy je na tom IPSec zhruba stejně jako OpenVPN.
Myslím si, že pokud někdo navrhuje nějaké VPN řešení od píky, neměl byc se nechat zmást tím VPN v názvu OpenVPN a prostě by tam měl dát místo toho IPSec, pokud nemá nějaký zásadní technický důvod k použití OpenVPN. Takový důvod si ale u nově navrhované sítě, která nemusí zajišťovat kompatibilitu s nějakou existující konfigurací klientů, neumím představit.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.