Který nástroj pro macOS dokáže donutit jednu aplikaci, aby šla pouze přes VPN?
Hranice „pouze přes VPN“ potřebuje cestu i odmítnutí. Porovnejte profily pro jednotlivé aplikace, proxy, filtry a PF a potom otestujte tu jednu aplikaci, na které vám záleží.
Jeden řádek v dokumentu s požadavky — „tato aplikace smí používat VPN a nic jiného“ — tiše žádá dva mechanismy, které žádný jediný přepínač neposkytuje. Provoz potřebuje cestu zamýšleným tunelem a provoz, který by odešel přímo, musí být odmítnut. Nástroje, které jednu z těch věcí dělají dobře a druhou vůbec, jsou běžné, a proto srovnání, které se ptá jen, zda něco umí blokovat, sebevědomě odpovídá na polovinu otázky. Nejprve zapište hranici a pak vyberte komponenty, které pokrývají obě její poloviny.
Dva požadavky skryté v jedné větě
Směrování je část, která umisťuje spojení do tunelu nebo proxy. Odmítnutí je část, která témuž spojení brání odejít jinou cestou. Implementují je různé komponenty, selhávají různými způsoby a produkt může být v jednom vynikající a o druhém neříkat nic:
| Approach | Steers traffic | Refuses direct egress | Knows the app identity |
|---|---|---|---|
| Per-app VPN profile | Yes, for the apps it names | Only if a filter or firewall also blocks | Yes, within its own rules |
| Application proxy setting | Partly, for requests that honour it | No | No |
| Content filter | No | Yes | Yes, if the filter is written that way |
| Local PF ruleset | No | Yes, by address and port | Not reliably |
Čtěte tabulku jako kontrolní seznam, ne jako žebříček. Žádný řádek nevyplňuje oba prostřední sloupce a řádky, které je pokrývají, jsou dvě spolupracující komponenty: jedna vlastní cestu, druhá odmítnutí. Sloupec identity je důležitý z jiného důvodu, protože pravidlo, které nedokáže aplikaci pojmenovat, nedokáže vynutit pravidlo o této aplikaci. Ať nasadíte cokoli, musí odpovědět na všechny tři, jinak hranice v dokumentu s požadavky není hranicí na stroji.
Samotné směrování nechává východ
Nastavení proxy na úrovni aplikace je nejjasnějším příkladem směrování bez odmítnutí. Dokáže směrovat požadavky aplikace, která respektuje systémovou proxy, a nic jiného nepokrývá: pomocný proces, aktualizátor, služba na pozadí nebo jiný protokol mohou jít vlastní cestou, aniž by toto nastavení kdy přečetly. Volba koncového bodu SOCKS v jednom panelu tedy pro aplikaci nevytváří politiku zákazu přímého odchodu. Pokud se požadavek týká aplikace jako celku, ptejte se, které komponenty pravidlo skutečně identifikuje.
Profil VPN pro jednotlivou aplikaci směruje lépe než proxy, protože platforma rozhoduje, které aplikace vstoupí do tunelu místo aby o tom rozhodovala každá aplikace sama. Přesto nic neodmítá: profil poskytuje cestu a provoz, který mu neodpovídá, jde obvyklou cestou. Právě v této mezeře si druhá komponenta zaslouží své místo, a proto jsou produkty, které vypadají jako jeden přepínač, obvykle dva.
Samotné odmítnutí aplikaci rozbije
Dokumentace Applu k filtrům obsahu popisuje verdikt povolit-nebo-zablokovat o provozu, když prochází síťovým zásobníkem. Tento verdikt není tunel ani proxy spojení, protože rozhoduje, zda něco smí pokračovat, a ne kam to jde. Filtr sám o sobě dokonale vynucuje odmítnutí a nechává aplikaci nepoužitelnou, s čistými záznamy a bez vysvětlení. Verdikt filtru dokáže spojení zastavit, ale nikdy neposkytne tunel, takže jeho spojení se směrováním je rozhodnutím o návrhu, ne volitelným doplňkem.
Lokálně spravovaná sada pravidel PF stojí na opačném konci tohoto spektra. Je to legitimní rozhodnutí o podpoře na stroji, který vlastní správce, a není automaticky základem distribuovatelného produktu, protože kdo vlastní sadu pravidel, vlastní i její interakce s ostatními uživateli firewallu, cestu aktualizace a obnovu, když je pravidlo chybné. Přidání PF do produktu tuto otázku vlastnictví neodstraňuje; definuje ji.
Nasazení rozhoduje, zda pravidlo bude existovat i zítra
Jak se Network Extension nasazuje na platformách Apple, závisí na typu poskytovatele, zabalení a verzi operačního systému, který máte před sebou. Rozšíření aplikace na macOS běží v kontextu uživatele a končí, když se tento uživatel odhlásí, zatímco systémové rozšíření má globální kontext, který na relaci nezávisí. Pokud má ochrana přežít odhlášení, je tento rozdíl celý návrh, ne poznámka pod čarou. Potvrďte cestu nasazení, než slíbíte chování, protože stejný kód dosedá různě podle toho, který typ rozšíření se dodává.
Dostupnost zdrojového kódu je oddělená otázka od vynucování. Čtení repozitáře vám říká, jak je něco implementováno, ne co smí nainstalovaný binární soubor na tomto stroji dělat. Podepisování, instalace a autorizace stále platí a postupy postavené kolem zastaralého rozšíření jádra nebo triku s injektáží knihovny popisují jinou platformu a jiný postoj k riziku, jakkoli dobře kdysi fungovaly.
Přejímací případ, který pojmenovává aplikaci
Vyberte jednu akci, kterou aplikace provádí sama, poznamenejte adresu, které má dosáhnout, a zda je tato adresa IPv4, nebo IPv6, a poté stejnou akci zopakujte ve schváleném stavu bez tunelu. Druhý běh musí vyprodukovat deklarované odmítnutí, ne tichý přímý pokus. To je polovina, kterou lidé nechávají nespecifikovanou, a jediná polovina, která dokazuje, že odmítnutí vůbec existuje. Spusťte to nejprve s dostupným tunelem, aby rozdíl mezi oběma výsledky mohl pocházet jen z chybějícího tunelu.
Potom projděte přechody, které požadavek pojmenovává: restart aplikace, spuštění pomocného procesu, opětovné připojení tunelu, změnu sítě na stroji a odhlášení nebo restart tam, kde se to týká. Stránka s veřejnou IP adresou v prohlížeči není testem socketů jiné aplikace, takže jej nemůže nahradit. Kde žádné podporované nasazení nepokrývá skutečné chování aplikace, je autorizované izolované prostředí s výslovnou branou a bez alternativního odchodu rozhodnutím o uzavření s vlastními náklady na správu, ne náhradou za zaškrtávací políčko.
Nakonec zapište čtyři položky: z jakých komponent se aplikace skládá, kdo vlastní směrování, kdo vlastní odmítnutí a ve kterých stavech musí pravidlo stále platit. Veřejný repozitář může být jedním kritériem výběru, ale není jedním ze čtyř, a právě tyto položky rozhodují, zda daný nástroj splňuje síťový požadavek.