Varovanie o viacerých skriptoch znie ako sťažnosť na plánovanie, takže zjavná oprava je presúvať riadky, kým nezmizne. Nie je to sťažnosť na plánovanie. Neskoršia definícia --up nahrádza príkaz už uložený pre tú fázu a parser to hovorí, čo znamená, že z vašich dvoch skriptov kedy bežal práve jeden. Druhý nečaká v rade za ním; je preč.

Preto si varovanie zaslúži pozornosť, aj keď nie je fatálne: predpovedá aktualizáciu DNS alebo zmenu trasy, ktoré potichu prestali prebiehať.

Varovanie nie je o poradí

OpenVPN ukladá jediný príkaz používateľského skriptu pre fázu up. Keď parser narazí na inú definíciu, z profilu, vloženého súboru alebo príkazového riadka, nahradí to, čo už držal, a vydá varovanie. Nič sa nezlučuje, nič nebeží dvakrát a otázka poradia neexistuje. Prežije príkaz, ktorý parser videl naposledy, preto presunutie riadka môže zmeniť víťaza, zatiaľ čo druhý skript zostane mŕtvy.

Rovnaký vzor platí pre ostatné fázy skriptov: jeden príkaz na každú. Ak sa majú stať obe práce, potrebujú jediný vstupný bod, nie dve direktívy pripomínajúce zoznam.

Nájdite obe definície v skutočnom spustení

Začnite tým, čo démon skutočne dostal, nie profilom, ktorý ste upravili. ps -ef a ExecStart jednotky ukazujú príkazový riadok, do ktorého môže pointa vstupu kontajnera alebo obal pridať --up; init súbor distribúcie môže urobiť to isté. systemctl cat openvpn-server@server odhaľuje, čo prispieva samotná služba, a rekurzívny grep v konfiguračnom adresári nájde definície na úrovni súborov. Duplikáty zvyčajne pochádzajú z rôznych vrstiev, a práve preto úprava jedného súboru nič nezmení.

Kopírovanie skriptu do iného adresára alebo jeho premenovanie tiež neodstráni direktívu. Parser počíta definície, nie súbory.

Nech prácu vlastní jeden hook

Trvalé riešenie je jediný dispečer, ktorý vykonáva obe akcie v premyslenom poradí. Krátky shell skript s set -eu, ktorý zavolá požadovanú integráciu a potom miestnu akciu a odovzdá "$@", aby hranice argumentov prežili, drží správanie na jednom mieste, ktoré sa dá auditovať. Odovzdanie argumentov ich len zachová; nedokazuje, že obaja pomocníci očakávajú rovnaké rozhranie, preto si prečítajte zmluvu každého z nich. Rozhodnite, čo má zlyhanie urobiť a či treba čiastočné zmeny vrátiť.

Ak spúšťač ponúka podporovaný rozširujúci hook, dajte mu prednosť pred ručným reťazením. Obraz kontajnera alebo balík dodávateľa má často dokumentované miesto pre ďalšiu prácu a jeho použitie zabráni tomu, aby aktualizácia prepísala vášho dispečera.

Čistenie patrí do zodpovedajúcej fázy down. Akcia up, ktorá prepisuje DNS alebo pridáva trasy, potrebuje dokumentované vrátenie, a dispečer, ktorý sa stará len o štart, je polovica návrhu.

Potvrďte integráciu, nielen ticho

Odstrániť varovanie o duplikáte je tá ľahšia časť; integrácia stále musí fungovať. Po pripojení skontrolujte stav resolvera pomocou resolvectl status alebo čítaním /etc/resolv.conf a potvrďte trasy pomocou ip route. Potom sa odpojte a znova pripojte, pretože narýchlo zreťazený hook zvyčajne nechá niečo z predchádzajúcej relácie. journalctl -u openvpn-server@server -b ukáže, či váš dispečer bežal a čo vypísal.

Držte oprávnenia hooku tam, kam patria. Zvyšovanie script-security alebo spúšťanie démona s väčšími právami nie je oprava nahradeného hooku; rozširuje, čo môže urobiť každý budúci skript, vrátane toho, ktorý pomenuje útočník.

Znakom skutočnej opravy nie je ticho v logu. Je to odpoveď DNS, záznam trasy a čistenie, ktoré fungujú po dvoch opätovných pripojeniach.

Súvisiace články