Mae proffil a arferai gychwyn nawr yn methu â gwall opsiynau, ac mae’r llinell y mae’r dosrannydd yn ei dyfynnu yn edrych yn hollol resymol ar y sgrin. Dyna’r fagl: rhestr o linellau corfforol yw ffeil ffurfweddu, pob un yn dal un gair allweddol opsiwn a’i ddadleuon, ac mae llinell hir wedi’i lapio gan olygydd yn edrych yn union yr un fath â dwy linell nes edrych ar y beitiau. Nid oes dim yn ymwneud â’r rhwydwaith, y dystysgrif na’r twnnel yn y dosbarth hwn o fethiant. Gall dwy linell sy’n edrych yn union yr un fath ar y sgrin fod yn wahanol o un beit.

Ewch drwy’r gwiriadau isod yn eu trefn a stopiwch ar yr un cyntaf sy’n methu. Mae pob un yn rhatach na’r nesaf, ac mae pob un yn dileu esboniad gwahanol.

Un llinell, un cyfarwyddyd

Mae’r dosrannydd yn darllen llinell, yn cymryd y gair cyntaf fel yr opsiwn ac yn trin y gweddill fel dadleuon yr opsiwn hwnnw. Felly nid yw llinell fel cert server.crt port 1194 yn ddwy gyfarwyddyd yn olynol. Un opsiwn cert gyda thri dadl ydyw, ac nid yw’r drydedd yn enw ffeil y mae’r opsiwn yn ei dderbyn. Mae darllen y gwall fel toriad llinell ar goll yn gywir; nid yw ei ddarllen fel cyfarwyddyd ar goll felly.

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

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

Mae’r ddwy linell gywiredig hynny yn ddarn, nid yn ffurfweddiad. Maent yn bod i ddangos ble mae’r ffin yn perthyn. Mae pob cyfarwyddyd cyffredin mewn proffil yn dilyn yr un rheol, ac mae llinell sy’n uno dwy ohonynt yn cynhyrchu naill ai gwall dadl neu werth na fyddai’r opsiwn wedi’i ddisgwyl.

Profwch fod y toriad llinell yn real

Mae golygyddion yn lapio ar gyfer arddangos. Mae rhai hefyd yn mewnosod toriadau caled pan fyddwch yn gludo, ac nid yw eraill, felly gall yr un canlyniad gweledol ddod o ddwy ffeil hollol wahanol. Dangoswch derfynau’r llinellau a chyfrwch y llinellau cyn newid unrhyw beth. Mae mesur yn costio un gorchymyn; mae dyfalu yn costio noswaith.

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

Yn yr allbwn cyntaf mae pob toriad llinell go iawn yn ymddangos fel marc $, felly nid yw llinell wedi’i lapio ond heb ei thorri yn dangos dim marc lle mae’ch sgrin yn lapio. Mae’r ail orchymyn yn argraffu llinellau wedi’u rhifo, sef y ffordd gyflymaf i gymharu’r hyn y mae’r dosrannydd yn ei adrodd â’r hyn sydd yn y ffeil.

Nid yw gofodau ychwanegol yn creu cyfarwyddyd ychwaith. Mae mewnoli yn gosmig, ac mae llinell sy’n dechrau â gofod gwyn yn dal yr un opsiwn sengl. Os yw’r neges gwall yn pwyntio at rif llinell, darllenwch yr union linell honno yn hytrach na’r paragraff y mae’n perthyn iddo.

Dyfynnwch lwybr, nid rhestr o gyfarwyddiadau

Mae dyfynbrisiau yn bod ar gyfer dadleuon sy’n cynnwys gofodau, nid ar gyfer grwpio opsiynau. Mae angen ei ddyfynbrisiau ei hun ar lwybr tystysgrif sydd â gofod; mae dau gyfarwyddyd sy’n rhannu pâr o ddyfynbrisiau sydd o hyd yn un llinell gam.

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

Gwiriwch enwau’r opsiynau ar yr un pryd â’r trefniant, oherwydd gall llinell unedig gynhyrchu tocyn sy’n edrych yn gredadwy na fu erioed. Y cyfarwyddyd porth yw port; bydd proffil sy’n defnyddio rhywbeth arall ar gyfer yr un syniad yn methu hyd yn oed ar ôl cywiro ffiniau’r llinellau. Pan fydd enw’n edrych yn anghyfarwydd, cymharwch ef â rhestr yr opsiynau ar gyfer y fersiwn rydych yn ei rhedeg yn hytrach nag ag enghraifft o fforwm.

Cadwch flociau mewnlin fel blociau

Gall proffiliau gario tystysgrifau ac allweddi mewnlin, ac mae’r blociau hynny yn ddata yn hytrach na ffurfweddiad. Nid yw’r llinellau PEM y tu mewn i floc yn opsiynau i’w fflatio, eu hail-fewnoli na’u huno, ac mae’n rhaid i farciau’r bloc aros ar eu llinellau eu hunain.

Triniwch floc mewnlin fel rhanbarth anhydraidd: cywirwch y llinellau opsiwn o’i amgylch, gadewch ei gynnwys yn beit wrth feit, a pheidiwch byth â’i ludo i edefyn cymorth cyhoeddus. Os yw teclyn fformatio wedi ailysgrifennu’r bloc, adferwch ef o’ch PKI yn hytrach na’i atgyweirio â llaw.

Trwsiwch yr adran leiaf, nid y templed

Y trwsio temtasiwn yw disodli’r ffeil gyfan â ffurfweddiad o diwtorial sy’n “gweithio”. Mae hynny’n cyfnewid un llinell gam am set o newidiadau polisi na chafodd neb eu hadolygu: gwahanol baramedrau DH, gosodiadau cywasgu, dewisiadau seiffr, gwrandawyr dyblyg. Mae’r broblem wreiddiol yn fach ac yn lleol, ac nid yw’r disodliad yn y naill na’r llall.

Copïwch y proffil i ffeil waith warchodedig, cywirwch ffiniau’r llinellau yn y gopi hwnnw, a gadewch i berchennog arferol y gwasanaeth ei lwytho. Yna cychwynnwch y gweithrediad a darllenwch y gwall cyntaf, os o gwbl, o’r dechrau.

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

Pan fydd y cam dosrannu yn pasio, bydd y methiant nesaf yn ymwneud â ffeil, tystysgrif neu seiffr yn hytrach nag â geirfa, ac mae hynny’n gynnydd gwirioneddol. Cadwch y gopi gwaith ac nodyn un llinell am yr hyn a unwyd; bydd yr un gludwaith yn digwydd eto i rywun arall yn yr un tîm.

Erthyglau cysylltiedig