Viena rinda prasību dokumentā — „šī lietotne drīkst izmantot VPN un neko citu“ — klusi prasa divus mehānismus, ko nesniedz neviens viens slēdzis. Satiksmei vajag ceļu caur paredzēto tuneli, un satiksme, kas citādi izietu tieši, ir jāatliedz. Rīki, kas vienu no tiem dara labi, bet otru nemaz, ir ierasti, tāpēc salīdzinājums, kas jautā tikai, vai kaut kas var bloķēt, pārliecinoši atbild uz pusi jautājuma. Vispirms pierakstiet robežu, tad izvēlieties komponentus, kas nosedz abas tās puses.

Divas prasības, kas paslēptas vienā teikumā

Virzīšana ir daļa, kas ievieto savienojumu tunelī vai starpniekserverī. Atteikums ir daļa, kas neļauj tam pašam savienojumam iziet pa jebkuru citu maršrutu. Tos īsteno dažādi komponenti, tie nokrīt dažādos veidos, un produkts var būt izcils vienā, neko nepasakot par otru:

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

Lasiet tabulu kā kontrolsarakstu, nevis kā reitingu. Neviena rinda neaizpilda abas vidējās kolonnas, un rindas, kas tās nosedz, ir divi sadarbojošies komponenti: viens pārvalda ceļu, otrs — atteikumu. Identitātes kolonna ir svarīga cita iemesla dēļ, jo noteikums, kas nevar nosaukt lietotni, nevar izpildīt noteikumu par šo lietotni. Lai ko jūs izvietotu, tam jāatbild uz visiem trim, citādi prasību dokumenta robeža nav robeža mašīnā.

Viena virzīšana atstāj izeju

Lietotnes starpniekservera iestatījums ir visskaidrākais virzīšanas bez atteikuma piemērs. Tas var virzīt pieprasījumus no lietotnes, kas respektē sistēmas starpniekserveri, un neko citu neaptver: palīgprocess, atjauninātājs, fona pakalpojums vai cits protokols var iet savu ceļu, nekad neizlasot šo iestatījumu. Tāpēc SOCKS galapunkta izvēle vienā panelī nerada tiešas izejas aizlieguma politiku lietotnei. Ja prasība attiecas uz lietotni kopumā, jautājiet, kurus komponentus noteikums patiešām identificē.

VPN profils pa lietotnēm virza labāk nekā starpniekserveris, jo platforma izlemj, kuras lietotnes nonāk tunelī tā vietā, lai katra lietotne izlemtu pati. Tomēr tas neko neatliek: profils sniedz ceļu, un satiksme, kas tam neatbilst, izvēlas parasto maršrutu. Tieši šī plaisa ir vieta, kur otrs komponents nopelna savu vietu, un tāpēc produkti, kas izskatās kā viens slēdzis, parasti ir divi.

Viens atteikums salauž lietotni

Apple dokumentācija par satura filtriem apraksta atļaut-vai-bloķēt spriedumu par satiksmi, kamēr tā iet caur tīkla steku. Šis spriedums nav tunelis un nav starpniekservera savienojums, jo tas izlemj, vai kaut kas drīkst turpināties, nevis kurp tas iet. Filtrs viens pats lieliski īsteno atteikumu un atstāj lietotni nederīgu, ar tīriem žurnāliem un bez paskaidrojuma. Filtra spriedums var apturēt savienojumu, bet nekad nesniedz tuneli, tāpēc tā savienošana ar virzīšanu ir dizaina lēmums, nevis papildu iespēja.

Lokāli pārvaldīts PF noteikumu kopums atrodas otrā šī spektra galā. Tas ir likumīgs atbalsta lēmums mašīnā, kas pieder administratoram, un tas nav automātiski izplatāma produkta pamats, jo tas, kam pieder noteikumu kopums, pārvalda arī tā mijiedarbības ar citiem ugunsmūra lietotājiem, tā atjaunināšanas ceļu un atkopšanu, kad noteikums ir nepareizs. PF pievienošana produktam šo īpašumtiesību jautājumu neizslēdz; tā to definē.

Izvietošana izlemj, vai noteikums pastāvēs arī rīt

Tas, kā Network Extension tiek izvietots Apple platformās, ir atkarīgs no pakalpojumu sniedzēja veida, iepakojuma un jūsu priekšā esošās OS versijas. Lietotnes paplašinājums macOS darbojas lietotāja kontekstā un beidzas, kad šis lietotājs izrakstās, savukārt sistēmas paplašinājumam ir globāls konteksts, kas nav atkarīgs no sesijas. Ja aizsardzībai jāiztur izrakstīšanās, šī atšķirība ir viss dizains, nevis zemsvītras piezīme. Apstipriniet izvietošanas ceļu pirms uzvedības solīšanas, jo viens un tas pats kods nonāk atšķirīgi atkarībā no tā, kāds paplašinājuma veids tiek piegādāts.

Avota pieejamība ir atsevišķs jautājums no izpildes. Krātuves lasīšana pasaka, kā kaut kas ir ieviests, nevis ko uzstādītā binārā datne drīkst darīt šajā mašīnā. Parakstīšana, uzstādīšana un autorizācija joprojām ir spēkā, un instrukcijas, kas veidotas ap novecojušu kodola paplašinājumu vai bibliotēkas injekcijas triku, apraksta citu platformu un citu riska pozīciju, lai cik labi tās kādreiz strādājušas.

Pieņemšanas gadījums, kas nosauc lietotni

Izvēlieties vienu darbību, ko lietotne veic pati, pierakstiet adresi, kurai tai jāsasniedz, un vai šī adrese ir IPv4 vai IPv6, tad atkārtojiet to pašu darbību apstiprinātā stāvoklī bez tuneļa. Otrajai izpildei jārada deklarētais atteikums, nevis kluss tiešs atkārtots mēģinājums. Tā ir tā puse, ko cilvēki atstāj nenorādītu, un vienīgā puse, kas pierāda, ka atteikums vispār pastāv. Palaidiet to vispirms ar pieejamu tuneli, lai atšķirība starp abiem rezultātiem varētu nākt tikai no trūkstošā tuneļa.

Pēc tam izstaigājiet pārejas, ko nosauc prasība: lietotnes restartēšana, palīgprocesa iedarbošanās, tuneļa atkārtota savienošana, mašīnas tīklu maiņa un izrakstīšanās vai pārstartēšana, kur tas attiecas. Pārlūka publiskās IP lapa nav citas lietotnes ligzdu tests, tāpēc tā nevar aizstāt šo. Kur neviens atbalstīts izvietojums neaptver lietotnes faktisko uzvedību, autorizēta izolēta vide ar skaidru vārteju un bez alternatīvas izejas ir ierobežošanas lēmums ar savām pārvaldības izmaksām, nevis izvēles rūtiņas aizstājējs.

Pabeidziet, pierakstot četras pozīcijas: no kādiem komponentiem sastāv lietotne, kam pieder virzīšana, kam pieder atteikums un stāvokļi, kuros noteikumam vēl jādarbojas. Publiska krātuve var būt viens atlases kritērijs, bet tā nav viena no četrām, un tieši šīs pozīcijas izlemj, vai konkrēts rīks atbilst tīkla prasībai.

Saistītie raksti