Prenosivo opisuje instalater, ne kernel. Klijent može doći kao jedan izvršni fajl na USB sticku i ipak trebati tunelski uređaj, unos u tablicu ruta i upis u rezolver prije nego se prvi paket pomakne. Koji od ta tri ciljna mašina dopusti da dotaknete odlučuje radi li ta gradnja tamo uopće. Provjere ispod odgovaraju na pitanje redom kojim će klijent na njih naići.

Prenosivost pokriva tri različita obećanja, a samo je jedno besplatno

Bez instalatera znači da dobavljač nije registrirao uslugu, isporučio deinstalater ni dodao stavku u meniju. Bez administratora znači da običan račun može pokrenuti klijent i dovršiti vezu. Bez promjene hosta znači da mašina izgleda identično nakon što izađete. Stranice za preuzimanje koje kažu prenosivo obično obećavaju samo prvo od toga, a druga dva su mjesto gdje implementacije propadaju. Gradnja može biti prenosiva i u užem smislu: radi s medija samo za čitanje bez ikakvih upisa točkastih datoteka, što još uvijek ništa ne govori o mrežnom steku.

Skupa obećanja su drugo i treće. Jedan izvršni fajl kojem treba adapter, ruta ili upis u rezolver traži od operativnog sistema ovlasti koje oznaka prenosivo nikada nije pokrivala.

Nađite privilegovanog pomoćnika kojeg će klijent pozvati

Gotovo nijedan VPN klijent sam ne prenosi pakete. Na Windowsu put podataka ide kroz WFP filtere i Base Filtering Engine, na macOS-u kroz NetworkExtension provajdera koji korisnik odobri u Sistemskim postavkama, a na Linuxu kroz tun uređaj plus stek za rutiranje. Binarni fajl koji ste kopirali kontrolna je površina za te komponente, ne njihova zamjena. Pitajte koju komponentu klijent očekuje, zatim potvrdite da je instalirana, da radi i da je vaš račun može koristiti.

Linux je najlakše mjesto da to dokažete jer je provjera jedan sistemski poziv. Otvaranje /dev/net/tun i traženje uređaja od kernela zahtijeva CAP_NET_ADMIN, a dokumentacija kernela za TUN/TAP navodi i pravilo vlasništva i sposobnost. Pokrenite provjeru kao račun koji će pokrenuti klijent, ne kao root.

ls -l /dev/net/tun
ip tuntap add dev vpntest mode tun
ip link delete vpntest

Greška dozvola na srednjoj liniji odgovor je koji ste tražili: ovaj račun ne može stvoriti tunelsko sučelje, pa svaki klijent u korisničkom prostoru kojem ono treba pada pri povezivanju, a ne pri preuzimanju. Zadnja linija uklanja testni uređaj i ne ispisuje ništa kada uspije. Ako obje linije uspiju, host nije trajno promijenio ništa.

Testirajte promjene rute i rezolvera prije prvog povezivanja

Podijeljeno tuneliranje pretvara vezu u odluku o rutiranju, dok je puni tunel pretvara u zamjenu zadane rute. Oboje su upisi u mrežni stek hosta, i oboje padaju za neprivilegovan račun čak i kada sam klijent starta čisto. Rezolver je treći upis, a na systemd hostovima obično je onaj koji se kvari posljednji. Taj redoslijed je važan kada odlučujete gdje potrošiti instalaciju s povišenim pravima.

Provjera rute treba odredište koje vam je doista važno, zato zamijenite podmrežu iz vlastitog profila umjesto rezerviranog mjesta ispod. Naziv uređaja mora postojati da bi se ruta mogla pričvrstiti za bilo šta.

ip route add 10.20.0.0/16 dev vpntest
ip route del 10.20.0.0/16
resolvectl query intranet.example.internal

Prva linija koja vrati RTNETLINK answers: Operation not permitted znači da račun ne može instalirati privatnu rutu koju profil zahtijeva. Druga linija dokazuje isto pravo obrnuto, što je važno jer klijent koji može dodavati rute ali ne uklanjati ih ostavlja pokvarenu tablicu za sobom. Upit rezolveru zatim pokazuje rješavaju li se privatna imena kroz tunel ili cure prema kojem god rezolveru host već vjeruje.

Pokrenite sve tri dok testni uređaj još postoji, zatim ga izbrišite. Ruta koja pokazuje na uređaj kojeg nema najčešći je razlog zašto laptop izgubi povezanost nakon neuspjelog povezivanja.

Odlučite šta mora preživjeti sesiju

Brisanje mape nije plan čišćenja. Adapteri, rute, postavke rezolvera, pouzdani certifikati i pohranjene vjerodajnice mogu svaki nadživjeti proces, a usluga pri podizanju može neke od njih vratiti bez pitanja. Zapišite šta klijentu smije ostati za sobom prije nego ga pokrenete, a ne nakon prvog neuspjelog prekida veze.

Praktično pravilo je napraviti snimku tri površine koje ćete promijeniti i uporediti ih poslije. Zabilježite sučelja, glavnu tablicu rutiranja i stanje rezolvera prije prvog povezivanja, zatim ponovite ista tri čitanja nakon što klijent izađe.

ip -brief addr show
ip route show table main
resolvectl status

Sve što je prisutno u drugom snimku, a odsutno u prvom, treba vlasnika. Ili klijent to ukloni pri izlasku, ili to uklonite vi istim komandama koje su ga stvorile, i to uklanjanje pripada u bilješke o implementaciji, a ne u nečije sjećanje na to što se dogodilo. Na Windowsu su ekvivalentna čitanja Get-NetAdapter, Get-NetRoute i Get-DnsClientServerAddress, koja ne trebaju povišenje prava ali pokazuju iste ostatke.

Povezani članci