Спытайце, ці можа брэндмаўэр Windows сам служыць пераключальнікам адключэння, і атрымаеце два ўпэўненыя і несумяшчальныя адказы. Адзін кажа, што правіла тыпу інтэрфейса робіць усю працу; другі — што без скрыптоў яно не працуе. Абодва апісваюць палову аднаго механізму. Брэндмаўэр можа выразіць блакаванне, а вось ці сапраўды вынік закрываецца бяспечна, залежыць ад трох рэчаў: як Windows класіфікуе тунельны адаптар, ці захоўваецца выключэнне для канчатковага пункта і ці пакрытыя развязанне імёнаў і IPv6. Памыліцеся хоць у адным — і машына або працячэ, або страціць усялякую сувязь.

Тры ўмовы, у такім парадку

Першая ўмова — класіфікацыя, і яна вырашае, ці можна наогул выразіць патрэбнае правіла. Правілы брэндмаўэра Windows можна абмежаваць па тыпе інтэрфейса: правадны, бесправодны або аддалены доступ. Палітыка, якая блакуе зыходны трафік на фізічных тыпах і дазваляе тунель, працуе толькі тады, калі Windows прызнае тунель аддаленым доступам.

Другая ўмова — выключэнне для канчатковага пункта. Перш чым з'явіцца тунель, кліент павінен дабрацца да сервера VPN праз фізічны адаптар, таму суцэльнае блакаванне гэтага адаптара перашкаджае менавіта той сувязі, якая зрабіла б блакаванне непатрэбным. Выключэнне павінна называць сервер і яго порт, а пакет мусіць ісці праз фізічны шлюз, а не ў яшчэ не ўзняты тунель.

Трэцяе — пакрыццё. Набор правілаў, які блакуе IPv4 і забывае пра IPv6, або дазваляе лакальнаму рэзалютару развязанне канчатковага пункта і тым самым дазваляе любое іншае развязанне, адмаўляе адкрыта менавіта ў тым акне, для якога існуе пераключальнік. Гэта прабел у праекце, а не памылка брэндмаўэра. Гэта таксама прабел, які перажывае любы прагон тэстаў на стале.

Класіфікацыя — першая брама

Паглядзіце, што Windows думае пра адаптары, перш чым напісаць хоць адно правіла. Уласнае злучэнне VPN у Windows звычайна выглядае як аддалены доступ. Кліент трэцяга боку, які стварае свой віртуальны адаптар, часта выглядае як правадны, а значыць, блакаванне, абмежаванае праваднымі адаптарамі, блакуе і тунель.

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 трывала заблакаваны, і пераключальнік увесь час паведамляе пра поспех.

GapWhat leaksControl
Resolver permitted for endpoint lookupEvery name queried while downPin the endpoint as an address, or block non-tunnel DNS
Rules only for IPv4Full IPv6 connectivityAdd the same rules for the other family
Application bound to physical interfaceIts own trafficFirewall 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 называе адаптар.

Падобныя артыкулы