Úkol je jasný: když se notebook připojí, má se na notebooku něco změnit. Konfigurace, která se upravuje, patří serveru, a právě tam se předpoklad láme. Cesta v souboru na serveru označuje soubor na tom serveru a žádné množství push nezmění, čí proces ho vykonává. Volba mezi oběma háčky je většinou otázkou rozhodnutí, který stroj práci vlastní, a přijetí omezení, která z toho plynou.

Dva stroje, dvě otázky, na které je třeba odpovědět nejdřív

Zeptejte se, kde má ke změně stavu dojít, a pak, která událost jí odpovídá. Pokud je změnou autorizace pro konkrétního uživatele nebo rozhodnutí o konfiguraci pro konkrétního klienta, patří tam, kde je znám adresář uživatelů: na server. Pokud je změnou trasa, nastavení resolveru nebo lokální pomocník na koncovém bodě, patří na koncový bod a jen koncový bod to dokáže provést.

Odpovědět na tyto dvě otázky v opačném pořadí je způsob, jak lidé skončí tím, že se snaží protlačit dávkový soubor do notebooku s Windows. Server ví, kdo se připojil; notebook ví, jak vypadá jeho vlastní síťový stack. Ani jeden nemá informace toho druhého a pokus obvykle tiše selže, místo aby dal jasnou chybu.

Před oběma stojí za to položit třetí otázku: nabízí platforma vůbec háček, který chcete? Zařízení, které si generuje vlastní konfiguraci, nemusí nabízet stejné názvy událostí a desktopový klient, který importuje soubor .ovpn, nemusí být stejný klient, pro který byl soubor napsán. Ověření platformy nejdřív vás ušetří navrhování kolem háčku, který tam neexistuje. Také vám řekne, která dokumentace se vlastně vztahuje na stroj před vámi.

Možnost na straně serveru: událost pro každé připojení

Skript client-connect běží v kontextu procesu serveru, když se připojí ověřený klient, a dostává dokumentované podrobnosti připojení, jako je common name a přidělená adresa. Je to správné místo pro zápis konfiguračního fragmentu pro konkrétního klienta, prosazení rozhodnutí politiky nebo zaznamenání stavu, který server vlastní.

Rozdíl, který lidé přehlížejí, je rozdíl mezi tímto háčkem a serverovým háčkem up. Háček up se spustí, když server otevře své tunelové zařízení, což se na serveru s více klienty stane jednou při startu démona. Není to událost pro každé přihlášení a kód tam běží při startu služby, ne při připojení uživatelů.

Na zařízení s webovým rozhraním použijte podporovaný mechanismus rozšíření, místo abyste upravovali generované soubory démona. Generované soubory se při dalším uložení přepíšou a přepis tiše odstraní vaši změnu v tu nejnevhodnější chvíli. Uchovávejte kopii textu rozšíření mimo zařízení, aby aktualizace firmwaru neztratila i záměr.

Možnost na straně klienta: práce, která musí běžet lokálně

Komunitní klient může spustit lokální skript, když se tunelové zařízení objeví, a znovu, když se nainstalují trasy. Jsou to dva různé okamžiky a volba špatného z nich vytváří klasický závod, kdy pomocník startuje dřív, než existuje trasa, na níž závisí.

Pomocník musí na tom klientovi existovat, být čitelný a spustitelný pro účet, který klienta spouští, a být povolený výslovným nastavením script-security. Skript, který funguje, když klienta spustíte jako správce, vám nic neříká o službě před přihlášením ani o relaci jiného uživatele.

Na názvech také záleží. Háček up odpovídá vytvoření zařízení a route-up instalaci tras, ale úloha, která potřebuje dostupnou privátní síť, má dostupnost ověřit, místo aby předpokládala, že vytvoření zařízení znamená, že každá trasa, položka resolveru a aplikace jsou připravené.

Proč protlačování spustitelného kódu není na nabídce

Protlačované volby jsou záměrně omezené a volby, které spouštějí skripty, patří mezi kategorie, které server nesmí předávat. Toto omezení existuje proto, že alternativa by kompromitovanému nebo špatně nakonfigurovanému serveru umožnila spouštět libovolné příkazy na každém klientovi, který se kdy připojí.

Povolení spouštění skriptů lokálně to nemění. Vaše nastavení script-security povoluje lokální skripty, které jste si vybrali; neopravňuje server dodávat nové.

Pokud je cílem jen nainstalovat trasy VPN, použijte podporovanou konfiguraci tras, místo vymýšlení schématu vzdáleného spouštění. Pokud cíl skutečně vyžaduje lokální kód, distribuujte ho nástroji organizace pro správu koncových bodů a posuzujte ho jako každý jiný software, který běží s oprávněními uživatele.

Co ověřit, než kterémukoli háčku uvěříte

Pro každý háček si zapište čtyři věci: stroj, název události, účet, pod kterým běží, a změnu stavu, kterou má vyvolat. Pak otestujte připojení, opětovné připojení a cestu úklidu, protože háček, který při opětovném připojení uniká stav, je horší než ten, který nikdy neběžel.

Testujte pod účtem, který ho skutečně bude spouštět, v okamžiku, kdy se skutečně spustí. Manuál openvpn(8) dokumentuje obě rodiny háčků a omezení push; platforma, na kterou nasazujete, dokumentuje, zda je vůbec nabízí. Skript, který uspěje v interaktivním terminálu správce, je hypotéza, ne ověření.

Související články