Pajautājiet, vai Windows ugunsmūris viens pats var darboties kā avārijas slēdzis, un saņemsit divas pārliecinātas un nesavienojamas atbildes. Viena saka, ka saskarnes tipa noteikums paveic visu darbu; otra – ka bez skriptiem tas nestrādā. Abas apraksta pusi no tā paša mehānisma. Ugunsmūris var izteikt bloķēšanu, un tas, vai rezultāts tiešām neizdodas slēgti, ir atkarīgs no trim lietām: kā Windows klasificē tuneļa adapteri, vai galapunkta izņēmums izdzīvo un vai ir pārklāta nosaukumu izšķiršana un IPv6. Kļūdieties kaut vienā un iekārta vai nu noplūdīs, vai zaudēs visu savienojumu.

Trīs nosacījumi, šajā secībā

Pirmais nosacījums ir klasifikācija, un tā izlemj, vai vēlamo noteikumu vispār var izteikt. Windows ugunsmūra noteikumus var ierobežot pēc saskarnes tipa: vadu, bezvadu vai attālināta piekļuve. Politika, kas bloķē izejošo datplūsmu fiziskajos tipos un atļauj tuneli, darbojas tikai tad, ja Windows atzīst tuneli par attālinātu piekļuvi.

Otrais nosacījums ir galapunkta izņēmums. Pirms jebkura tuneļa pastāvēšanas klientam jāsasniedz VPN serveris pa fizisko adapteri, tāpēc pilnīgs bloķējums šim adapterim novērš tieši to savienojumu, kas bloķējumu padarītu nevajadzīgu. Izņēmumā jānorāda serveris un tā ports, un pakešai jāiziet pa fizisko vārteju, nevis vēl necelta tunelī.

Trešā ir pārklājums. Noteikumu kopums, kas bloķē IPv4 un aizmirst IPv6, vai atļauj vietējam atrisinātājam meklēt galapunktu un tādējādi atļauj jebkuru citu meklēšanu, atklāti neizdodas tieši tajā logā, kura dēļ avārijas slēdzis pastāv. Tā ir projektēšanas nepilnība, nevis ugunsmūra kļūda. Tā ir arī nepilnība, kas pārdzīvo katru testu uz galda.

Klasifikācija ir pirmie vārti

Apskatiet, ko Windows domā par adapteriem, pirms rakstāt kaut vienu noteikumu. Vietējais Windows VPN savienojums parasti parādās kā attālināta piekļuve. Trešās puses klients, kas veido savu virtuālo adapteri, bieži parādās kā vadu, kas nozīmē, ka bloķējums, kas attiecas uz vadu adapteriem, bloķē arī tuneli.

Get-NetConnectionProfile | Select-Object Name,InterfaceAlias,NetworkCategory
Get-NetAdapter | Select-Object Name,InterfaceDescription,Status,ifIndex
Get-NetFirewallProfile | Select-Object Name,Enabled,DefaultOutboundAction

Trešā komanda parāda, vai jau ir spēkā noklusējuma izejošās datplūsmas bloķējums, kas maina visu dizaina formu. Ja noklusējums jau ir bloķējums, jūs rakstāt atļaujas noteikumus, nevis izņēmumus atļaujošai bāzei, un tas ir daudz vieglāk apdomājams stāvoklis.

Ja jūsu tuneļa adapteris ziņo kā vadu, viens ugunsmūris nav pareizais rīks slēgti neizdošam dizainam, un nekāda noteikumu pielāgošana to nemainīs. Šis ir gadījums, kad otrs viedoklis katrā foruma pavedienā ir pareizs.

Galapunkta izņēmumam vajag maršrutu, ne tikai noteikumu

Pieņemsim, ka klasifikācija darbojas. Izņēmums sastāv no divām daļām, un tās dzīvo dažādās apakšsistēmās. Ugunsmūra noteikums atļauj datplūsmu; resursdatora maršruts liek tai iziet pa pareizo saskarni, kamēr tunelis ir lejā.

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

Bez maršruta izņēmums palīdz tikai tikmēr, kamēr noklusējuma maršruts vēl rāda uz fizisko vārteju. Kad klients instalē savu noklusējuma maršrutu un pēc tam nomirst, atļautajām pakešām nav kur saprātīgi doties un savienojumu nevar atjaunot. Šī neveiksme izskatās kā salauzts klients un patiesībā ir trūkstošs maršruts.

Turiet izņēmumu tik šauru, cik klients pieļauj. Viena adrese un viens ports ir pārskatāmi; diapazons, kas aptver visu pakalpojumu sniedzēja tīklu, nav. Šis plašākais noteikums atļauj arī visu citu, kas mitināts pie tā paša sniedzēja, un tas parasti ir vairāk, nekā jūs domājāt.

DNS un IPv6 ir vietas, kur tas atklāti neizdodas

Nosaukumu izšķiršana ir klasiskā noplūde. Ja galapunkts ir resursdatora nosaukums, klientam tas jāizšķir pirms tuneļa pastāvēšanas, kas nozīmē, ka fiziskajam adapterim jāļauj sasniegt atrisinātāju. Tā pati atļauja izlaiž jebkuru citu meklēšanu, kamēr tunelis ir lejā, un viena meklēšana ir pietiekama, lai atklātu, ko grasījāties apmeklēt.

IPv6 ir otrais. Noteikumi, kas rakstīti IPv4, neaptver otru saimi, un daudzi klienti instalē tikai IPv4 maršrutus. Tāpēc iekārta ar vietēju IPv6 savienojumu var turpināt runāt ar internetu, kamēr IPv4 puse ir stingri bloķēta, un avārijas slēdzis visu laiku ziņo par panākumiem.

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

Trešā rinda ir vērta saprašanas, nevis apiešanas. Ugunsmūris lemj par pakešām, nevis par to, kuru saskarni lietotne lūdza izmantot, un programmu, kas skaidri piesaistās, var būt grūti savaldīt. Tas ir arguments par labu klienta puses avārijas slēdzim, kas darbojas zem lietotnes, nevis vairāk noteikumu.

Testējiet, apturot klientu, nevis izraujot kabeli

Vienīgais jēgpilnais tests ir tas, kas atdarina neveiksmi, no kuras sargājaties. Apturiet pakalpojumu, nogaliniet procesu vai atspējojiet klienta izveidoto adapteri, pēc tam mēģiniet sasniegt internetu un nosaukumu:

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

Visiem trim vajadzētu neizdoties. Ja pirmais izdodas, bloķējums nav spēkā; ja otrais izdodas tur, kur pirmais neizdevās, jums ir DNS noplūde; ja trešais izdodas, IPv6 nav pārklāts. Katrs rezultāts norāda tieši uz vienu no iepriekš minētajām nepilnībām.

Atkārtojiet testu pēc miega un pamošanās, jo ugunsmūra profils var mainīties, kad Windows nolemj, ka tīkls ir publisks vai privāts, un uz profilu attiecinātie noteikumi tam seko. Dizains, kas notur uz galda un neizdodas vilcienā, ir vienreiz pārbaudīts dizains.

Ja klasifikācijas vārti vai DNS prasība padara tikai-ugunsmūra pieeju neizmantojamu, klienta puses avārijas slēdzis ir godīgā atbilde. Ja tunelis tā vietā beidzas maršrutētājā, politikai jāpieder maršrutētājam, jo viens noteikums tur aptver katru ierīci aiz tā un nav atkarīgs no tā, kā Windows nosauc adapteri.

Saistītie raksti