Само Windows заштитниот ѕид како VPN прекинувач: издржува?
Правилата по тип на интерфејс можат да ги блокираат физичките адаптери, но тунелот од трета страна често изгледа како жичен. Проверете ја класификацијата, рутата до крајната точка, потоа DNS.
Прашајте дали Windows заштитниот ѕид може сам да служи како прекинувач за итни случаи и ќе добиете два самоуверени и неспојливи одговори. Едниот вели дека правилото по тип на интерфејс ја врши целата работа; другиот дека не работи без скрипти. Двата опишуваат половина од истиот механизам. Ѕидот може да го изрази блокирањето, а дали резултатот навистина неуспешно се затвора зависи од три работи: како Windows го класифицира тунелскиот адаптер, дали опстојува исклучокот за крајната точка и дали се покриени резолуцијата на имиња и IPv6. Згрешете во било која од нив и машината или пропушта или губи сета врска.
Три услови, по овој редослед
Првиот услов е класификацијата и таа одлучува дали саканото правило воопшто е изразиво. Правилата на Windows заштитниот ѕид можат да се ограничат по тип на интерфејс: жичен, безжичен или далечински пристап. Политиката што го блокира излезниот сообраќај на физичките типови и го дозволува тунелот работи само ако Windows го препознава тунелот како далечински пристап.
Вториот услов е исклучокот за крајната точка. Пред да постои каков било тунел, клиентот мора да стигне до VPN серверот преку физичкиот адаптер, па целосното блокирање на тој адаптер ја спречува токму врската што би го направила блокирањето непотребно. Исклучокот мора да го именува серверот и неговиот порт, а пакетот мора да излезе низ физичкиот портал, а не во тунелот што уште не е кренат.
Третото е покриеноста. Збирот правила што го блокира IPv4 и заборава IPv6, или му дозволува на локалниот резолвер да ја бара крајната точка и со тоа дозволува секое друго барање, неуспешно се отвора токму во прозорецот за кој постои прекинувачот. Тоа е празнина во дизајнот, а не дефект во ѕидот. Тоа е и празнината што го преживува секое тестирање на маса.
Класификацијата е првата порта
Проверете што мисли Windows за адаптерите пред да напишете и едно правило. Вградената Windows VPN врска обично се појавува како далечински пристап. Клиент од трета страна што создава свој виртуелен адаптер често се појавува како жичен, што значи дека блокирањето ограничено на жичени адаптери го блокира и тунелот.
Get-NetConnectionProfile | Select-Object Name,InterfaceAlias,NetworkCategory
Get-NetAdapter | Select-Object Name,InterfaceDescription,Status,ifIndex
Get-NetFirewallProfile | Select-Object Name,Enabled,DefaultOutboundAction
Третата команда ви кажува дали стандардното блокирање на излезниот сообраќај е веќе на сила, што го менува целиот облик на дизајнот. Ако стандардното веќе е блокирање, пишувате правила за дозвола, а не исклучоци од дозволлива основа, и тоа е многу полесна положба за размислување.
Ако вашиот тунелски адаптер се пријавува како жичен, само ѕидот не е вистинската алатка за дизајн со затворен неуспех и никакво дотерување правила не го менува тоа. Ова е случајот во кој второто мислење во секоја форумска тема е точно.
Исклучокот за крајната точка бара рута, а не само правило
Да претпоставиме дека класификацијата работи. Исклучокот е два дела и тие живеат во различни потсистеми. Правилото на ѕидот го дозволува сообраќајот; рутата на домаќинот го пушта да излезе низ вистинскиот интерфејс додека тунелот е спуштен.
New-NetFirewallRule -DisplayName "VPN endpoint allow" -Direction Outbound -Action Allow \
-Protocol TCP -RemoteAddress 203.0.113.9 -RemotePort 443 -InterfaceType Wired,Wireless
New-NetRoute -DestinationPrefix 203.0.113.9/32 -InterfaceIndex 12 -NextHop 192.168.1.1
Get-NetRoute -DestinationPrefix 203.0.113.9/32
Без рутата, исклучокот помага само додека стандардната рута сите уште покажува кон физичкиот портал. Откако клиентот ќе ја инсталира својата стандардна рута и потоа ќе умре, дозволените пакети немаат каде разумно да одат и врската не може да се воспостави повторно. Тој неуспех изгледа како расипан клиент, а всушност е рута што недостига.
Држете го исклучокот тесен колку што клиентот дозволува. Една адреса и еден порт се проверливи; опсегот што ја покрива целата мрежа на добавувачот не е. Тоа пошироко правило дозволува и сите друго хостирано кај истиот добавувач, што обично е повеќе отколку што мислевте.
DNS и IPv6 се местата каде што неуспешно се отвора
Резолуцијата на имиња е класичното истекување. Ако крајната точка е име на домаќин, клиентот мора да го резолвира пред да постои тунелот, што значи дека на физичкиот адаптер мора да му се дозволи да стигне до резолвер. Истото дозволување пушта секое друго барање додека тунелот е спуштен, а едно барање е доволно за да открие што сте планирале да посетите.
IPv6 е вториот. Правилата напишани за IPv4 не го покриваат другото семејство, а многу клиенти инсталираат само IPv4 рути. Затоа машина со вградена IPv6 поврзаност може да продолжи да зборува со интернетот додека страната IPv4 е цврсто блокирана, а прекинувачот цело време пријавува успех.
| Gap | What leaks | Control |
|---|---|---|
| Resolver permitted for endpoint lookup | Every name queried while down | Pin the endpoint as an address, or block non-tunnel DNS |
| Rules only for IPv4 | Full IPv6 connectivity | Add the same rules for the other family |
| Application bound to physical interface | Its own traffic | Firewall cannot fix this; change the binding |
Третиот ред вреди да се разбере наместо да се заобиколи. Ѕидот одлучува за пакетите, а не за тоа кој интерфејс го побарала апликацијата, и програма што експлицитно се врзува може да биде тешка за контрола. Тоа е аргумент за прекинувач на клиентската страна што работи под апликацијата, а не за повеќе правила.
Тестирајте со запирање на клиентот, не со влечење на кабелот
Единствениот смислен тест е оној што го имитира неуспехот од кој се штитите. Запрете ја услугата, убијте го процесот или оневозможете го адаптерот што го создал клиентот, потоа обидете се да стигнете до интернетот и до име:
Stop-Service -Name "YourVpnService" -Force
Test-NetConnection -ComputerName 1.1.1.1 -Port 443
Resolve-DnsName example.com
Test-NetConnection -ComputerName 2606:4700:4700::1111 -Port 443
Сите три треба да не успеат. Ако првиот успее, блокирањето не е на сила; ако вториот успее таму каде што првиот не успеа, имате истекување на DNS; ако третиот успее, IPv6 не е покриен. Секој резултат покажува токму на една од празнините погоре.
Повторете го тестот по спиење и будење, бидејќи профилот на ѕидот може да се смени кога Windows ќе одлучи дека мрежата е јавна или приватна, а правилата ограничени на профил го следат. Дизајн што издржува на маса и не успева во воз е дизајн тестиран еднаш.
Ако портата за класификација или барањето DNS го прават пристапот само со ѕид неупотреблив, прекинувач на клиентската страна е чесниот одговор. Ако тунелот наместо тоа завршува на рутер, политиката треба да му припаѓа на рутерот, бидејќи едно правило таму покрива секој уред зад него и не зависи од тоа како Windows го именува адаптерот.