Mi konektis la VPN-klienton sur Windows 11 tekkomputilo, la kahelo iris al Konektita, interna dosierkunhavo malfermiĝis, kaj publika retejo ankoraŭ ŝargiĝis rekte el la oficeja Wi-Fi. Tiu miksaĵo aspektas kiel rompita tunelo. Ĝi estas la normala eligo de profilo, kiu sendas parton de la trafiko tra la VPN kaj lasas la reston sur la fizika adaptilo. Trudita tunelado ŝanĝas, kiun defaŭltan vojon Windows preferas; ĝi ne forigas pli specifajn vojojn kaj ne promesas, ke trafiko haltos kiam la konekto falas. Jen la ordo laŭ kiu mi laboras kiam kliento asertas kovradon: klienta stato, konservita profilo, aplikitaj vojoj, solvilo, poste realaj fluoj.

Komencu ĉe la kliento, poste ĉesu fidi ĝin

La kliento estas la ĝusta loko por komenci nur ĉar ĝi diras al vi, kiu profilo estas aktiva. Malfermu la konektajn ecojn kaj notu la precizan profilnomon, ĉu ĝi kreiĝis por la nuna uzanto aŭ por ĉiuj sur la maŝino, kaj kiun adaptilon montras ncpa.cpl post konekto. Sur mia testa tekkomputilo la adaptilo portis la profilnomon, kio faciligis legi la vojeligon. Sur aliaj maŝinoj ĝi aperas kiel WAN Miniport ero kaj la nomo diras al vi nenion.

Kion la kliento ne povas diri al vi estas kovrado. Konektita kahelo priskribas la staton de la tunelo, ne inventaron de celoj. Trialaj klientoj ankaŭ tenas sian propran agordon, do la denaska Windows-profilo, kaj ĉiu eco, kiun vi legos el ĝi, eble havas nenion komunan kun tio, kion tiu kliento instalas. Se la VPN venis per AnyConnect, OpenVPN GUI, WireGuard aŭ vendista agento, la subaj PowerShell-kontroloj plejparte ne validas kaj vi prefere legu la proprajn split-tunnel kaj enkursigajn agordojn de tiu kliento.

Legu la konservitan profilon, ne la kahelon

Por denaska Windows-profilo (IKEv2, L2TP, SSTP aŭ unu puŝita de MDM) la konservita split-tunnel-decidaĵo estas ununura eco:

Get-VpnConnection -Name 'Office' | Select-Object Name, ServerAddress, SplitTunneling, DnsSuffix

Aldonu -AllUserConnection kiam la profilo kreiĝis por ĉiuj sur la aparato. Sen ĝi vi legas la liston de la nuna uzanto, kiu povas esti malplena aŭ teni alian eron kun simila nomo. Valoro False en SplitTunneling signifas, ke la profilo estis konservita kiel plena tunelo: Windows instalas defaŭltan vojon tra la VPN-adaptilo. True signifas split tunnel, kaj kovrado tiam tute dependas de la vojoj kaj nomosolvaj reguloj, kiujn tiu profilo puŝas.

Traktu tiun valoron kiel agordon, ne kiel observon. Ĝi registras kion la profilo petis ĉe konekto. Windows povas fini kun malsamaj aplikitaj vojoj, pro pli specifa vojo de alia interfaco, politika agordo aŭ resta ero el antaŭa konekto, do la bulea valoro neniam solvas la demandon sola.

Komparu la konservitan valoron kun la aplikita vojreglisto

Post konekto, listigu la vojojn sur la tunela adaptilo anstataŭ rulumi la tutan tabelon:

$vpn = Get-NetAdapter | Where-Object InterfaceDescription -match 'VPN|WAN Miniport'
Get-NetRoute -InterfaceIndex $vpn.ifIndex | Sort-Object DestinationPrefix
Find-NetRoute -RemoteIPAddress 10.20.4.15 | Select-Object -First 1

Find-NetRoute estas la utila duono. Ĝi respondas la demandon, kiun la kliento neniam respondas: por ĉi tiu celo, kiun interfacon kaj kiun fontan adreson Windows efektive uzos? Rulu ĝin por interna gastiganto, publika gastiganto kaj io, kion vi kredas intenca escepto. Plena-tunela profilo devus montri la tunelan interfacon por la publika adreso. Split-tunela profilo kutime montras la fizikan adaptilon tie, dum internaj prefiksoj ankoraŭ solviĝas al la VPN.

Du kaptiloj klarigas plej multajn raportojn «ĝi enkursigas malĝuste». La plej specifa prefikso ĉiam venkas, do /24 sur la fizika adaptilo venkas defaŭltan vojon sur la VPN kiom ajn malalta estas la metriko de la tunelo. Metriko nur solvas egalecojn inter vojoj por la sama prefikso. Kaj IPv4 kaj IPv6 decidiĝas aparte: profilo, kiu kovras 0.0.0.0/0, povas lasi IPv6 sur la loka ligilo, kio igas du-stakan retejon aspekti duone tunelita. Kontrolu Get-NetRoute -AddressFamily IPv6 antaŭ ol konkludi, ke la tunelo estas en ordo.

What you seeMost likely causeCheck next
Public traffic leaves the physical adapter while SplitTunneling reads FalseA more specific route on that adapter wins over the tunnel defaultFind-NetRoute for the exact destination, then look for a /24 or host route on the physical interface
Internal name fails, internal IP worksNo NRPT rule for that namespace, or a broader rule matches firstGet-DnsClientNrptPolicy and the namespace order
A dual-stack site opens directly while IPv4 uses the tunnelThe profile covers only the IPv4 default routeThe IPv6 route table on both interfaces
Routes look right but one app still goes directThe app uses its own proxy, or the client keeps a per-app listThe app's proxy settings and the client's application list

Kontrolu nomsolvadon aparte per la NRPT

Internaj nomoj, kiuj malsukcesas dum internaj IP-adresoj funkcias, montras al solvila politiko, ne al enkursigo. Windows decidas DNS por ĉiu nomspaco per la tabulo de nomosolva politiko, kiu estas sendependa de la vojreglisto:

Get-DnsClientNrptPolicy -Effective | Select-Object Namespace, NameServers
Get-DnsClientServerAddress -InterfaceIndex $vpn.ifIndex

Kiam regulo kongruas kun *.corp.example, demandoj por tiu nomspaco iras al la DNS-serviloj de la tunelo eĉ se la datenvojo al tiuj serviloj restas sur la fizika adaptilo en split-tunela reĝimo. Tio estas la dezajno, kaj tial retumila testo, kiu malfermas publikan retejon, diras al vi nenion pri internaj nomoj. Se la adaptilo listigas la atendatajn servilojn sed serĉoj ankoraŭ iras aliloken, komparu la ordon de la NRPT-reguloj kaj kontrolu, ĉu pli specifa nomspaco kongruas unue.

Kontrolu la fluojn, poste decidu, kion vi efektive petis

Trairu celojn laŭ fiksa ordo por ke rezultoj estu kompareblaj inter maŝinoj: publika adreso, interna adreso, interna nomo kaj unu intenca escepto kiel loka printilo aŭ videovoko. Notu la interfacon kaj fontan adreson, kiujn Find-NetRoute redonas por ĉiu. Post ajna politika ŝanĝo, rekonektu kaj ripetu la samajn kvar kontrolojn; la vojreglisto post rekonekto estas la sola pruvo, ke la nova profilo ekvalidis.

Poste apartigu enkursigon de plenumo. Trudita tunelado preferas la tunelon por kovrita trafiko dum ĝi staras. Ĝi ne estas mortiga ŝaltilo. Se la postulo estas, ke nenio forlasu la maŝinon kiam la tunelo falas, tio devas veni el blokada dezajno: fajroŝirma profilo ligita al tunela stato, ĉiam-ena profilo kun trafikfiltroj aŭ la propra fermo-ĉe-malsukceso opcio de la vendista kliento. Trudita tunelado ankaŭ devas lasi la propran adreson de la VPN-servilo atingebla ekster la tunelo, kaj bloki ĝin nome de «trudi ĉion» estas fidinda maniero ŝlosi vin ekster la konekto, kiun vi provas plenumi.

Antaŭ ol ŝanĝi ion, trairu ĉi tiun liston. Ĉiu ero, kiu malsukcesas, mallarĝigas, kie kuŝas la vera problemo.

  • Profilnomo kaj amplekso konfirmitaj, kun -AllUserConnection uzita por tutmaŝinaj profiloj.
  • SplitTunneling legita kaj traktita kiel agordo anstataŭ pruvo de kovrado.
  • Tuneladaptilaj vojoj listigitaj aparte por IPv4 kaj IPv6.
  • Find-NetRoute rulita por unu publika, unu interna kaj unu escepta celo.
  • NRPT-reguloj kontrolitaj antaŭ ol kulpigi vojojn pro noma malsukceso.
  • Blokada postulo relegita: preferata enkursigo ne samas kiel plenumita blokado.

La decido pri plena aŭ split tunelo apartenas al tiu, kiu posedas la profilon, kaj la enkursigaj notoj de Microsoft priskribas la konduton, kiun Windows plenumas kiam profilo ĝin agordas. Microsoft: trudita kaj split tunelado estas la referenco, kiun mi tenas malfermita legante la eligon.

Rilataj artikoloj