OpenVPN sa spustil, ale nič nevypísal: najprv skontrolujte log-append
Ticho pri ručnom spustení nie je porucha. Prečítajte log a log-append v načítanom profile, potom priraďte súbor a jeho časové značky k procesu.
Spustíte OpenVPN z shellu s konfiguračným súborom a terminál zostane stáť bez akéhokoľvek výstupu. Žiadny banner, žiadna chyba, žiadna výzva. Inštinkt hovorí, že spustenie zlyhalo, tak spustíte ďalšiu kópiu, potom ďalšiu, a stroj skončí s niekoľkými napoly nakonfigurovanými inštanciami. Predtým všetkým skontrolujte v profile direktívu, ktorá už presmerovala log niekam inam. Ticho je vlastnosťou konzoly, nie procesu.
Ticho má dve veľmi odlišné vysvetlenia
Prvé je, že proces beží správne a píše do súboru, ktorý nesledujete. Druhé je, že hneď skončil s chybou zapísanou v tom istom súbore.
Obe zanechajú prázdny terminál a jedna otázka ich oddeľuje: existuje teraz proces a čo je v súbore, do ktorého mu bolo prikázané písať. Odpovedzte na to skôr, než sa znova dotknete konfigurácie. Opätovné spúšťanie kvôli výstupu je spôsob, akým dve inštancie začnú bojovať o jedno tunelové zariadenie a ten istý port, čo vytvára chyby, ktoré nemajú nič spoločné s pôvodným problémom.
Nájdite direktívu, potom nájdite proces.
ps -o pid,args= -C openvpn
grep -nE '^\s*(log|log-append|cd|daemon|verb)\b' /etc/openvpn/server/server.confNájdite cieľ, ktorý používa bežiaci proces
Čítajte profil, s ktorým bol proces skutočne spustený, nie ten, ktorý ste upravovali. Inštancia spravovaná službou zvyčajne načíta inú cestu a beží v inom pracovnom adresári, takže relatívny názov súboru sa vyrieši niekde, kde ste to nečakali.
Výslovná cd direktíva robí ten rozdiel ostrejším, pretože relatívna cesta sa posúva spolu so zmenou adresára. Ak ste túto konfiguráciu zdedili, súbor môže ležať na mieste, kde by ho teraz nikto nehľadal.
Porovnajte čas zmeny súboru s okamihom, keď ste ho spustili. Log z minulého týždňa je dôkaz o minulom týždni. Potom prečítajte posledné riadky zmeneného súboru a berte to, čo tam je, ako chýbajúcu štartovaciu správu.
log verzus log-append: dôkaz a vymazanie
log-append pridáva k tomu, čo už v súbore je. log otvára súbor na zápis a skracuje ho, takže prepínanie medzi nimi môže vymazať beh, ktorý ste sa chystali prečítať.
Ak niekto počas ladenia zmenil direktívu, predchádzajúci dôkaz už zmizol a veľkosť súboru bude vyzerať podozrivo malá. To sa oplatí vedieť skôr, než porovnáte dva behy a urobíte záver, že sa niečo zmenilo. Vymažte log úmyselne alebo ho ponechajte, ale vedzte, ktoré z toho ste urobili. Dôkaz, ktorý ste odstránili zámerne, sa dá ľahšie pochopiť než ten, ktorý ste stratili omylom.
Ani jedna možnosť nevytvára chýbajúce nadradené adresáre a ani jedna neposkytuje prístup cez oprávnenia súborového systému alebo sandbox služby. Cesta, ktorá v konfigurácii vyzerá správne, stále môže byť nezapisovateľná pre účet, pod ktorým démon beží, a potom démon môže zlyhať skôr, než čokoľvek nahlási. Skontrolujte, či adresár existuje a kto je jeho vlastníkom, skôr než budete predpokladať, že problémom je názov súboru.
Keď obal služby zachytí výstup
Pod systemd idú štandardný výstup a chyby do žurnálu, ak výslovná súborová direktíva nemá prednosť, a obal dodávateľa ich môže zachytiť úplne inde.
Preto sa ten istý profil správa inak zo shellu a z unit. Prostredie unit, jeho pracovný adresár a štandardné toky sa všetky líšia od vášho interaktívneho shellu. Relatívna cesta sa môže vyriešiť v jednom kontexte a v druhom nikam nepristane. Keď sa tieto dve nezhodujú, čítajte definíciu unit, nie profil.
Porovnajte dva spôsoby spustenia, namiesto toho, aby ste usúdili, že jeden z nich je pokazený. Prečítajte príkazový riadok unit a jeho prostredie, potom prečítajte žurnál za rovnaké časové okno. Ak obal presmerúva výstup do svojho vlastného súboru, ten súbor je teraz váš log a direktívy OpenVPN sú pre to, kam správy išli, irelevantné.
Zvýšte podrobnosť až vtedy, keď ju dokážete prečítať
Zvyšovanie podrobnosti pred nájdením cieľa len vytvára viac textu na mieste, na ktoré sa nepozeráte.
Keď viete, kam výstup pristane, mierna úroveň ukazuje, že profil sa parsuje a spojenie sa skúša. Dve alebo tri stačia pri probléme so štartom. Vyššie úrovne si svoje miesto zaslúžia, keď je zlyhanie detailom rokovania, a tiež rýchlo zväčšujú súbor.
Potom prečítajte skutočnú chybu. Tichý terminál nič nedokazuje o tom, či tunel vstal, a zlyhanie zapísané v súbore je to, ktoré stojí za opravu.