Kill switch по свакој апликацији наспрам закључавања целог уређаја: шта се мења
Одлучите по заштићеном скупу, не по ознаци: шта се зауставља за искључене апликације, позадинске помоћнике и нове везе, и како тестирати сваки случај.
Kill switch по свакој апликацији звучи као пажљив избор: када тунел падне, мрежу губи само радни клијент, а све остало наставља да ради. Затим неко примети да је лични прегледач ипак учитао страницу, да је помоћник за синхронизацију из истог пакета наставио да покушава, и да се кеширано име и даље разрешавало на адресу која никада није дотакла тунел. Ознака на функцији и скуп веза које она заиста штити две су различите ствари. Прво утврдите заштићени скуп, јер тај скуп одлучује да ли је спровођење по апликацији или закључавање целог уређаја честит опис.
Почните од скупа, не од ознаке
Политика по апликацији штити изабране апликације. Закључавање уређаја циља на ширу мрежну границу, обично са документованим изузецима за локално штампање, управљачки саобраћај или captive портале. Ниједна ознака није потпуна док не одговорите на три питања: шта се дешава са искљученим апликацијама, шта се дешава са помоћницима које те апликације покрећу и шта се дешава са везама отвореним док заштита није доступна.
Запишите те одговоре пре него што дотакнете било коју поставку клијента. Ако је захтев "овај клијент за плате никада не сме да разговара са интернетом изван тунела, а мој прегледач сме", скуп је мали и спровођење по апликацији одговара. Ако је захтев "ништа на овом уређају не стиже до интернета без заштите, осим службе за ажурирања", ниједна политика по апликацији то неће дати, јер су проблем апликације које нисте именовали.
Спровођење по апликацији поклапа идентификаторе, не називе програма
Android нуди VPN по апликацији преко пакета, а његова документација за VpnService описује како то сарађује са стално укљученим режимом и блокирањем. iOS подешава VPN по апликацији преко профила за управљање и поклапа по апликацији или по домену. Windows и Linux уопште немају руту по процесу, па се иста идеја приближава правилом заштитног зида ограниченим на програм или правилом које се поклапа са власником корисником.
Граница је идентификатор, а идентификатори се лако заобилазе. Апликација која преда URL системском прегледачу или отвори документ у прегледачу прелази у процес који ваша политика никада није именовала. Опција за прекид при паду такође није филтер пакета: она убија апликацију коју сте подесили, док дете-процес, радник реда или језичак прегледача могу да одрже постојећи сокет живим.
Закључавање покрива оно што политика по апликацији не може да види
Закључавање целог уређаја уклања избор. Сваки излазни пакет који не припада тунелу се одбацује, укључујући саобраћај процеса за које ваша политика апликација никада није знала. На Android-у то је стално укључен VPN заједно са поставком за блокирање веза, а спровођење се дешава у систему, не у прозору клијента. На десктопу то је трајно правило заштитног зида или подразумевана рута ка недоступном пролазу.
Цена је да све остало стаје, па изузеци постају део дизајна, а не накнадна мисао. Локални штампачи, откривање служби, пријављивање на captive портале, управљачки агенти и ажурирања ОС сваки траже документовану рупу, јер је сваки пут који остаје отворен када тунел не ради. Закључавање је само онолико јако колико је најкраћи унос на том списку.
DNS, IPv6 и позадински помоћници крију цурења
То што заштићена апликација не може да разреши име не доказује да су кеширани одговори или директни IP саобраћај блокирани. Ако је разрешивач и даље доступан изван тунела, име се разрешава, а веза не успева, што изгледа као kill switch који ради и није. Још горе, кеширани запис може да указује на адресу коју тунел не носи, па веза излази директно док апликација пријављује VPN грешку.
IPv6 захтева сопствено правило на свакој платформи која га извршава, јер правило одбацивања за v4 не покрива руту v6. На мобилном, поставка приватног DNS-а може да премести разрешавање у шифровани канал који политика уређаја не прегледа. А позадински помоћници су уобичајени кривац на десктопу: процес за ажурирање или синхронизацију у траци почиње пре VPN клијента и држи своју везу, па никада не види измењену руту.
Тестирајте три апликације и два прелаза
| Test | What it proves |
|---|---|
| Included app, by name and by direct IP | the policy is applied, not just the resolver |
| Excluded app, same checks | the exclusion is intentional and documented |
| Helper or updater process | nothing inherited an older route |
| Tunnel drop, then Wi-Fi to cellular | the block survives the transition |
Покрените сваки ред два пута, једном са именом домаћина и једном са буквалном адресом, и још једном преко IPv6 ако мрежа то нуди. Пролаз значи да се укључена апликација зауставила, искључена се понашала како сте записали и помоћник се није извукао. Запишите директно понашање које сте оценили као прихватљиво, да би следећи администратор разликовао намерни изузетак од квара.
Затим опишите резултат у једној реченици која именује апликације и услове, на пример: клијент за плате нема руту изван тунела, прегледач је директан по дизајну, а све остало стаје када тунел не ради. Ако је ту реченицу тешко написати, политика је још увек две политике које се боре једна против друге.