Pravidlo zní přesně: povol místní provoz v soukromém profilu a v tom veřejném jen provoz VPN. Není, protože síťový profil určuje, která sada pravidel brány firewall se použije, a neříká nic o tom, který adaptér paket přenesl. Považovat název profilu za požadavek na cestu je chyba, kvůli které návrh omezeného odchodu vypadá hotový, i když není.

Nejprve zapište toky, pak rozhodněte, který mechanismus může každý z nich skutečně vynutit. Ten seznam toků je jediný artefakt, který přežije příští změnu pravidel.

Kategorie volí pravidla, ne trasy

Když Windows klasifikuje síť jako veřejnou nebo soukromou, brána firewall použije sadu pravidel nakonfigurovanou pro tento profil. Klasifikace následuje síť, ke které se adaptér připojil, a sada pravidel rozhoduje, co je na ní povoleno. Žádný z těchto faktů nezávisí na tom, zda provoz aplikace použil tunel. Právě tato nezávislost je celá obtíž.

Volbu cesty dělá směrování, přes metriku rozhraní a prefix, který tunel nainstaluje. Profil proto může být označen jako veřejný, zatímco spojení aplikace jde fyzickou cestu, a brána firewall přesto ohlásí, že byla použita veřejná sada pravidel.

Proto pravidlo omezené na profil nemůže znamenat jen tunel. Obě vlastnosti rozhodují různé komponenty a jedna nemůže zastoupit druhou.

FlowWhat decides itWhat a rule can enforce
VPN client to its endpointRouting plus the outer transportAllow the client process before the tunnel exists
Application to an internet hostInterface metric and prefix lengthBlock the process unless the tunnel interface is up
Application to a LAN hostLocal subnet routeAllow one destination, not the whole category

Explicitní blok převáží užší povolení

Pokyny Microsoftu k pravidlům brány firewall rozlišují povolení jako výjimku z výchozí akce blokování od explicitního bloku, který je v rozporu s povolením. Explicitní bloky tento konflikt vyhrávají a odchozí pravidla se řídí stejnou prioritou.

Populární recept přidat pravidlo blokující vše a spolehnout se na užší povolení umístěné nad ním tedy nedělá to, co jeho autor očekává. Windows Firewall neřeší konflikt podle pořadí pravidel přiděleného správcem. Blok se prostě použije a připojující se aplikace ohlásí vypršení časového limitu. Pravidlo, které vypadalo jako výjimka, nikdy nebylo ve hře.

Podporovaný tvar je zásada výchozího zamítnutí se schválenými pravidly povolení, kde každé povolení pojmenovává program, službu nebo cíl dostatečně přesně na to, aby šlo zkontrolovat. Takový návrh projde auditem, protože každá výjimka je viditelná a žádná nezávisí na pořadí vytvoření.

Dvě pravidla, která si odporují, jsou horší než jedno pravidlo, protože výsledné chování je zároveň správné a nevysvětlitelné.

Dejte odchozí zásadě jediného vlastníka

Podporovaný klient VPN už udržuje vlastní chování blokování a vlastní výjimky pro koncové body. Přidání nekoordinovaných ručních pravidel může tohoto klienta uvěznit mimo tunel, který potřebuje k nastavení, nebo nechat otevřenou druhou cestu, které si nikdo nevšiml.

Rozhodněte, komu odchozí zásada patří, dřív než začnete psát pravidla: vlastní konfiguraci klienta, spravované zásadě brány firewall, nebo dokumentovanému místnímu seznamu výjimek s vlastníkem. Potom sladěte vrstvy, místo abyste vrstvili experimenty, dokud se něco nepřipojí. Jmenovaný vlastník je také ten, koho se ptáte, když se dvě vrstvy neshodnou.

Zachovejte záchranný kanál, než cokoli změníte. Vzdálený stroj uzamčený mimo vlastní cestu správy je horší výsledek než mezera v zásadě, kterou jste zavírali. Pravidlo obnovy se snáze obhajuje, když je předem zapsané, a snáze se najde, když se změna pokazí v hodinu, kterou nikdo nemá rád.

Otestujte čtyři výsledky místo čtení štítku

Zásada je jen tak dobrá, jak dobře rozlišuje případy, takže štítek profilu berte jako výchozí bod, ne jako výsledek. Čtyři výsledky řeknou, zda funguje: zamýšlený požadavek do LAN uspěje, pokrytý požadavek na internet uspěje, zakázaný přímý požadavek selže a případ selhání tunelu se chová podle návrhu, místo aby tiše ustoupil. Zapište čtyři výsledky vedle změny pravidel. Testovací plán se čtyřmi pojmenovanými případy je dost krátký na to, aby se spouštěl pokaždé, a dost konkrétní na to, aby hlasitě selhal.

Get-NetConnectionProfile | Select-Object Name,NetworkCategory,InterfaceAlias
Get-NetFirewallProfile | Select-Object Name,DefaultOutboundAction
Get-NetFirewallRule -Direction Outbound -Enabled True | Where-Object Action -eq Block |
  Select-Object DisplayName,Profile

První příkaz ukazuje, jak je každá připojená síť klasifikována, což často není to, co člověk, který pravidlo psal, předpokládal. Druhý ukazuje výchozí akci pro každý profil a třetí vypisuje povolené odchozí bloky, včetně těch, které tiše přebijí užší povolení.

Spusťte čtyři případy znovu po změně sítě, protože profil může být překlasifikován, když se stroj připojí k jiné síti. Shodný štítek profilu není důkaz, že cesta byla ta, kterou jste zamýšleli.

Související články