Klienti VPN blokovaní verejným profilom firewallu Windows
Windows zaraďuje adaptér VPN do profilu Verejný, takže vaše pravidlá LAN sa nikdy neuplatnia. Skontrolujte profil, obmedzte jedno prichádzajúce pravidlo na pool a potom overte port.
Tunel je nadviazaný, brána odpovedá na ping a zdieľaný priečinok napriek tomu končí vypršaním časového limitu. Táto kombinácia je málokedy problém smerovania: Windows zaradil podsiev adaptéra VPN do profilu Verejný a každé povoľovacie pravidlo napísané pre Súkromný alebo Doménový profil sa nikdy neuplatnilo. Stretol som sa s tým na notebookoch, ktoré sa do kancelárie dostanú bez problémov, aj na serveroch RRAS, ktoré obsluhujú všetkých ostatných klientov, a oprava je krátka, keď raz pomenujete profil, ktorý je v hre. Tu je poradie, v ktorom pracujem, vrátane kontroly, ktorá vám povie, kedy sa máte zastaviť pred ďalším krokom.
Zistite, na ktorom profile prevádzka skutočne prichádza
Firewall Windows nemá jediný globálny režim. Každé pripojené rozhranie nesie kategóriu a prichádzajúce pakety sa filtrujú podľa kategórie rozhrania, na ktorom prichádzajú, takže o tom, čo klient v tuneli dosiahne, rozhoduje profil adaptéra VPN, nie adaptér Wi-Fi alebo Ethernet vedľa neho. Prečítajte si obe skutočnosti, kým čokoľvek zmeníte:
Get-NetConnectionProfile | Select-Object Name, InterfaceAlias, NetworkCategory, IPv4Connectivity
Get-NetFirewallProfile -Name Public | Select-Object Name, Enabled, DefaultInboundAction
Pri štandardnej inštalácii OpenVPN alebo WireGuard sa adaptér VPN zjaví ako neidentifikovaná sieť a skončí vo Verejnom profile, čo je predvolená hodnota pre každú sieť, ktorú Windows nedokáže klasifikovať: žiadny radič domény cez ňu neodpovedal a žiadny profil brány nezodpovedal. Názov rozhrania tu nehrá rolu, takže nazvať adaptér „VPN“ alebo „Corp“ nič nezmení. DomainAuthenticated vyžaduje počítač pripojený k doméne , ktorý cez toto rozhranie skutočne dosiahne na radič domény; rozdelený tunel, ktorý prenáša jedinú podsiev, túto požiadavku nesplní.
Ak je pravidlo, ktoré potrebujete, už obmedzené na pool VPN a už platí pre kategóriu, ktorú ste práve čítali, zastavte sa tu: filtrovanie nie je vaša vrstva a ďalším miestom, kam sa pozrieť, je konfigurácia služby. Tá kontrola zaberie desať sekúnd a ušetrí hodinu úprav pravidiel. Názvy kategórií a to, čo každá pokrýva, sú zdokumentované v referenčnej dokumentácii Get-NetConnectionProfile.
Potvrďte filtrovanie, nie smerovanie, kým začnete upravovať pravidlá
Ping je slabý test. ICMP môže prechádzať, zatiaľ čo port služby sa zahadzuje, a hostiteľ môže odpovedať z LAN, pričom odmieta rovnakú požiadavku cez tunel. Otestujte port, ktorý klient potrebuje, z klienta:
Test-NetConnection 10.8.0.1 -Port 445
Test-NetConnection 10.8.0.1 -Port 3389 -InformationLevel Detailed
Ak test portu zlyhá, oddeľte obe vrstvy. Porucha tunela alebo trasy sa zvyčajne prejaví tak, že z adresy brány nepríde vôbec žiadna odpoveď, zatiaľ čo zahodenie firewallom ukáže bránu, ktorá odpovedá, a port služby, ktorý neodpovedá. Na serveri Windows, ktorý publikuje pool cez RRAS, spustite rovnaký test z klienta a prečítajte si profil samotného servera: rozhranie RAS môže sedieť v kategórii, ktorej prichádzajúce pravidlá nikdy nespomínajú rozsah klientov, a preto stroj obsluhuje svoju LAN a odmieta každého klienta v tuneli.
Keď je výsledok stále nejednoznačný, zaznamenajte zahodenia pre profil, ktorý je v hre, a prečítajte si ich:
Set-NetFirewallProfile -Name Public -LogBlocked True `
-LogFileName "$env:systemroot\system32\LogFiles\Firewall\pfirewall.log"
Záznamy, ktoré uvádzajú adresu a port klienta s DROP, sú preukazné a tiež vám povedia, ktoré pravidlo chýbalo. Protokol bez jediného záznamu, zatiaľ čo sa SYN klienta nikdy neobjaví, ukazuje pred hostiteľa, takže sa vráťte k tunelu, pravidlu NAT alebo trase poolu, kým sa dotknete ďalšieho objektu firewallu.
Obmedzte jedno prichádzajúce pravidlo na pool klientov
Oprava je jediné prichádzajúce povoľovacie pravidlo, ktorého vzdialená adresa je pool, nie celý svet. Zo zvýšenej relácie:
New-NetFirewallRule -DisplayName "VPN clients - SMB 445" `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort 445 `
-RemoteAddress 10.8.0.0/24 -Profile PublicKeď je službou jediný binárny súbor, dajte prednosť pravidlu obmedzenému na program s -Program namiesto zoznamu portov; to obmedzí výnimku aj na proces, aj na zdrojový rozsah.
Voľba profilu je miesto, kde sa tá istá chyba robí opačným smerom. -Profile Public stačí, keď je adaptér Verejný a zostáva Verejný. -Profile Any je obhájiteľné, keď služba musí fungovať bez ohľadu na to, ako Windows adaptér klasifikuje, ale len kým vzdialený rozsah zostáva. Čo nikdy obhájiteľné nie je, je -RemoteAddress Any vo Verejnom profile: také pravidlo nasleduje notebook do každej kaviarne a hotelovej siete, ku ktorej sa pripojí, a otvára port komukoľvek, kto túto podsiev zdieľa.
Zapíšte pool vedľa pravidla. -RemoteAddress 10.8.0.0/24 potichu prestane zodpovedať v deň, keď sa pool VPN prečísluje, a porucha vyzerá presne ako pôvodná chyba, a preto stojí druhé popoludnie. Pomenujte pravidlá podľa služby a zdrojového rozsahu, držte ich pohromade s -Group, a znova ich čítajte, kedykoľvek sa definícia poolu zmení. Inventár pravidiel, ktorý prejdete na jednej obrazovke, je lepší než správne pravidlo, ktoré nikto nenájde.
Meňte kategóriu len vtedy, keď je kategória rozhodnutím
Prepnutie rozhrania na Súkromný tiež funguje a je to zlá predvolená voľba. Profil Súkromný nesie dlhý zoznam vstavaných povoľovacích pravidiel pokrývajúcich zdieľanie súborov a tlačiarní, zisťovanie siete, vzdialenú plochu a podľa základne aj ďalšie, takže preklasifikovanie adaptéra VPN ich zapne všetky naraz pre každého klienta v tuneli. Jedno obmedzené pravidlo udeľuje jednu službu jednému rozsahu. Na notebooku, ktorý sa pripája aj k nedôveryhodným sieťam, ten rozdiel nie je kozmetický.
Sú prípady, keď je klasifikácia skutočne chybná: trvalo zapnutý tunel alebo tunel medzi lokalitami, ktorý prenáša kancelársku podsiev, je dôveryhodná infraštruktúra a označenie tohto adaptéra ako Súkromný je legitímne dizajnové rozhodnutie urobené raz zásadou, nie pre každý tiket. Keď to urobíte, urobte to výslovne:
Set-NetConnectionProfile -InterfaceAlias "OpenVPN TAP-Windows6" -NetworkCategory PrivateNa spravovanom zariadení najprv skontrolujte, či nastavenie vlastní zásada skupiny alebo základňa MDM. Ak áno, lokálna zmena sa pri ďalšej aktualizácii vráti a gpresult /h uvedie zásadu, ktorá ju vlastní; opravte to tam, nie na koncovom bode.
Overte z oboch koncov a zanechajte stopu
Overte tok, ktorý používateľ nahlásil, z klienta, po zmene:
Test-NetConnection 10.8.0.1 -Port 445
Get-NetFirewallRule -DisplayName "VPN clients - SMB 445" | Get-NetFirewallAddressFilter | Select-Object RemoteAddress
Get-NetFirewallRule -DisplayName "VPN clients - SMB 445" | Get-NetFirewallPortFilter | Select-Object Protocol, LocalPort
Potom uzavrite slučku pri veciach, ktoré sa budúci týždeň pokazia. Reštartujte hostiteľa a otestujte znova, pretože pravidlo obmedzené na nesprávny profil funguje ďalej, kým sa adaptér nevráti v inej kategórii. Otestujte z druhého klienta, pretože jeden klient so zastaraným lease môže skryť nesúlad poolu. Spočítajte pravidlá, ktoré ste pridali, proti tým, ktoré ste odobrali, pretože prekrývajúce sa výnimky sú spôsob, ako sa z opravy na dva riadky stane filtrovacia politika, ktorú nikto nemôže skontrolovať.
Kým to vyhlásite za hotové:
- Profil uvedený v pravidle je profil rozhrania, na ktorom prevádzka prichádza.
- Vzdialený rozsah je pool VPN a tento pool zodpovedá tomu, čo server skutočne prideľuje.
- Žiadne pravidlo, ktoré ste pridali, nepoužíva
-RemoteAddress Anyvo Verejnom profile. - Nič nebolo zakázané, aby test prešiel, a každá zmena kategórie zaznamenáva, kto ju schválil.