Қате .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 шығыстары жеке кілт болуы мүмкін файл үшін нашар орын, өйткені кодтау мәселесін түзету оңай, ал ағып кеткен кілтті түзету оңай емес.

Қатысты мақалалар