Ката .ovpn файлынын биринчи сабын көрсөтөт жана client турушу керек жерде аралашкан тамгаларга окшош нерсени келтирет. Файл редакторуңузда эч кыйынчылыксыз ачылат, биринчи сап client деп окулат, ал эми директива толугу менен кадимки. Эки байкоо тең туура, анткени редактор байттарды декоддойт, клиент болсо андай кылбайт. Сиз көрүп жаткан нерсе дээрлик дайыма коддоо маселеси, синтаксис маселеси эмес.

Уламыш: редактор сизге файлды көрсөтөт

Тексттик редактор байттарды өзү аныктаган же божомолдогон коддоо менен белгилерге айландырат. Ал UTF-16 деп божомолдосо, файл экранда кемчиликсиз көрүнөт, ал эми астындагы байттар жуп болуп, ар бир латын тамгасынан кийин нөлдүк байт келет. OpenVPN ошол байттарды белги катары окуйт, ал эми дал келбестик ал талдоого аракет кылган биринчи директивада көрүнөт.

Демек, көрүнгөн сап менен жеткирилген сап эки башка нерсе. Көрүп жаткан кызык белгилерди өчүрүү — бул коддоонун эмес, көрсөтүүнүн өзгөрүшү, жана кийинки талдоо ошол эле себептен бир аз башка билдирүү менен ийгиликсиз болот. Ошондуктан катадагы белгинин артынан түшүү эч качан эч жерге алып барбайт. Байттар булакта эле туура эмес, ал эми андан ары ар бир окуучу ошол эле бузулган ырааттуулукту божомолдойт.

Ийгиликсиздиктин конкреттүү формасын таанууга татыктуу, анткени ал өзгөчө түрдө диагностикалык. Файлдын дал башында белги, башка машиналарда иштеген профилде, сөздүк эмес, байт тартиби жөнүндө суроо.

Алгачкы байттар чындыгында эмнени айтат

Белгилерди эмес, байттарды окуңуз. Эки кичинекей буйрук муну секунддарда чечет жана экөө тең файлды өзгөртүшү мүмкүн колдонмодо ачууну талап кылбайт:

file client.ovpn
head -c 24 client.ovpn | od -An -tx1

Сиз издеген үлгү — ар бир экинчи байты нөл болгон тексттин алдындагы жуп баштапкы байт. FF FE UTF-16 little-endian, FE FF big-endian, ал эми EF BB BF байт тартибинин белгиси бар UTF-8 дегенди билдирет. Белгисиз кадимки UTF-8 файлы түздөн-түз биринчи тамганын байты менен башталат.

Тамгалардын ортосундагы нөлдүк байттар — негизги белги. UTF-16 little-endian кодууда client сөзү алты эмес, он эки байт ээлейт, анткени ар бир ASCII белгисинен кийин нөл келет. Бул структураны редактордун экраны сизге көрсөтө албайт жана аны эки байтты өчүрүү да жок кыла албайт.

Бул жерде маанилүү нюанс бар: OpenVPN конфигурация окуучусу файлдын башындагы UTF-8 байт тартибинин белгисин чын эле өткөрүп жиберет, муну 2.6 конфигурация окуучусу көрсөтөт. Бул чыдамкайлык дал ошол белгиге тиешелүү жана тамгалары нөлдөр менен толтурулган UTF-16 файлы үчүн эч нерсе кылбайт. Эки белгини бир маселе деп эсептөө — уламыштын экинчи жарымы.

Айландыруу — өчүрүү эмес, башкача сактоо

Бир нерсе кылуудан мурун оператордун түпнускасынын тийбеген көчүрмөсүн сактап, өзүнчө файл менен иштеңиз. Профилде жеке ачкыч же каттоо эсебинин материалдары болушу мүмкүн, ошондуктан көчүрмө — сиздин кайтуу жолуңуз да, маалымдамаңыз да.

Анан чыныгы коддоо айландыруусун аткарыңыз: же редактордун ачык коддоо менюсу менен, же кирүү жана чыгуу коддоосун көрсөткөн айландыргыч менен:

iconv -f UTF-16 -t UTF-8 client.ovpn > client-utf8.ovpn
file client-utf8.ovpn

Буйруктун чыгуу статусуна ишенүүнүн ордуна натыйжаны текшериңиз. Айландыруу ар бир директиваны сакташы керек жана өзүнүн маркерлеринин ичинде каалаган курулган сертификат же ачкыч блогун байт-байт сактоого милдеттүү. PEM маалыматтарын кайра ороп, блоктун ичиндеги сап аяктарын өзгөртүп же айландыруу учурунда профилди кайра форматтасаңыз, эски маселени оңдоп жатып жаңы маселе жаратасыз.

Клиентти же кызматты айландырылган файлга багыттап, ал билдирген биринчи катаны караңыз. Эгер аралашкан белги жок болсо, коддоо иши бүттү, ал эми андан кийин ийгиликсиз болгон нерсе башка суроо.

Оңдолгон коддоо эмнени оңдобойт

Коддоо тексттин кантип окулушун аныктайт; ал алдыңыздагы клиент үчүн параметрлердин жарактуу экенин айтпайт. Башка ишке ашыруу үчүн экспорттолгон профил таза талданып, ошентсе да иштеп жаткан курулма колдобогон параметр же аргументи ошол клиентте башка маани берген директива себебинен четке кагылышы мүмкүн.

Ошол кийинки каталар өзүнүн иликтөөсүнө татыктуу: так жазылышы, аргументтин синтаксиси жана аны кабыл алган версия. Ийгиликтүү талдоону ийгиликтүү профиль деп эсептебеңиз.

Ушуну менен алек болуп жатканда иликтөөнү жергиликтүү кармаңыз. Коомдук онлайн айландыргычтар жана чапталган hex чыгарылыштары жеке ачкыч болушу мүмкүн файл үчүн жаман жер, анткени коддоо маселесин оңдоо оңой, ал эми агып кеткен ачкычты оңдоо оңой эмес.

Тектеш макалалар