Unaprijed stvoreni tun u OpenVPN-u: usporedba dvaju modela vlasništva
Unaprijed stvoreno tun sučelje može se ponovno upotrijebiti, ali samo jedna komponenta treba posjedovati njegove adrese i rute. Usporedite dva modela prije dodavanja ifconfig-noexec.
Netko je unaprijed stvorio tun1, profil kaže dev tun1, a veza se još uvijek ne pripaja. Postojanje imena na hostu ne govori gotovo ništa, jer pripajanje ovisi o imenskom prostoru, vrsti uređaja, o tome tko posjeduje vezu i što je demonu dopušteno. Ponovna uporaba uređaja također nameće odluku koju zadana konfiguracija skriva: koja komponenta upisuje adrese i rute. Načini kvara dvaju rasporeda razlikuju se mnogo više od konfiguracijskih redaka, zato odlučite prije uređivanja profila.
Ime nije pripajanje
dev tun1 traži to imenovano sučelje od OpenVPN, a tradicionalne gradnje u korisničkom prostoru pokušat će ga otvoriti. Ako ime ne slijedi uobičajeni uzorak tun ili tap, profilu treba i odgovarajući dev-type, jer se vrsta nikada ne zaključuje iz niza znakova. Uređaj TAP nije uređaj TUN s drugom oznakom: pripajanje pogrešnoga ili odmah ne uspijeva ili stvara vezu koja prenosi okvire kakve nitko ne očekuje. Provjerite vrstu prije svega ostaloga, jer svaka kasnija provjera pretpostavlja da se dvije strane o tome slažu. Zatim potvrdite da proces doista može otvoriti uređaj, a ne samo ga vidjeti.
dev tun1
dev-type tun
Mrežno sučelje i /dev/net/tun različiti su objekti: jedno je veza unutar imenskog prostora, drugo je znakovni uređaj koji program u korisničkom prostoru rabi za pripajanje. Dokumentacija za Linux TUN/TAP opisuje taj put pripajanja i pravila vlasništva za trajne uređaje. Root ljuska koja može pokrenuti ip link dokazuje samo da ljuska ima ovlasti, a ne da ih ima demon. Vlasništvo nad čvorom uređaja, skup mogućnosti usluge i korisnik pod kojim se izvodi moraju se svi uskladiti prije nego otvaranje uspije.
Uređaj koji postoji i ne može se otvoriti problem je vlasništva, a ne usmjeravanja. Tretirajte ga tako tijekom otklanjanja pogrešaka, inače poslijepodne ode na čitanje tablica usmjeravanja koje nikada nisu bile problem.
Tko konfigurira vezu: dva modela vlasništva
U prvom modelu OpenVPN konfigurira adrese i rute kao dio podizanja veze. To je zadano ponašanje i najlakše za razmišljanje, jer jedna komponenta stvara stanje i opet ga uklanja. U drugom modelu vanjski upravitelj posjeduje sučelje, a ifconfig-noexec sprječava OpenVPN da izvršava svoje naredbe za konfiguraciju adresa i predaje parametre skriptama. Tada upravitelj mora sam primijeniti ispravnu lokalnu i partnersku konfiguraciju, što je više posla nego što naziv opcije sugerira. Odabir između njih pitanje je o tome tko smije mijenjati vezu dok je podignuta.
ifconfig-noexec pokriva samo adrese: tablica usmjeravanja ostaje nedirnuta, a konfiguracija ruta pripada route-noexec. Tretirajte dvije direktive kao odvojene kontrole s odvojenim vlasnicima, jer postavljanje jedne i pretpostavljanje druge čest je izvor napola konfiguriranih veza. Odaberite točno jednog vlasnika po sloju, adrese na jednom mjestu i rute na jednom mjestu. Mrežni upravitelj i VPN pomoćnik koji obojica upisuju adrese način su na koji prekid briše stanje o kojem druga strana još ovisi.
Pregledajte uređaj iz imenskog prostora koji je važan
Pregledajte uređaj iz imenskog prostora u kojem se izvodi VPN proces, a ne iz onoga u kojem se slučajno nalazi vaša ljuska. Dvije naredbe u nastavku odgovaraju na različita pitanja, a razlika se pokaže kada host vidi sučelje koje kontejner ne vidi. Pokrenite ih navedenim redoslijedom, jer druga ima smisla tek kad znate postoji li veza uopće.
ip -details link show dev tun1
ip tuntap show
Prva naredba ispisuje vezu kako je vidi kernel, uključujući zastavice i vrstu sučelja, i tako potvrđujete da je to uređaj na koji ste mislili. Druga navodi trajne tun/tap unose, koji postoje bez toga da ih ijedan proces drži. Sučelje koje čeka svog predviđenog vlasnika drukčija je situacija od živog tunela pripojenog drugom VPN-u, i samo druga objašnjava zašto vaše vlastito pripajanje ne uspijeva. Pronađite proces koji drži uređaj prije nego što bilo što promijenite, jer trajni unos i zauzeto sučelje imaju različite popravke.
Podrška za više redova čekanja poseban je raspored upravljačkog programa s vlastitim zahtjevima, a ne dopuštenje nepovezanim procesima da dijele jedno sučelje. Živa sesija drugog vlasnika problem je koordinacije i nijedno uređivanje profila to ne rješava.
Dvije vrste trajnosti
Trajnost u kernelu i persist-tun opisuju životne vijekove koje je lako spojiti i skupo zamijeniti. Trajni uređaj postoji neovisno o bilo kojem procesu, pa preživi zaustavljanje i sljedeće pokretanje može ga ponovno upotrijebiti. persist-tun čuva resurse kroz podržana meka resetiranja unutar jednog OpenVPN procesa, mnogo kraći horizont. Niti jedno ne obećava da zaustavljanje usluge ostavlja rute i adrese na mjestu, a sučelje koje ostaje vidljivo nije dokaz šifrirane sesije koja radi.
Potvrdite i pozadinski sloj, jer unaprijed stvoreno sučelje ne govori ništa o tome koja će ga implementacija otvoriti. Gradnje zajednice s izravnim podatkovnim putem pokušat će ga upotrijebiti osim ako dizajn kaže drukčije. Gdje verzija podržava prekidač, disable-dco umjesto toga bira put korisničkog prostora; stariji pogoni i drugi klijenti nemaju takvu direktivu, zato držite uvjet verzije uz opciju umjesto da pretpostavljate da se primjenjuje.
Što se kvari kada se testira samo pokretanje
Sporazum o vlasništvu može proći prvi test i pasti na posljednjem, što samo pokretanje čini slabom provjerom. Umjesto toga promatrajte dva prijelaza: meko resetiranje i potpuno zaustavljanje nakon kojeg slijedi pokretanje.
systemctl status openvpn-client@lab
ip -details link show dev tun1
Pokretanje je lakši slučaj: jedinica se diže, veza se pojavljuje, a izlaz stanja imenuje profil koji se učitao. Pripajanje je trenutak u kojem demon otvara uređaj, zato pokrenite provjeru veze nakon što jedinica izvijesti da je aktivna, a ne prije. Ako veza postoji dok se stanje još aktivira, gledate trajni uređaj na koji se još nitko nije pripojio, a ne tunel koji radi. Propustite stvarni promet kroz vezu prije nego nastavite, jer pripojeno sučelje bez upotrebljive rute i dalje je neuspjeh.
kill -SIGHUP $(pidof openvpn)
journalctl -u openvpn-client@lab -n 40
systemctl stop openvpn-client@lab
ip -details link show dev tun1
Meko resetiranje trebalo bi ostaviti sesiju upotrebljivom i resurse netaknutima, a to je posao koji obavlja persist-tun. Potpuno zaustavljanje mjesto je na kojem se vanjski upravitelj otkrije: ako veza ili njezine adrese prežive zaustavljanje, posjeduje ih netko drugi, i to je ili stanje koje ste dokumentirali ili pogreška koju ste upravo pronašli. Zabilježite oba opažanja uz profil, kako bi sljedeća promjena počela od dokaza, a ne od dijagrama.