Талаптар құжатындағы бір жол — «бұл қолданба VPN-ді пайдалана алады, басқа ештеңе» — ешбір жалғыз ажыратқыш бермейтін екі механизмді тыныш талап етеді. Трафикке көзделген туннель арқылы жол керек, ал тікелей шығатын трафиктен бас тарту қажет. Осы екеуінің бірін жақсы жасап, екіншісін мүлде жасамайтын құралдар жиі кездеседі, сондықтан «бір нәрсе бөгете ала ма?» деп қана сұрайтын салыстыру сұрақтың жартысына сенімді жауап береді. Алдымен шекараны жазыңыз, содан кейін оның екі жартысын да қамтитын құрамдастарды таңдаңыз.

Бір сөйлемге жасырылған екі талап

Бағыттау — қосылымды туннельге немесе проксиге қоятын бөлік. Бас тарту — сол қосылымның кез келген басқа жолмен шығуына кедергі жасайтын бөлік. Оларды әртүрлі құрамдастар іске асырады, олар әртүрлі жолмен істен шығады, ал өнім біреуінде тамаша болып, екіншісі туралы ештеңе айтпауы мүмкін:

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

Кестені дәрежелеу емес, тексеру тізімі ретінде оқыңыз. Ешбір жол екі ортаңғы бағанды толтырмайды, ал оларды қамтитын жолдар — ынтымақтасатын екі құрамдас: біреуі жолды, екіншісі бас тартуды иеленеді. Сәйкестік бағаны басқа себеппен маңызды, өйткені қолданбаны атай алмайтын ереже сол қолданба туралы ережені орындай алмайды. Не орнатсаңыз да, ол үшеуіне де жауап беруі керек, әйтпесе талаптар құжатындағы шекара машинадағы шекара емес.

Тек бағыттау шығу жолын қалдырады

Қолданба проксиінің параметрі бас тартусыз бағыттаудың ең айқын мысалы. Ол жүйелік проксиді құрметтейтін қолданбаның сұраныстарын бағыттай алады және басқа ештеңені қамтымайды: көмекші процес, жаңартушы, фондық қызмет немесе басқа хаттама сол параметрді ешқашан оқымай өз жолымен жүре алады. Сондықтан бір панельде SOCKS соңғы нүктесін таңдау қолданба үшін тікелей шығуға тыйым салу саясатын жасамайды. Егер талап тұтастай қолданбаға қатысты болса, ереже шын мәнінде қай құрамдастарды танитынын сұраңыз.

Қолданба бойынша VPN профилі проксиден жақсырақ бағыттайды, өйткені қай қолданбалардың туннельге кіретінін платформа шешеді әр қолданба өзі шешетін болудың орнына. Соған қарамастан ол ештеңеден бас тартпайды: профиль жол береді, ал оған сәйкес келмейтін трафик әдеттегі маршрутты ұстанады. Дәл осы саңылау — екінші құрамдас өз орнын ақтайтын жер, сондықтан бір ажыратқышқа ұқсайтын өнімдер әдетте екеу.

Тек бас тарту қолданбаны бұзады

Apple құжаттамасы мазмұн сүзгілері туралы желілік стектен өтетін трафикке қатысты рұқсат-немесе-блоктау үкімін сипаттайды. Бұл үкім туннель де, прокси қосылымы да емес, өйткені ол бір нәрсенің жалғасуына бола ма, жоқ па — соны шешеді, қайда баратынын емес. Тек сүзгі бас тартуды мінсіз орындайды да, қолданбаны пайдалануға жарамсыз қалдырады, таза журналдармен және ешбір түсініктемесіз. Сүзгі үкімі қосылымды тоқтата алады, бірақ туннельді ешқашан бермейді, сондықтан оны бағыттаумен жұптау — дизайн шешімі, қосымша опция емес.

Жергілікті басқарылатын PF ережелер жиынтығы сол спектрдің екінші шетінде тұр. Бұл әкімшіге тиесілі машинадағы заңды қолдау шешімі және таратылатын өнімнің негізі автоматты түрде емес, өйткені ережелер жиынтығын иеленген адам оның басқа брандмауэр пайдаланушыларымен өзара әрекеттесулерін, жаңарту жолын және ереже қате болғанда қалпына келтіруді де иеленеді. Өнімге PF қосу бұл меншік сұрағын жоймайды; оны айқындайды.

Орналастыру ереженің ертең де бар болуын шешеді

Network Extension-нің Apple платформаларында қалай орналастырылуы провайдер түріне, қаптамаға және алдыңыздағы ОЖ нұсқасына байланысты. macOS-те қолданба кеңейтімі пайдаланушы контекстінде жұмыс істейді және сол пайдаланушы шыққан кезде аяқталады, ал жүйелік кеңейтім сессияға тәуелді емес жаһандық контекстке ие. Егер қорғаныс шығудан кейін де сақталуы керек болса, бұл айырмашылық — бүкіл дизайн, сілтеме емес. Мінез-құлыққа уәде бермес бұрын орналастыру жолын растаңыз, өйткені бірдей код қай кеңейтім түрі жіберілгеніне қарай әртүрлі қонады.

Бастапқы кодтың қолжетімділігі — орындаудан бөлек мәселе. Репозиторийді оқу бір нәрсенің қалай іске асырылғанын айтады, бірақ орнатылған бинарлық файлдың бұл машинада не істей алатынын емес. Қолтаңба, орнату және авторизация әлі де қолданылады, ал ескірген ядро кеңейтімі немесе кітапхана инъекциясының айласы төңірегінде құрылған нұсқаулықтар басқа платформа мен басқа тәуекел ұстанымын сипаттайды, бір кездері қаншалықты жақсы жұмыс істесе де.

Қолданбаны атайтын қабылдау жағдайы

Қолданба өздігінен орындайтын бір әрекетті таңдаңыз, ол жетуі тиіс мекенжайды және бұл мекенжай IPv4 пе әлде IPv6 ма — соны жазып алыңыз, содан кейін сол әрекетті бекітілген туннельсіз күйде қайталаңыз. Екінші орындалу жарияланған бас тартуды шығаруы керек, тыныш тікелей қайта әрекетті емес. Бұл адамдар нақтыламай қалдыратын жарты, және бас тартудың бар екенін дәлелдейтін жалғыз жарты. Оны алдымен туннель қолжетімді кезде орындаңыз, сонда екі нәтиженің айырмашылығы тек жоқ туннельден келе алады.

Содан кейін талапта аталған ауысуларды өтіңіз: қолданбаны қайта іске қосу, көмекші процестің іске қосылуы, туннельдің қайта қосылуы, машинаның желі ауыстыруы және қолданылатын жерлерде шығу немесе қайта жүктеу. Браузердің жалпыға қолжетімді IP беті басқа қолданбаның сокеттерін сынау емес, сондықтан оның орнын баса алмайды. Қолдау көрсетілетін ешбір орналастыру қолданбаның нақты мінез-құлқын қамтымаса, айқын шлюзі бар және балама шығысы жоқ рұқсат етілген оқшауланған орта — өз басқару құны бар ұстап қалу шешімі, белгілеу ұяшығының орны емес.

Төрт жазбаны жазып аяқтаңыз: қолданба қандай құрамдастардан тұрады, бағыттау кімге тиесілі, бас тарту кімге тиесілі және ереже әлі де күшінде болуы тиіс күйлер. Жалпыға қолжетімді репозиторий таңдау өлшемдерінің бірі бола алады, бірақ ол төртеуінің бірі емес, және берілген құралдың желілік талапқа сай келетінін дәл осы жазбалар шешеді.

Қатысты мақалалар