Jeden riadok v dokumente požiadaviek — „táto aplikácia smie používať VPN a nič iné“ — ticho žiada dva mechanizmy, ktoré neposkytuje žiadny jediný prepínač. Prevádzka potrebuje cestu zamýšľaným tunelom a prevádzka, ktorá by odišla priamo, musí byť odmietnutá. Nástroje, ktoré jedno z toho robia dobre a druhé vôbec, sú bežné, preto porovnanie, ktoré sa pýta len, či niečo dokáže blokovať, sebavedomo odpovedá na polovicu otázky. Najprv zapíšte hranicu, potom vyberte komponenty, ktoré pokrývajú obe jej polovice.

Dve požiadavky skryté v jednej vete

Smerovanie je časť, ktorá umiestňuje spojenie do tunela alebo proxy. Odmietnutie je časť, ktorá tomu istému spojeniu bráni odísť akoukoľvek inou cestou. Implementujú ich rôzne komponenty, zlyhávajú rôznymi spôsobmi a produkt môže byť v jednom vynikajúci a o druhom nepovedať nič:

ApproachSteers trafficRefuses direct egressKnows the app identity
Per-app VPN profileYes, for the apps it namesOnly if a filter or firewall also blocksYes, within its own rules
Application proxy settingPartly, for requests that honour itNoNo
Content filterNoYesYes, if the filter is written that way
Local PF rulesetNoYes, by address and portNot reliably

Čítajte tabuľku ako kontrolný zoznam, nie ako rebríček. Žiadny riadok nevypĺňa oba stredné stĺpce a riadky, ktoré ich pokrývajú, sú dva spolupracujúce komponenty: jeden vlastní cestu, druhý odmietnutie. Stĺpec identity je dôležitý z iného dôvodu, pretože pravidlo, ktoré nedokáže pomenovať aplikáciu, nedokáže vynútiť pravidlo o tejto aplikácii. Čokoľvek nasadíte, musí odpovedať na všetky tri, inak hranica v dokumente požiadaviek nie je hranicou na stroji.

Samotné smerovanie necháva východ

Nastavenie proxy na úrovni aplikácie je najjasnejším príkladom smerovania bez odmietnutia. Dokáže smerovať požiadavky aplikácie, ktorá rešpektuje systémovú proxy, a nič iné nepokrýva: pomocný proces, aktualizátor, služba na pozadí alebo iný protokol môžu ísť vlastnou cestou bez toho, aby toto nastavenie kedy prečítali. Voľba koncového bodu SOCKS v jednom paneli teda pre aplikáciu nevytvára politiku zákazu priameho odchodu. Ak sa požiadavka týka aplikácie ako celku, spýtajte sa, ktoré komponenty pravidlo skutočne identifikuje.

Profil VPN pre jednotlivú aplikáciu smeruje lepšie ako proxy, pretože platforma rozhoduje, ktoré aplikácie vstúpia do tunela namiesto toho, aby o tom rozhodovala každá aplikácia sama. Napriek tomu nič neodmieta: profil poskytuje cestu a prevádzka, ktorá mu nezodpovedá, ide obvyklou cestou. Práve v tejto medzere si druhý komponent zaslúži svoje miesto, a preto sú produkty, ktoré vyzerajú ako jeden prepínač, zvyčajne dva.

Samotné odmietnutie aplikáciu pokazí

Dokumentácia Apple k filtrom obsahu opisuje verdikt povoliť-alebo-zablokovať o prevádzke, keď prechádza sieťovým zásobníkom. Tento verdikt nie je tunel ani proxy spojenie, pretože rozhoduje, či niečo smie pokračovať, a nie kam ide. Filter sám o sebe dokonale vynucuje odmietnutie a necháva aplikáciu nepoužiteľnú, s čistými záznamami a bez vysvetlenia. Verdikt filtra dokáže spojenie zastaviť, ale nikdy neposkytne tunel, takže jeho spojenie so smerovaním je rozhodnutím o návrhu, nie voliteľným doplnkom.

Lokálne spravovaná sada pravidiel PF stojí na opačnom konci tohto spektra. Je to legitímne rozhodnutie o podpore na stroji, ktorý vlastní správca, a nie je automaticky základom distribuovateľného produktu, pretože kto vlastní sadu pravidiel, vlastní aj jej interakcie s ostatnými používateľmi firewallu, cestu aktualizácie a obnovu, keď je pravidlo chybné. Pridanie PF do produktu túto otázku vlastníctva neodstraňuje; definuje ju.

Nasadenie rozhoduje, či pravidlo bude existovať aj zajtra

Ako sa Network Extension nasadzuje na platformách Apple, závisí od typu poskytovateľa, zabalenia a verzie operačného systému pred vami. Rozšírenie aplikácie v macOS beží v kontexte používateľa a končí, keď sa tento používateľ odhlási, zatiaľ čo systémové rozšírenie má globálny kontext, ktorý nezávisí od relácie. Ak má ochrana prežiť odhlásenie, je tento rozdiel celý návrh, nie poznámka pod čiarou. Potvrďte cestu nasadenia, skôr než sľúbite správanie, pretože rovnaký kód pristáva rôzne podľa toho, ktorý typ rozšírenia sa dodáva.

Dostupnosť zdrojového kódu je oddelená otázka od vynucovania. Čítanie repozitára vám povie, ako je niečo implementované, nie čo smie nainštalovaný binárny súbor na tomto stroji robiť. Podpisovanie, inštalácia a autorizácia stále platia a postupy postavené okolo zastaraného rozšírenia jadra alebo triku s injektážou knižnice opisujú inú platformu a iný postoj k riziku, akokoľvek dobre kedysi fungovali.

Prijímací prípad, ktorý pomenúva aplikáciu

Vyberte jednu akciu, ktorú aplikácia vykonáva sama, poznamenajte adresu, ktorú má dosiahnuť, a či je táto adresa IPv4 alebo IPv6, a potom tú istú akciu zopakujte v schválenom stave bez tunela. Druhý beh musí vyprodukovať deklarované odmietnutie, nie tichý priamy pokus. To je polovica, ktorú ľudia nechávajú nešpecifikovanú, a jediná polovica, ktorá dokazuje, že odmietnutie vôbec existuje. Spustite to najprv s dostupným tunelom, aby rozdiel medzi dvoma výsledkami mohol pochádzať len z chýbajúceho tunela.

Potom prejdite prechodmi, ktoré požiadavka pomenúva: reštart aplikácie, spustenie pomocného procesu, opätovné pripojenie tunela, zmena siete na stroji a odhlásenie alebo reštart tam, kde sa to týka. Stránka s verejnou IP v prehliadači nie je testom socketov inej aplikácie, takže ho nemôže nahradiť. Kde žiadne podporované nasadenie nepokrýva skutočné správanie aplikácie, je autorizované izolované prostredie s výslovnou bránou a bez alternatívneho odchodu rozhodnutím o uzavretí s vlastnými nákladmi na správu, nie náhradou za zaškrtávacie políčko.

Nakoniec zapíšte štyri položky: z akých komponentov sa aplikácia skladá, kto vlastní smerovanie, kto vlastní odmietnutie a stavy, v ktorých musí pravidlo ešte platiť. Verejný repozitár môže byť jedným kritériom výberu, ale nie je jedným zo štyroch, a práve tieto položky rozhodujú, či daný nástroj spĺňa sieťovú požiadavku.

Súvisiace články