Kill switch у Windows-у без додатног софтвера: профили или руте?
Профили заштитног зида прате категорију мреже, руте прате адаптер. Упоредите оба, па затим тестирајте случај пада када тунела нема, а икона лаже.
Клијент умире усред преузимања и икона у системској касети нестаје. Пренос се наставља преко кућне везе. Управо тај след је разлог зашто kill switch постоји, и Windows може да му се приближи без другог производа.
Вреди знати два метода. Она отказују на различитим местима, и ниједан није потпун одговор.
Први метод: дозволити програму само на једном профилу
Заштитни зид Windows-а ограничава правила на профиле Domain, Private и Public. Трик је дати тунелском адаптеру једну категорију, а физичком адаптеру другу. Затим пишете одлазно правило које дозвољава заштићени програм на профилу тунела и блокира га свуда другде. Заштитни зид чита категорију, а не назив адаптера.
Прво поставите VPN везу на Private, а физичку мрежу на Public. Затим додајте правило блокирања за програм које важи за непожељне профиле. После тога потврдите доделу помоћу Get-NetConnectionProfile, јер правило прати управо ту доделу.
Get-NetConnectionProfile | Select-Object Name, InterfaceAlias, NetworkCategory
New-NetFirewallRule -DisplayName 'Block browser off VPN' -Direction Outbound `
-Program 'C:\Program Files\Mozilla Firefox\firefox.exe' -Action Block -Profile Public
New-NetFirewallRule -DisplayName 'Allow browser on VPN' -Direction Outbound `
-Program 'C:\Program Files\Mozilla Firefox\firefox.exe' -Action Allow -Profile Private
Слабост је структурна. Правило профила прати категорију, па када Windows рекласификује хотелску мрежу, блокирање може престати да важи. Ништа се на листи правила тада не мења.
Други метод: уклонити физичку подразумевану руту
Приступ преко рута је грубљи и много лакши за ревизију. Забележите физички гејтвеј, пустите VPN да постави своју подразумевану руту са нижом метриком, а затим избришите физичку подразумевану руту. Ништа друго тада не може да носи саобраћај.
route print -4
route delete 0.0.0.0 mask 0.0.0.0 192.168.50.1
route print -4 | findstr /c:"0.0.0.0"
Када клијент умре, VPN рута одлази са својим адаптером. Машина одлази ван мреже уместо да цури, и управо то kill switch треба да произведе.
Два детаља одлучују да ли ће то преживети недељу. DHCP враћа гејтвеј сваки пут када веза задрхти. Физички адаптер са статичном адресом избегава то изненађење. Адреса самог VPN сервера такође мора да остане доступна. Без те путање до хоста клијент никада не може поново да се повеже после прекида који је покренуо блокирање.
Трећи метод: без гејтвеја, једна трајна рута до хоста
Трећа опција почиње брисањем гејтвеја из подешавања адаптера. Затим је замењује једна трајна рута до крајње тачке VPN-а. Машина тада може да разговара са сервером и ни са чим другим док се тунел не подигне.
route -p add 198.51.100.44 mask 255.255.255.255 192.168.50.1 metric 1
route print -4 | findstr 198.51.100.44
Враћање гејтвеја враћа обичан интернет, што ово чини чистим прекидачем за укључивање и искључивање. Не зависи од скрипте која посматра догађаје интерфејса. Такође му није важно како се мрежа категоризује.
Цена је потпуна изолација док је тунел оборен. Ажурирања стају, а са њима и само преузимање које је покренуло ову вежбу. На пословном лаптопу то је често исправно, док је на личној машини одлука коју треба донети свесно.
Зашто икона глобуса ништа не доказује
Windows пријављује доступност кроз проверу према Microsoft одредишту. Та провера не говори ништа о вашем тунелу. Повезан тунел може да стоји иза глобуса који пријављује да нема интернета, а мртав може да показује здраву везу.
Тестирајте тако што ћете убити процес клијента и затим покушајте да достигнете јавну адресу по броју. Упит за име може бити одговорен из кеша, па ни икона ни DNS одговор нису доказ.
Шта забележити после стварног прекида
Изведите тест као след, а не као једну проверу. Убијте процес уместо да прекинете везу, па покушајте нумеричку адресу на обе фамилије. Затим вратите клијент и потврдите да још увек достиже свој сервер кроз руту коју сте задржали.
taskkill /IM openvpn-gui.exe /F
ping -4 198.51.100.44
ping -6 2606:4700:4700::1111
route print -4 | findstr /c:"0.0.0.0"
Поновите след после спавања, после промене Wi-Fi мреже и после преласка са кабла на бежично. Ти прелази су место где и метод профила и понашање DHCP-а отказују. Правило које држи за столом не мора да држи у хотелу.
Упишите корак враћања поред сваког правила и руте. Microsoft документује стварање одлазних правила у референци за правила заштитног зида Windows-а, и то је бољи извор од водича са самим снимцима екрана.