Kavelj odjemalca ali kavelj strežnika? Kje teče skript OpenVPN
Pot skripta v konfiguraciji strežnika je pot na strežniku. Izberite kavelj glede na stroj, ki mora opraviti delo, in nehajte pričakovati, da bo push pognal kodo na prenosniku.
Naloga je jasna: ko se prenosnik poveže, se mora na prenosniku nekaj spremeniti. Konfiguracija, ki se ureja, pripada strežniku, in prav tam se predpostavka zlomi. Pot v datoteki strežnika označuje datoteko na tem strežniku in nobena količina push ne spremeni, čigav proces jo izvaja. Izbira med dvema kavljema je predvsem odločitev, kateri stroj ima delo, in sprejetje omejitev, ki iz tega sledijo.
Dva stroja, dve vprašanji, na kateri je treba odgovoriti najprej
Vprašajte, kje mora priti do spremembe stanja, nato vprašajte, kateri dogodek ji ustreza. Če je sprememba avtorizacija za posameznega uporabnika ali odločitev o konfiguraciji za posameznega odjemalca, spada tja, kjer je imenik uporabnikov znan: na strežnik. Če je sprememba pot, nastavitev resolverja ali lokalni pomočnik na končni točki, spada na končno točko, in le končna točka jo lahko izvede.
Odgovarjanje na ti dve vprašanji v obratnem vrstnem redu je način, kako ljudje končajo s poskusom, da bi potisnili paketno datoteko na prenosnik Windows. Strežnik ve, kdo se je povezal; prenosnik ve, kako izgleda njegov lastni omrežni sklad. Nobeden nima informacij drugega, in poskus običajno tiho spodleti, namesto z jasno napako.
Pred obema velja postaviti tretje vprašanje: ali platforma sploh ponuja kavelj, ki ga želite? Naprava, ki sama ustvarja konfiguracijo, morda ne ponuja istih imen dogodkov, in namizni odjemalec, ki uvozi datoteko .ovpn, ni nujno isti odjemalec, za katerega je bila datoteka napisana. Če platformo potrdite najprej, se izognete načrtovanju okoli kavlja, ki ga tam ni. Pove vam tudi, katera dokumentacija se dejansko nanaša na stroj pred vami.
Možnost na strani strežnika: dogodek na vsako povezavo
Skript client-connect teče v kontekstu procesa strežnika, ko se poveže overjeni odjemalec, in prejme dokumentirane podrobnosti povezave, kot sta common name in dodeljeni naslov. To je pravo mesto za pisanje konfiguracijskega drobca za posameznega odjemalca, uveljavljanje odločitve politike ali beleženje stanja, ki ga ima strežnik.
Razlika, ki jo ljudje spregledajo, je razlika med tem kavljem in strežniškim kavljem up. Kavelj up se sproži, ko strežnik odpre svojo tunelsko napravo, kar se na strežniku z več odjemalci zgodi enkrat ob zagonu demona. To ni dogodek ob vsaki prijavi, in koda, ki je tam, teče ob zagonu storitve, ne ko se uporabniki povežejo.
Na napravi z spletnim vmesnikom uporabite podprt mehanizem razširitev, namesto da urejate ustvarjene datoteke demona. Ustvarjene datoteke se ob naslednjem shranjevanju prepišejo, prepis pa tiho odstrani vašo spremembo v najslabšem možnem trenutku. Hranite kopijo besedila razširitve zunaj naprave, da posodobitev strojne programske opreme ne izgubi tudi namena.
Možnost na strani odjemalca: delo, ki mora teči lokalno
Skupnostni odjemalec lahko zažene lokalni skript, ko se tunelska naprava pojavi, in znova, ko se namestijo poti. To sta dva različna trenutka, in izbira napačnega ustvari klasično dirko, v kateri se pomočnik zažene, preden obstaja pot, od katere je odvisen.
Pomočnik mora obstajati na tem odjemalcu, biti berljiv in izvršljiv za račun, ki poganja odjemalca, in dovoljen z izrecno nastavitvijo script-security. Skript, ki deluje, ko odjemalca zaženete kot skrbnik, ne pove ničesar o storitvi pred prijavo ali o seji drugega uporabnika.
Tudi poimenovanje je pomembno. Kavelj up ustreza ustvarjanju naprave, route-up pa namestitvi poti, a naloga, ki potrebuje dosegljivo zasebno omrežje, mora preveriti dosegljivost, namesto da predpostavi, da ustvarjanje naprave pomeni, da so vsaka pot, vnos resolverja in aplikacija pripravljeni.
Zakaj potiskanje izvršljive kode ni med možnostmi
Možnosti, poslane s push, so namerno omejene, in možnosti, ki izvajajo skripte, spadajo med kategorije, ki jih strežnik ne sme posredovati. Ta omejitev obstaja zato, ker bi alternativa omogočila kompromitiranemu ali napačno konfiguriranemu strežniku izvajati poljubne ukaze na vsakem odjemalcu, ki se kdaj poveže.
Omogočanje izvajanja skriptov lokalno tega ne spremeni. Vaša nastavitev script-security dovoljuje lokalne skripte, ki ste jih izbrali sami; strežniku ne daje pravice, da bi priskrbel nove.
Če je cilj le namestiti poti VPN, uporabite podprto konfiguracijo poti, namesto da bi izumljali shemo oddaljenega izvajanja. Če cilj res zahteva lokalno kodo, jo razdelite z orodji organizacije za upravljanje končnih točk in jo pregledajte kot vsako drugo programsko opremo, ki teče s pravicami uporabnika.
Kaj preveriti, preden zaupate kateremu koli kavlju
Zapišite štiri stvari za vsak kavelj: stroj, ime dogodka, račun, pod katerim teče, in spremembo stanja, ki naj bi jo povzročil. Nato preizkusite povezavo, ponovno povezavo in pot čiščenja, ker je kavelj, ki pri ponovni povezavi pušča stanje, slabši od tistega, ki se ni nikoli zagnal.
Preizkusite pod računom, ki ga bo dejansko izvajal, v trenutku, ko se bo dejansko izvedel. Priročnik openvpn(8) dokumentira obe družini kavljov in omejitve push; platforma, na katero nameščate, dokumentira, ali ju sploh izpostavlja. Skript, ki uspe v interaktivnem skrbniškem terminalu, je hipoteza, ne preverjanje.