Egy OpenVPN-direktíva soronként, és miért hazudik a tördelés
A puha tördelésű képernyő nem új sor a fájlban. Ellenőrizze a valódi sortöréseket, mielőtt egy hibás szakaszt egy idegen sablonjával helyettesít.
Egy profil, amely korábban elindult, most opcióhibával meghiúsul, és a parser által idézett sor teljesen ésszerűnek tűnik a képernyőn. Ez a csapda: a konfigurációs fájl fizikai sorok listája, mindegyik egy opciókulcsszót és annak argumentumait tartalmazza, és egy hosszú, szerkesztő által tördelt sor addig tűnik két sornak, amíg meg nem nézi a bájtokat. Ebben a hibaosztályban semmi sem érinti a hálózatot, a tanúsítványt vagy az alagutat. Két sor, amely a képernyőn azonosnak látszik, egyetlen bájttal eltérhet.
Végezze el az alábbi ellenőrzéseket sorrendben, és álljon meg az elsőnél, amelyik megbukik. Mindegyik olcsóbb a következőnél, és mindegyik más magyarázatot zár ki.
Egy sor, egy direktíva
A parser beolvas egy sort, az első szót veszi opciónak, a többit pedig az adott opció argumentumaiként kezeli. Egy ilyen sor, mint cert server.crt port 1194, tehát nem két egymás utáni utasítás. Ez egy cert-opció három argumentummal, és a harmadik nem olyan fájlnév, amelyet az opció elfogadna. A hibát hiányzó sortörésként olvasni helyes; hiányzó direktívaként olvasni nem az.
# malformed: one option, three arguments
cert server.crt port 1194
# intended: two options, one argument each
cert server.crt
port 1194
Ez a két kijavított sor töredék, nem konfiguráció. Azért vannak, hogy megmutassák, hova tartozik a határ. A profil minden közönséges direktívája ugyanezt a szabályt követi, és egy sor, amely kettőt összekapcsol, vagy argumentumhibát, vagy az opció által nem várt értéket eredményez.
Bizonyítsa be, hogy a sortörés valódi
A szerkesztők megjelenítéshez tördelnek. Némelyik beillesztéskor kemény töréseket is beszúr, némelyik nem, így ugyanaz a vizuális eredmény két nagyon különböző fájlból származhat. Mutassa meg a sorvégeket, és számolja meg a sorokat, mielőtt bármit módosít. A mérés egy parancsba kerül; a találgatás egy estébe.
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
Az első kimenetben minden valódi sortörés $-jelként jelenik meg, így a tördelt, de nem osztott sor nem mutat jelet ott, ahol a képernyő tördel. A második parancs számozott sorokat nyomtat, ami a leggyorsabb módja annak összehasonlítására, amit a parser jelent és amit a fájl tartalmaz.
A plusz szóközök sem hoznak létre direktívát. A behúzás kozmetikai, és a szóközzel kezdődő sor továbbra is ugyanaz az egyetlen opció. Ha a hibaüzenet sorszámra mutat, pontosan azt a sort olvassa, ne pedig a bekezdést, amelyhez tartozik.
Útvonalat idézzen, ne direktívalistát
Az idézőjelek a szóközt tartalmazó argumentumokhoz vannak, nem az opciók csoportosításához. A szóközt tartalmazó tanúsítványútvonal saját idézőjeleket igényel; két direktíva, amely egy idézőjelpáron osztozik, továbbra is egyetlen hibás sor.
cert "/etc/openvpn/pki/lab certs/server.crt"
key "/etc/openvpn/pki/lab certs/server.key"
Ellenőrizze az opcióneveket a szerkezettel egy időben, mert egy összekapcsolt sor hihetőnek tűnő tokent hozhat létre, amely soha nem létezett. A port-direktíva port; egy profil, amely valami mást használ ugyanarra az ötletre, a sorhatárok kijavítása után is megbukik. Ha egy név ismeretlennek tűnik, hasonlítsa össze a futtatott verzió opciólistájával, ne egy fórumos példával.
Az inline blokkok maradjanak blokkok
A profilok inline hordozhatnak tanúsítványokat és kulcsokat, és ezek a blokkok adatok, nem konfiguráció. A blokkon belüli PEM-sorok nem lapítható, újrahúzható vagy összefűzhető opciók, és a blokkjelölőknek a saját soraikon kell maradniuk.
Kezelje az inline blokkot átlátszatlan területként: javítsa a körülötte lévő opciósorokat, hagyja a tartalmát bájtról bájtra békén, és soha ne illessze be nyilvános támogatási szálba. Ha egy formázóeszköz átírta a blokkot, állítsa helyre a PKI-jából, ne javítsa kézzel.
A legkisebb szakaszt javítsa, ne a sablont
A csábító javítás az, hogy az egész fájlt lecserélik egy oktatóanyag konfigurációjára, amely „működik”. Ez egy hibás sort cserél egy sor olyan házirend-változásra, amelyet senki sem nézett át: más DH-paraméterek, tömörítési beállítások, titkosításválasztás, duplikált hallgatók. Az eredeti probléma kicsi és helyi, a csere pedig egyik sem.
Másolja a profilt védett munkafájlba, javítsa a sorhatárokat abban a másolatban, és hagyja, hogy a szolgáltatás szokásos tulajdonosa betöltse. Ezután indítsa el a példányt, és olvassa el az első hibát, ha van, az elejétől.
openvpn --config /etc/openvpn/server/lab.conf --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log
Amikor az elemzési szakasz átmegy, a következő hiba fájlról, tanúsítványról vagy titkosításról fog szólni, nem szókincsről, és ez valódi előrelépés. Őrizze meg a munkamásolatot és egy egysoros feljegyzést arról, mi lett összefűzve; ugyanez a beillesztés újra megtörténik valaki mással ugyanabban a csapatban.