Një profil që më parë nisej tani dështon me një gabim opsionesh, dhe rreshti që citon analizuesi duket krejt i arsyeshëm në ekran. Kjo është kurthi: një skedar konfigurimi është një listë rreshtash fizikë, secili me një fjalë kyçe opsioni dhe argumentet e saj, dhe një rresht i gjatë i mbështjellë nga një redaktues duket identik me dy rreshta derisa të shihen bajtët. Asgjë nga rrjeti, certifikata ose tuneli nuk përfshihet në këtë klasë dështimi. Dy rreshta që duken identikë në ekran mund të ndryshojnë për një bajt të vetëm.

Kryeni kontrollet më poshtë me radhë dhe ndaloni te i pari që dështon. Secili është më i lirë se tjetri, dhe secili përjashton një shpjegim tjetër.

Një rresht, një direktivë

Analizuesi lexon një rresht, merr fjalën e parë si opsionin dhe trajton pjesën tjetër si argumentet e atij opsioni. Një rresht si cert server.crt port 1194 pra nuk janë dy udhëzime me radhë. Është një opsion cert me tre argumente, dhe i treti nuk është një emër skedari që opsioni e pranon. Të lexosh gabimin si një thyerje rreshti që mungon është e saktë; ta lexosh si një direktivë që mungon nuk është.

# malformed: one option, three arguments
cert server.crt port 1194

# intended: two options, one argument each
cert server.crt
port 1194

Ata dy rreshta të korrigjuar janë një fragment, jo një konfigurim. Ekzistojnë për të treguar ku i takon kufiri. Çdo direktivë e zakonshme në një profil ndjek të njëjtin rregull, dhe një rresht që bashkon dy prej tyre prodhon ose një gabim argumenti ose një vlerë që opsioni nuk e priste.

Vërtetoni se thyerja e rreshtit është reale

Redaktuesit mbështjellin për shfaqje. Disa gjithashtu fusin thyerje të forta kur ngjitni, dhe disa jo, kështu që i njëjti rezultat vizual mund të vijë nga dy skedarë shumë të ndryshëm. Tregojini mbaresat e rreshtave dhe numëroni rreshtat përpara se të ndryshoni ndonjë gjë. Matja kushton një komandë; hamendja kushton një mbrëmje.

cat -A /etc/openvpn/server/lab.conf | sed -n '10,20p'
awk 'NR>=10 && NR<=20 {printf "%d:%s\n", NR, $0}' /etc/openvpn/server/lab.conf

Në daljen e parë çdo thyerje e vërtetë rreshti shfaqet si një shënues $, kështu që një rresht i mbështjellë por i pandarë nuk shfaq asnjë shënues aty ku ekrani juaj mbështjell. Komanda e dytë printon rreshta të numëruar, që është mënyra më e shpejtë për të krahasuar atë që raporton analizuesi me atë që përmban skedari.

Hapësirat shtesë nuk krijojnë gjithashtu një direktivë. Dhëmbëzimi është kozmetik, dhe një rresht që fillon me hapësirë të bardhë është ende i njëjti opsion i vetëm. Nëse mesazhi i gabimit tregon një numër rreshti, lexoni pikërisht atë rresht në vend të paragrafit të cilit i përket.

Cito një shteg, jo një listë direktivash

Thonjëzat ekzistojnë për argumente që përmbajnë hapësira, jo për grupimin e opsioneve. Një shteg certifikate me hapësirë ka nevojë për thonjëzat e veta; dy direktiva që ndajnë një palë thonjëza janë ende një rresht i keqformuar.

cert "/etc/openvpn/pki/lab certs/server.crt"
key "/etc/openvpn/pki/lab certs/server.key"

Kontrolloni emrat e opsioneve në të njëjtën kohë me planin, sepse një rresht i bashkuar mund të prodhojë një token në dukje të besueshëm që nuk ekzistonte kurrë. Direktiva e portës është port; një profil që përdor diçka tjetër për të njëjtën ide do të dështojë edhe pasi të korrigjohen kufijtë e rreshtave. Kur një emër duket i panjohur, krahasojeni me listën e opsioneve për versionin që ekzekutoni në vend të një shembulli forumi.

Mbani blloqet inline si blloqe

Profilet mund të mbajnë certifikata dhe çelësa inline, dhe ato blloqe janë të dhëna, jo konfigurim. Rreshtat PEM brenda një blloku nuk janë opsione që duhet të rrafshohen, të ridhëmbëzohen ose të bashkohen, dhe shënuesit e bllokut duhet të qëndrojnë në rreshtat e tyre.

Trajtojeni një bllok inline si një rajon të errët: korrigjoni rreshtat e opsioneve përreth, lini përmbajtjen e tij bajt për bajt të paprekur dhe mos e ngjitni kurrë në një temë publike mbështetjeje. Nëse një mjet formatimi e ka rishkruar bllokun, rikthejeni atë nga PKI-ja juaj në vend që ta riparoni me dorë.

Riparoni seksionin më të vogël, jo shabllonin

Riparimi tundues është zëvendësimi i të gjithë skedarit me një konfigurim nga një tutorial që «funksionon». Kjo shkëmben një rresht të keqformuar për një sërë ndryshimesh politike që askush nuk i rishikoi: parametra të tjerë DH, cilësime kompresimi, zgjedhje shifrash, dëgjues të dyfishtë. Problemi origjinal është i vogël dhe lokal, dhe zëvendësimi nuk është as njëra as tjetra.

Kopjojeni profilin në një skedar pune të mbrojtur, korrigjoni kufijtë e rreshtave në atë kopje dhe lëreni pronarin normal të shërbimit ta ngarkojë. Pastaj nisni instancën dhe lexoni gabimin e parë, nëse ka, nga fillimi.

openvpn --config /etc/openvpn/server/lab.conf --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log

Kur faza e analizimit kalon, dështimi tjetër do të jetë për një skedar, një certifikatë ose një shifër në vend të fjalorit, dhe ky është përparim i vërtetë. Mbani kopjen e punës dhe një shënim një-rreshtor për atë që u bashkua; e njëjta ngjitje do të ndodhë përsëri për dikë tjetër në të njëjtin ekip.

Artikuj të ngjashëm