Eng OpenVPN-Direktiv pro Linn, a firwat d’Ëmbrochung läit
En Écran mat mëller Ëmbrochung ass keng nei Linn an der Datei. Kontrolléiert déi richteg Zeilenëmbréch, ier Dir en deforméierten Abschnitt duerch d’Schabloun vun engem Frieme ersetzt.
E Profil, dee fréier gestart ass, feelt elo mat engem Optiounsfehler, an d’Linn, déi de Parser zitéiert, gesäit um Écran perfekt vernünfteg aus. Dat ass d’Falle: eng Konfiguratiounsdatei ass eng Lëscht vu kierperleche Linnen, jidderee mat engem Optiounsschlësselwuert an hirem Argumenter, an eng laang Linn, déi vun engem Editeur ëmgebrach gëtt, gesäit identesch aus mat zwou Linnen, bis een d’Byten ukuckt. Näischt vum Netzwierk, vum Zertifikat oder vum Tunnel ass bei dëser Klass vu Feeler bedeelegt. Zwou Linnen, déi um Écran identesch ausgesinn, kënnen ëm een eenzegen Byte ënnerscheeden.
Schafft d’Kontrollen hei ënnen an der Rei of a stoppt bei der éischter, déi feelt. Jidderee ass méi bëlleg wéi déi nächst, a jidderee schléisst eng aner Erklärung aus.
Eng Linn, eng Direktiv
De Parser liest eng Linn, hëlt dat éischt Wuert als d’Optioun a behandelt de Rescht als d’Argumenter vun där Optioun. Eng Linn wéi cert server.crt port 1194 sinn also net zwou Instruktiounen hannereneen. Et ass eng cert-Optioun mat dräi Argumenter, an déi drëtt ass kee Dateinumm, deen d’Optioun akzeptéiert. D’Feeler als fehlenden Zeilenëmbruch ze liesen ass richteg; se als fehlend Direktiv ze liesen ass et net.
# malformed: one option, three arguments
cert server.crt port 1194
# intended: two options, one argument each
cert server.crt
port 1194
Déi zwou korrigéiert Linne sinn e Fragment, keng Konfiguratioun. Si existéieren, fir ze weisen, wou d’Grenz higehéiert. All gewéinlech Direktiv an engem Profil follegt därselwechter Regel, an eng Linn, déi zwou dovun zesummeféiert, produzéiert entweeder en Argumentfehler oder e Wäert, deen d’Optioun net erwaart huet.
Beweist, datt den Zeilenëmbruch reell ass
Editoren ëmbréchen fir d’Uweise. Einige setzen och haart Ëmbréch an, wann Dir asetzt, an anerer net, sou datt datselwecht visuellt Resultat aus zwou ganz ënnerschiddlechen Dateie kënnt. Weist d’Linnenenn an zielt d’Linnen, ier Dir eppes ännert. Moossen kascht een Kommando; Raten kascht en Owend.
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
Am éischten Ausgab erschéngt all reellen Zeilenëmbruch als en $-Markéierer, sou datt eng ëmgebrach awer net gedeelt Linn kee Markéierer weist, wou Ären Écran ëmbrécht. Den zweeten Kommando dréckt nummeréiert Linnen, wat de séierste Wee ass, fir ze vergläichen, wat de Parser mellt, mat deem wat d’Datei enthält.
Zesätzlech Espace sinn och keng Direktiv. D’Indentatioun ass kosmetesch, an eng Linn, déi mat Wäissraum ufänkt, ass ëmmer nach déiselwecht eenzeg Optioun. Wann d’Feelermeldung op eng Linnennummer weist, liest genau déi Linn amplaz vum Abschnitt, zu deem se gehéiert.
Zitéiert en Pad, keng Direktivlëscht
Anféierungszeechen existéieren fir Argumenter, déi Espace enthalen, net fir Optiounen ze gruppéieren. En Zertifikatspad mat engem Espace brauch seng eegen Anféierungszeechen; zwou Direktiven, déi sech en Anféierungszeechenpaar deelen, sinn ëmmer nach eng deforméiert Linn.
cert "/etc/openvpn/pki/lab certs/server.crt"
key "/etc/openvpn/pki/lab certs/server.key"
Kontrolléiert d’Optiounsnummen zur selwechter Zäit wéi d’Layout, well eng zesummegeféiert Linn een déifwierkege Token produzéiere kann, deen ni existéiert huet. D’Port-Direktiv ass port; e Profil, deen eppes anescht fir déiselwecht Iddi benotzt, feelt och no der Korrektur vun de Linnengrenzen. Wann en Numm onbekannt ausgesäit, vergläicht en mat der Optiounslëscht fir d’Versioun, déi Dir bedreift, amplaz mat engem Forumsbeispill.
Halt Inline-Bléck als Bléck
Profiler kënnen Zertifikater a Schlësselen inline droen, an déi Bléck sinn Daten amplaz Konfiguratioun. D’PEM-Linne bannent engem Block sinn keng Optiounen, déi sollen ofgeflaacht, nei agesprongen oder zesummegeféiert ginn, an d’Blockmarkéierer mussen op hire eigenen Linne bleiwen.
Behandelt en Inline-Block als en onduerchsichtege Beräich: korrigéiert d’Optiounslinnen ronderëm, loosst säin Inhalt Byte fir Byte an Rou, a setzt en ni an en ëffentlechen Supportthread. Wann en Formatéierungstool de Block ëmgeschriwwen huet, restauréiert en aus Ärer PKI amplaz en vun Hand ze flécken.
Fléckt de klengsten Abschnitt, net d’Schabloun
Déi verlockend Reparatur ass, déi ganz Datei duerch eng Konfiguratioun aus engem Tutorial ze ersetzen, deen „funktionéiert“. Dat tauscht eng deforméiert Linn géint eng Rei vu Politikännerungen, déi kee revidéiert huet: aner DH-Parameter, Kompressiounsastellungen, Chifferwahlen, duebel Lauschterer. D’Originalproblem ass kleng a lokal, an d’Ersetzung ass weder dat engt nach dat anert.
Kopéiert de Profil an eng geschützt Aarbechtsdatei, korrigéiert d’Linnengrenzen an där Kopie, a loosst den normale Besëtzer vum Service se lueden. Start dann d’Instanz a liest den éischte Feeler, wann et een gëtt, vum Ufank un.
openvpn --config /etc/openvpn/server/lab.conf --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log
Wann d’Parsingsphase duerchgeet, geet de nächsten Feeler ëm eng Datei, en Zertifikat oder eng Chiffer amplaz ëm Vokabular, an dat ass richtegen Fortschrëtt. Halt d’Aarbechtskopie an eng Notiz vun enger Linn iwwer dat, wat zesummegeféiert gouf; déiselwecht Asetzung wäert nach eng Kéier bei engem aneren aus demselwechten Team geschéien.