Авариен прекъсвач в Windows без допълнителен софтуер: профили или маршрути?
Профилите на защитната стена следват категорията на мрежата, маршрутите следват адаптера. Сравнете двете и после изпробвайте случая на срив, когато тунелът го няма, а иконата лъже.
Клиентът умира по средата на изтегляне и иконата в системния трей изчезва. Трансферът продължава през домашната връзка. Точно тази последователност е причината аварийният прекъсвач да съществува и 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 маршрутът си тръгва заедно със своя адаптер. Машината излиза офлайн вместо да изтече, а точно това трябва да произведе един авариен прекъсвач.
Две подробности решават дали ще издържи седмица. 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, и това е по-добър източник от ръководство само със снимки.