Itanong kung ang firewall ng Windows lang ang maaaring gumanap bilang pamatay-susi at makakakuha ka ng dalawang kumpiyansa at magkasalungat na sagot. Sinasabi ng isa na ang tuntunin ayon sa uri ng interface ang gumagawa ng lahat; sinasabi ng isa pa na hindi ito gumagana nang walang script. Pareho silang naglalarawan ng kalahati ng iisang mekanismo. Maaaring ipahayag ng firewall ang pagharang, at kung talagang nabigo itong sarado ay nakasalalay sa tatlong bagay: kung paano inuuri ng Windows ang tunnel adapter, kung nabubuhay ang eksepsiyon sa dulo, at kung sakop ang paglutas ng pangalan at IPv6. Magkamali sa alinman at ang makina ay tutulo o mawawala ang lahat ng koneksiyon.

Tatlong kondisyon, sa ganitong pagkakasunod-sunod

Ang unang kondisyon ay klasipikasyon, at ito ang nagpapasya kung ang tuntuning gusto mo ay maipahahayag man lang. Maaaring limitahan ang mga tuntunin ng firewall ng Windows ayon sa uri ng interface: may kawad, walang kawad, o malayong pag-access. Gumagana lamang ang patakarang humaharang sa papalabas na trapiko sa mga pisikal na uri habang pinapayagan ang tunnel kung kinikilala ng Windows ang tunnel bilang malayong pag-access.

Ang ikalawang kondisyon ay ang eksepsiyon sa dulo. Bago magkaroon ng anumang tunnel, kailangang maabot ng kliyente ang server ng VPN sa pamamagitan ng pisikal na adapter, kaya hinaharang ng buong pagbabawal sa adapter na iyon ang mismong koneksiyong magpapawalang-saysay sa pagharang. Dapat pangalanan ng eksepsiyon ang server at ang port nito, at dapat lumabas ang packet sa pisikal na gateway sa halip na pumasok sa tunnel na hindi pa nakataas.

Ang pangatlo ay saklaw. Ang hanay ng tuntuning humaharang sa IPv4 at nakakalimot sa IPv6, o nagpapahintulot sa lokal na resolver na hanapin ang dulo at sa gayon ay nagpapahintulot sa bawat iba pang paghahanap, ay nabigo nang bukas sa mismong bintanang umiiral ang pamatay-susi para sakop. Butas ito sa disenyo, hindi depekto sa firewall. Ito rin ang butas na nakakaligtas sa bawat pagsubok sa mesa.

Ang klasipikasyon ang unang tarangkahan

Tingnan kung ano ang iniisip ng Windows tungkol sa mga adapter bago magsulat ng kahit isang tuntunin. Ang katutubong koneksiyon ng VPN sa Windows ay karaniwang lumalabas bilang malayong pag-access. Ang kliyente ng third party na gumagawa ng sariling virtual adapter ay madalas lumalabas na may kawad, ibig sabihin hinaharang din ng pagbabawal na limitado sa mga adapter na may kawad ang tunnel.

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

Sinasabi ng ikatlong utos kung may bisa na ang default na pagharang sa papalabas na trapiko, na nagbabago sa buong anyo ng disenyo. Kung ang default ay pagharang na, nagsusulat ka ng mga tuntunin ng pahintulot hindi ng mga eksepsiyon sa isang mapagbigay na batayan, at mas madaling isipin iyon.

Kung ang iyong tunnel adapter ay nag-uulat na may kawad, ang firewall lang ay hindi ang tamang kasangkapan para sa disenyong nabigo nang sarado, at walang pagsasaayos ng tuntunin ang makapagbabago niyon. Ito ang kaso kung saan tama ang ikalawang opinyon sa bawat thread ng forum.

Ang eksepsiyon sa dulo ay kailangan ng ruta at hindi lang tuntunin

Ipagpalagay na gumagana ang klasipikasyon. Ang eksepsiyon ay binubuo ng dalawang piraso, at nakatira sila sa magkaibang subsystem. Pinapayagan ng tuntunin ng firewall ang trapiko; pinapalabas ito ng ruta ng host sa tamang interface habang nakababa ang tunnel.

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

Kung walang ruta, tumutulong lang ang eksepsiyon habang nakaturo pa ang default na ruta sa pisikal na gateway. Kapag nag-install ang kliyente ng sarili nitong default na ruta at pagkatapos ay namatay, wala nang makatuwirang patutunguhan ang mga pinapayagang packet at hindi na maibabalik ang koneksiyon. Mukhang sirang kliyente ang kabiguang iyon at sa totoo lang kulang na ruta.

Panatilihing kasikip ng pinapayagan ng kliyente ang eksepsiyon. Isang address at isang port ang nasusuri; ang saklaw na sumasakop sa buong network ng provider ay hindi. Pinapayagan din ng mas malawak na tuntuning iyon ang anumang iba pang naka-host sa parehong provider, na karaniwang higit pa sa intensiyon mo.

Ang DNS at IPv6 ang lugar kung saan nabigo ito nang bukas

Ang paglutas ng pangalan ang klasikong pagtagas. Kung ang dulo ay hostname, kailangang lutasin ito ng kliyente bago umiral ang tunnel, ibig sabihin kailangang payagan ang pisikal na adapter na maabot ang resolver. Ang parehong pahintulot ay nagpapalabas ng bawat iba pang paghahanap habang nakababa ang tunnel, at sapat na ang isang paghahanap para ihayag kung ano ang pupuntahan mo.

Ang IPv6 ang pangalawa. Ang mga tuntuning isinulat para sa IPv4 ay hindi sumasakop sa kabilang pamilya, at maraming kliyente ang nag-iinstall lang ng rutang IPv4. Kaya ang makinang may katutubong koneksiyon na IPv6 ay maaaring magpatuloy sa pakikipag-usap sa internet habang matatag na naka-harang ang panig IPv4, at nag-uulat ng tagumpay ang pamatay-susi sa buong panahon.

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

Ang ikatlong hilera ay dapat unawain sa halip na iwasan. Nagpapasya ang firewall tungkol sa mga packet, hindi tungkol sa kung aling interface ang hiniling ng aplikasyon, at ang programang tahasang nagbibigkis ay maaaring mahirap pigilan. Ito ay argumento para sa pamatay-susi sa panig ng kliyente na gumagana sa ilalim ng aplikasyon, hindi para sa mas maraming tuntunin.

Subukan sa pamamagitan ng paghinto sa kliyente, hindi sa paghila ng kawad

Ang tanging makabuluhang pagsubok ay ang gumagaya sa kabiguang pinoprotektahan mo. Ihinto ang serbisyo, patayin ang proseso, o huwag paganahin ang adapter na ginawa ng kliyente, pagkatapos ay subukang maabot ang internet at isang pangalan:

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

Dapat mabigo ang tatlo. Kung magtagumpay ang una, walang bisa ang pagharang; kung magtagumpay ang pangalawa sa lugar na binigo ng una, may pagtagas ka ng DNS; kung magtagumpay ang pangatlo, hindi sakop ang IPv6. Itinuturo ng bawat resulta ang eksaktong isa sa mga butas sa itaas.

Ulitin ang pagsubok pagkatapos ng pagtulog at paggising, dahil maaaring magbago ang profile ng firewall kapag nagpasya ang Windows na pampubliko o pribado ang isang network, at sinusundan ito ng mga tuntuning limitado sa profile. Ang disenyong tumatagal sa mesa at nabigo sa tren ay disenyong sinubukan isang beses.

Kung ginagawang imposible ng tarangkahan ng klasipikasyon o ng pangangailangan sa DNS ang diskarteng firewall-lang, ang pamatay-susi sa panig ng kliyente ang tapat na sagot. Kung sa router nagtatapos ang tunnel, dapat pag-aari ng router ang patakaran, dahil sakop ng isang tuntunin doon ang bawat aparato sa likod nito at hindi nakadepende sa kung paano pinapangalanan ng Windows ang adapter.

Kaugnay na mga artikulo