Dostizanje privatnog prefiksa kroz VPN je zahtjev s trajanjem: vrijedi dok je ta veza upotrebljiva, a prestaje kada i veza prestane. Login skripta to ne može izraziti, jer su prijava i podizanje tunela različiti trenuci, a tunel koji postoji pri prijavi možda nije onaj koji nosi promet minutu kasnije. Prva odluka nije koju naredbu pokrenuti, nego koji komponent posjeduje prefiks.

Prefiksu treba vlasnik, a ne trenutak

Počnite tako što ćete zahtjev napisati kao rečenicu sa subjektom: dosegnite 10.77.0.0/24 kroz Office VPN dok je ta veza podignuta. Ta rečenica imenuje prefiks, vezu i uvjet, i odmah isključuje dvije popularne zamjene: login hook i naziv sučelja kao što je ppp0 ili utun2.

Nazivi sučelja dodjeljuju se u vrijeme izvršavanja i nisu stabilni između ponovnih povezivanja. Hook koji odgovara nazivu viđenom prošli tjedan ili neće opaliti, ili će opaliti na tuđe sučelje. Oba ishoda izgledaju kao greška usmjeravanja, a ne kao zastarjela pretpostavka koja jesu. Isti prigovor vrijedi za svaku skriptu vezanu za naziv koji postoji samo dok je podignut jedan određeni tunel.

Koristite podržani izvor namjere rute

Pristupnik, upravljani profil ili dokumentirani mehanizam ruta vlasničkog klijenta pravo je mjesto za to, kad taj mehanizam može izraziti zahtjev. Koji se primjenjuje ovisi o protokolu i pružatelju, a ključevi ne putuju između njih, pa vrijednost koja konfigurira profil OpenVPN ne govori ništa o izvornom L2TP ili IKEv2 klijentu.

MechanismCan carry extra prefixesWho owns the lifetime
Gateway-pushed routesOften, if the gateway is configured for itThe connection
Managed profile settingsDepends on the client and profile formatThe profile
Provider tunnel settingsYes, as included and excluded routesThe provider process
Manual commandYes, onceNobody

Za developere paketnih tunela, Appleove IPv4 postavke tunela izričito izlažu uključene i isključene rute, a IPv6 ima svoj pandan. To su API-ji koje pružatelj koristi, a ne dokaz da svaki izvorni VPN panel administratoru nudi proizvoljan popis ruta. Ako trenutna kombinacija ne može izraziti potrebne prefikse, sljedeći je korak podržani put konfiguracije od operatora, a ne druga aplikacija instalirana u nadi da će se ponašati bolje.

Životni vijek uključuje čišćenje

Vanjski pomoćnik ponekad je doista potreban, i tada je „dodaj rutu“ najmanji dio njegova posla. Mora znati kojoj vezi služi i koje sučelje ta veza koristi, čekati da se relevantno mrežno stanje smiri, ostati idempotentan kad se pokrene dvaput zaredom, i ne počistiti ništa što nije sam instalirao.

Ta posljednja klauzula je ona koja boli. Pomoćnik koji briše svaku rutu koja odgovara uredskom prefiksu prije ili kasnije će obrisati rutu koju nije dodao. Nastali prekid pripisuje se VPN klijentu, jer je klijent dio koji korisnik vidi. Odlučiti što pomoćnik posjeduje prije nego ga napišete jeftinije je od naknadnog objašnjavanja zašto je lokalna podmreža prestala odgovarati.

Utrka pri ponovnom povezivanju

Zamislite brzo ponovno povezivanje. Sesija A pada, sesija B se diže i instalira svoju rutu, a zatim se konačno izvrši A-ino odgođeno čišćenje. Ako to čišćenje uklanja rute po prefiksu, odnosi sa sobom B-ino valjano stanje, i veza koja je radila prije sekunde sada usmjerava u ništa.

To je utrka vlasništva, a dodavanje pauze u skriptu samo mijenja koja strana pobjeđuje. Rješenje je uvjetovati čišćenje identitetom: usporedite sučelje i sesiju koje je pomoćnik instalirao s onima koje su još aktualne, i uklanjajte samo pri podudaranju.

Što testirati i što ruta ne može

Prihvaćanje mora pokriti četiri prijelaza: prvu vezu, ponovno povezivanje na drugo sučelje, neuspjeli pokušaj povezivanja i konačno odspajanje. Nakon svakog pročitajte rutu koju je sustav stvarno odabrao za adresu na udaljenoj strani, a ne onu koju ste očekivali.

route -n get 10.77.0.5
netstat -rn -f inet

Uključite i nezgodne slučajeve u isti prolaz: IPv6 gdje je potreban, lokalni prefiks koji se preklapa s udaljenim, i rutu prema samoj javnoj VPN krajnjoj točki, koja mora nastaviti raditi dok je tunel podignut. Zatim zapišite što ruta nije. Ona odabire pakete; ne daje dopuštenje na udaljenoj strani i ne stvara povratni put, i to ostaju odvojeni zahtjevi s odvojenim vlasnicima.

Ishod koji želite je prefiks koji slijedi svog podržanog vlasnika veze kroz svaki prijelaz, a ne naredba koja je slučajno jednom uspjela na stroju na kojem je napisana.

Povezani članci