Zakaj ena podmreža še vedno obide privzeto pot VPN
Ena podmreža, ki gre neposredno pod polnim tunelom, običajno pomeni, da zmaga daljša predpona, ne uhajanje. Preverite polprivzete poti, pravila politike in izjeme profila.
Preklopite VPN v polni tunel, večina prometa uboga, nato pa en naslov odgovori neposredno — tiskalnik, NAS, preskočni gostitelj na 10.x. Očitno branje je, da tunel pušča, zato znižate metriko privzete poti in nič se ne spremeni. Ta neuspešni poskus je namig: privzeta pot je rezerva, ne razsodba. Iskanje poti vzame najdaljšo ujemajočo predpono, preden sploh primerja metrike, zato /24 še naprej premaguje /0, ne glede na število, ki ga pripnete kateri koli od njiju. Ko je ta vrstni red jasen, je uhajanje običajno pot, ki jo je nekdo namerno namestil, ali predpona, ki je odjemalec ni nikoli nameraval pokriti.
Kaj privzeta pot dejansko obljavlja
0.0.0.0/0 se ujema z vsakim ciljem IPv4 z nič biti specifičnosti. Obstaja zato, da lahko gostitelj doseže vse, česar njegova tabela ne opiše bolje. Pot na 192.168.1.0/24 nosi 24 ujemajočih bitov, zato za 192.168.1.40 zmaga, preden kdo primerja metrike, administrativno razdaljo ali kar koli odjemalec imenuje polje prioritete. Isto pravilo velja v Linux FIB, v usmerjevalni tabeli Windows in v skladu BSD za macOS.
V običajnem LAN je to vedenje prednost. Lokalna podmreža je priključena neposredno, tiskalnik še naprej deluje, medtem ko tunel nosi vaše brskanje, in nič ni napačno konfigurirano. Vprašanje, ki si ga je vredno zastaviti, ni, zakaj ta naslov gre neposredno, ampak katera predpona v kateri tabeli se z njim ujema in kdo jo je tam postavil.
Polprivzete poti, ali zakaj je privzeti vnos lahko videti nedotaknjen
Najčistejši primer je redirect-gateway def1 v OpenVPN. Namesto da bi izbrisal in zamenjal privzeto pot, doda 0.0.0.0/1 in 128.0.0.0/1. Skupaj par pokrije ves IPv4, vsaka predpona je daljša od /0 in obe premagata usmerjevalnikovo privzeto pot, medtem ko jo pustita na mestu. Zaženite nato seznam poti in prvotna privzeta pot je še vedno tam, še vedno kaže na vaš prehod; preprosto ni nikoli izbrana za internetne cilje.
wg-quick iz WireGuarda doseže enak rezultat s političnim usmerjanjem. Ko AllowedIPs pokriva 0.0.0.0/0, ustvari svojo tabelo, pošlje označene pakete tja in doda pravilo, ki ignorira predpono ničelne dolžine glavne tabele. Glavna tabela obdrži privzeti vnos, pravila pa odločijo, da se za promet, ki ga ima vmesnik, najprej vpraša tabela tunela.
Oba načrta potrebujeta natanko eno pot zunaj tunela: pot gostitelja na naslov samega strežnika VPN prek prvotnega prehoda. Brez nje bi odjemalec skušal prenašati pakete, ki gradijo tunel, znotraj tunela, in povezava se ne bi nikoli končala. Zato je pot, ki ni tunelska, v vaši tabeli običajna tudi pri strogem profilu polnega tunela. Poti, ki jih velja postaviti pod vprašaj, so tiste, ki pokrivajo cilje, ki so vam res pomembni.
Metrike odločajo o izenačenju, predpone odločajo o zmagovalcih
Metrike se primerjajo le med kandidati, ki se enako dobro ujemajo s ciljem. V Linuxu ip route get 10.20.5.9 izpiše zmagovalca skupaj z njegovo tabelo, in ip route show table all navede kandidate, vključno z morebitnimi polprivzetimi potmi in vsako tabelo, na katero kaže pravilo. V Windows Find-NetRoute -RemoteIPAddress 10.20.5.9 vrne izbrano pot in izvorni naslov, medtem ko Get-NetRoute prikaže surovo tabelo — a učinkoviti strošek je metrika poti plus metrika vmesnika, zato lahko počasen vmesnik izgubi izenačenje, ki se zdi, da ga dobiva.
Trije primeri pokrivajo večino tega, kar boste videli:
- Isti cilj, /24 proti /0: /24 zmaga po dolžini predpone, kar koli pravijo metrike.
- Isti cilj, dve /24 z različnimi metrikami: zmaga nižja učinkovita metrika.
- Isti cilj, dve tabeli, ena izbrana s pravilom politike: pravilo najprej izbere tabelo in primerjava predpon se zgodi v njej.
Tretji primer je mesto, kjer se konča večina teh poročil. Linuxov ip rule ali filter prometa VPN v Windows lahko pošlje promet v tabelo, ki ni nikoli vsebovala privzete poti tunela, glavna tabela pa je ves čas videti brezhibna.
Kdo običajno ima v lasti obhod
Začnite s profilom, ne s tabelo. Konfiguracije split-tunnel in nastavitve VPN na aplikacijo namerno puščajo poimenovane predpone zunaj tunela; delovni profil, ki ščiti eno zasebno podmrežo in spusti splošno brskanje neposredno, se obnaša tako, kot je bil zasnovan, in njegovo prepisovanje zlomi politiko, ki naj bi jo uveljavljal. Microsoftovo navodilo za usmerjanje VPN potegne isto mejo med v tunel prisiljenim prometom in izrecnimi izjemami, kar ga naredi za koristno navzkrižno preverjanje pred urejanjem česar koli.
Nato poiščite ostanke. Pot, ki kaže na vmesnik, ki ne obstaja več, ali na naslov iz prejšnjega omrežja, se pojavi po prihodu in odhodu priklopnih postaj, adapterjev USB in mostov za vsebnike. Enkratno brisanje ni konec: profili povezave NetworkManager, datoteke netplan in trajne poti Windows jo ob naslednji povezavi ali zagonu znova namestijo, zato pred urejanjem česar koli poiščite datoteko ali profil, ki jo ima v lasti.
Nato preverite IPv6 ločeno. ip -6 route in Get-NetRoute -AddressFamily IPv6 hranita ločeno stanje, ločene privzete poti in ločeno vedenje odjemalca. Revizija samo IPv4 ne pove ničesar o gostitelju z dvojnim skladom, ki tiho daje prednost izvorni poti IPv6, in samo to lahko naredi, da je odjemalec videti kot split-tunnel.
Potrdite z lastnim tokom aplikacije
Zabeležite cilj, ki ga aplikacija dejansko uporablja, nato pa sistem vprašajte za pot, ki bi jo ubral z izvornega naslova, na katerega se ta aplikacija veže. ip route get 10.20.5.9 from 192.168.1.40 na to odgovori v Linuxu; Find-NetRoute -RemoteIPAddress 10.20.5.9 plus lokalni naslov to stori v Windows. Primerjajte rezultat s tem, kar trdi profil. Stran z javnim IP v brskalniku preizkusi en cilj na enem protokolu in ne pove ničesar o zasebnem naslovu, s katerega se je pritožba začela.
Popravite najožji objekt, ki pojasnjuje razliko. Če je izjema odobrena, zapišite predpono in jo pustite; če ni, odstranite pot ali dodajte izrecno ožjo pot skozi tunel, namesto da znižate metriko privzete poti. Znižanje metrike ne more prehiteti daljše predpone, urejanje privzete poti, medtem ko imata dve poti /1 v lasti internetno pot, pa tudi nič ne spremeni.
Nato znova povežite tunel in ponovite isto poizvedbo. Odjemalci ob vsaki povezavi znova namestijo poti, zato sprememba, ki zdrži le do naslednjega rokovanja, ni preizkušena. Če pot še vedno odstopa, so preostali osumljenci pravilo politike, druga tabela ali filter na strani odjemalca — ne privzeta pot.
- Imenujte cilj in izvorni naslov, ki ju aplikacija res uporablja.
- Izpišite zmagovalno pot z
ip route getaliFind-NetRoute. - Preverite, ali ima internetno pot v lasti par /1 ali tabela politike.
- Naštejte vsako predpono, daljšo od /0, ki se ujema s ciljem.
- Ponovite preverjanje IPv6 ločeno.
- Izsledite preostalo pot nazaj do datoteke, profila ali filtra, ki jo namesti.
- Znova se povežite in znova zaženite poizvedbo, preden to razglasite za popravljeno.
Če se vseh sedem strinja s profilom, tunel dela natanko to, za kar je bil konfiguriran, in popravek spada v profil, ne v metriko.