Ang profile na dating nagsisimula ay nabigo na ngayon sa error sa mga opsyon, at ang linyang sinipi ng parser ay mukhang ganap na makatwiran sa screen. Iyon ang bitag: ang file ng configuration ay listahan ng mga pisikal na linya, bawat isa ay may isang keyword ng opsyon at mga argumento nito, at ang mahabang linyang binalot ng editor ay mukhang kapareho ng dalawang linya hanggang sa tingnan mo ang mga byte. Wala sa network, certificate o tunnel ang kasangkot sa ganitong uri ng pagkabigo. Dalawang linyang magkamukha sa screen ay maaaring magkaiba ng isang byte.

Gawin ang mga pagsusuri sa ibaba nang sunud-sunod at huminto sa unang mabibigo. Bawat isa ay mas mura kaysa sa susunod, at bawat isa ay nag-aalis ng ibang paliwanag.

Isang linya, isang direktiba

Binabasa ng parser ang isang linya, kinukuha ang unang salita bilang opsyon at itinuturing ang natitira bilang mga argumento ng opsyong iyon. Kaya ang linyang gaya ng cert server.crt port 1194 ay hindi dalawang tagubilin na magkasunod. Isa itong opsyong cert na may tatlong argumento, at ang pangatlo ay hindi pangalan ng file na tinatanggap ng opsyong iyon. Tama ang basahin ang error bilang nawawalang linya; hindi tama ang basahin ito bilang nawawalang direktiba.

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

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

Ang dalawang naayos na linyang iyon ay isang fragment, hindi configuration. Umiiral ang mga ito upang ipakita kung saan nararapat ang hangganan. Ang bawat ordinaryong direktiba sa isang profile ay sumusunod sa parehong tuntunin, at ang linyang nagsasama ng dalawa sa kanila ay gumagawa ng alinman sa error sa argumento o halagang hindi inaasahan ng opsyong iyon.

Patunayan na totoo ang paghahati ng linya

Nagbabalot ang mga editor para sa pagpapakita. Ang ilan ay nagsisingit din ng matitigas na paghahati kapag nag-paste ka, at ang iba ay hindi, kaya ang parehong biswal na resulta ay maaaring magmula sa dalawang magkaibang file. Ipakita ang mga dulo ng linya at bilangin ang mga linya bago mo baguhin ang anuman. Ang pagsukat ay nagkakahalaga ng isang utos; ang paghula ay nagkakahalaga ng isang gabi.

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

Sa unang output, lumilitaw ang bawat tunay na paghahati ng linya bilang isang marker na $, kaya ang linyang binalot pero hindi hinati ay walang markang nakikita kung saan nagbabalot ang screen mo. Ang ikalawang utos ay naglilimbag ng mga linyang may numero, na siyang pinakamabilis na paraan upang ihambing ang iniuulat ng parser sa laman ng file.

Ang dagdag na espasyo ay hindi rin gumagawa ng direktiba. Kosmetiko ang indentasyon, at ang linyang nagsisimula sa puting espasyo ay pareho pa ring nag-iisang opsyon. Kung itinuturo ng mensahe ng error ang isang numero ng linya, basahin ang eksaktong linyang iyon sa halip na ang talatang kinabibilangan nito.

Sipiin ang isang path, hindi listahan ng direktiba

Umiiral ang mga panipi para sa mga argumentong may espasyo, hindi para sa pagpapangkat ng mga opsyon. Ang path ng certificate na may espasyo ay nangangailangan ng sarili nitong mga panipi; ang dalawang direktibang nagbabahagi ng isang pares ng panipi ay isa pa ring sirang linya.

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

Suriin ang mga pangalan ng opsyon kasabay ng layout, dahil ang pinagsamang linya ay maaaring gumawa ng tila kapani-paniwalang token na hindi kailanman umiral. Ang direktiba ng port ay port; ang profile na gumamit ng iba para sa parehong ideya ay mabibigo kahit na matapos ayusin ang mga hangganan ng linya. Kapag ang isang pangalan ay tila hindi pamilyar, ihambing ito sa listahan ng opsyon para sa bersyong pinapatakbo mo sa halip na sa isang halimbawa sa forum.

Panatilihin ang inline na bloke bilang bloke

Maaaring magdala ng mga certificate at key nang inline ang mga profile, at ang mga blokeng iyon ay data, hindi configuration. Ang mga linyang PEM sa loob ng bloke ay hindi mga opsyong dapat patagin, i-indent muli o pagsamahin, at ang mga marker ng bloke ay dapat manatili sa kani-kanilang linya.

Tratuhin ang inline na bloke bilang opaque na rehiyon: itama ang mga linyang opsyon sa paligid nito, iwanang hindi ginalaw ang laman nito byte kada byte, at huwag kailanman i-paste ito sa pampublikong thread ng suporta. Kung muling isinulat ng tool sa pag-format ang bloke, ibalik ito mula sa iyong PKI sa halip na ayusin ito nang manu-mano.

Ayusin ang pinakamaliit na seksyon, hindi ang template

Ang nakatuksong pag-aayos ay palitan ang buong file ng configuration mula sa tutorial na „gumagana”. Ipinagpapalit niyaon ang isang sirang linya para sa isang serye ng pagbabago sa patakaran na walang sinumang nagrepaso: ibang mga parameter ng DH, mga setting ng compression, pagpili ng cipher, mga doble ang listener. Maliit at lokal ang orihinal na problema, at ang kapalit ay wala sa dalawa.

Kopyahin ang profile sa isang protektadong working file, itama ang mga hangganan ng linya sa kopyang iyon, at hayaang i-load ito ng normal na may-ari ng serbisyo. Pagkatapos ay simulan ang instance at basahin ang unang error, kung mayroon, mula sa simula.

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

Kapag pumasa ang yugto ng pag-parse, ang susunod na pagkabigo ay tungkol sa file, certificate o cipher sa halip na bokabularyo, at iyon ay tunay na progreso. Itago ang working copy at isang linyang tala tungkol sa kung ano ang pinagsama; ang parehong pag-paste ay mangyayari muli sa ibang tao sa parehong team.

Kaugnay na mga artikulo