Éin OpenVPN-direktiv per linje, og kvifor ombryting lyg
Ein mjukt ombroten skjerm er ikkje eit nytt linjeskift i fila. Kontroller dei verkelege linjeskifta før du byter ut ein feilaktig del med malen til ein framand.
Ein profil som før starta, feilar no med ein alternativfeil, og linja parsaren siterer ser heilt rimeleg ut på skjermen. Det er fella: ei konfigurasjonsfil er ei liste av fysiske liner, kvar med eitt alternativnøkkelord og argumenta sine, og ei lang linje som blir ombroten av ein editor ser identisk ut med to liner heilt til ein ser på byta. Ingenting ved nettet, sertifikatet eller tunnelen er involvert i denne typen feil. To liner som ser identiske ut på skjermen kan avvike med éin einaste byte.
Gå gjennom kontrollane nedanfor i rekkjefølgje og stopp ved den første som feilar. Kvar av dei er billegare enn den neste, og kvar av dei utelukkar ei anna forklaring.
Éi linje, éin direktiv
Parsaren les ei linje, tek det første ordet som alternativet og handsamar resten som argumenta til det alternativet. Ei linje som cert server.crt port 1194 er derfor ikkje to instruksjonar i rekkjefølgje. Det er eitt cert-alternativ med tre argument, og det tredje er ikkje eit filnamn som alternativet godtek. Å lese feilen som eit manglande linjeskift er rett; å lese han som eit manglande direktiv er det ikkje.
# malformed: one option, three arguments
cert server.crt port 1194
# intended: two options, one argument each
cert server.crt
port 1194
Dei to retta linjene er eit fragment, ikkje ein konfigurasjon. Dei finst for å vise kvar grensa høyrer heime. Kvart vanlege direktiv i ein profil følgjer same regelen, og ei linje som slår saman to av dei gir anten ein argumentfeil eller ein verdi som alternativet ikkje venta.
Prov at linjeskiftet er ekte
Editorar ombryt for vising. Nokre set også inn harde brot når du limer inn, andre ikkje, så det same visuelle resultatet kan kome frå to svært ulike filer. Vis linjeslutta og tel linjene før du endrar noko. Å måle kostar éin kommando; å gjette kostar ein kveld.
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
I den første utskrifta blir kvart ekte linjeskift vist som ein $-markør, så ei ombroten men udelt linje viser ingen markør der skjermen din ombryt. Den andre kommandoen skriv ut nummererte liner, som er den snøggaste måten å samanlikne det parsaren rapporterer med det fila inneheld.
Ekstra mellomrom lagar heller ikkje eit direktiv. Innrykk er kosmetisk, og ei linje som byrjar med kvitt rom er framleis det same einskildalternativet. Viss feilmeldinga peikar på eit linjenummer, les akkurat den linja i staden for avsnittet ho høyrer til.
Siter ein stig, ikkje ei direktivliste
Hermeteikn finst for argument som inneheld mellomrom, ikkje for å gruppere alternativ. Ein sertifikatstig med eit mellomrom treng sine eigne hermeteikn; to direktiv som deler eit par hermeteikn er framleis éi feilaktig linje.
cert "/etc/openvpn/pki/lab certs/server.crt"
key "/etc/openvpn/pki/lab certs/server.key"
Kontroller alternativnamna samtidig med oppsettet, fordi ei samanslått linje kan gi eit truverdig utsjanande token som aldri har eksistert. Portdirektivet er port; ein profil som brukar noko anna for same idé vil feile sjølv etter at linjegrensene er retta. Når eit namn verkar ukjent, samanlikne det med alternativlista for versjonen du køyrer i staden for med eit døme frå eit forum.
Hald innebygde blokker som blokker
Profilar kan bere sertifikat og nøklar innebygde, og desse blokkene er data, ikkje konfigurasjon. PEM-linjene inne i ei blokk er ikkje alternativ som skal flatast ut, innrykkast på nytt eller slåast saman, og blokkmarkørane må bli verande på eigne liner.
Handsam ei innebygd blokk som eit ugjennomsiktig område: rett alternativlinjene rundt ho, lat innhaldet vere byte for byte, og lim det aldri inn i ein offentleg støttetråd. Viss eit formateringsverktøy har skrive om blokka, gjenopprett ho frå PKI-en din i staden for å reparere ho for hand.
Rett den minste delen, ikkje malen
Den freistande reparasjonen er å byte ut heile fila med ein konfigurasjon frå ei rettleiing som «verkar». Det byter éi feilaktig linje mot ei rad med policyendringar som ingen har gjennomgått: andre DH-parametrar, komprimeringsinnstillingar, chifferval, doble lyttarar. Det opphavlege problemet er lite og lokalt, og erstatninga er ingen av delane.
Kopier profilen til ei verna arbeidsfil, rett linjegrensene i den kopien, og lat den vanlege eigaren av tenesta laste han. Start deretter instansen og les den første feilen, om det finst nokon, frå byrjinga.
openvpn --config /etc/openvpn/server/lab.conf --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log
Når parsingsfasen går gjennom, vil den neste feilen handle om ei fil, eit sertifikat eller ein chiffer i staden for om ordforråd, og det er verkeleg framgang. Ta vare på arbeidskopien og eit eittlinjes notat om kva som vart slått saman; den same innliminga vil skje igjen hos nokon andre i same teamet.