දෝෂය .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 ඩම්ප පෞද්ගලික යතුරක් තිබිය හැකි ගොනුවකට නරක තැනකි, මන්ද කේතන ගැටලුව නිවැරදි කිරීම පහසුය, කාන්දු වූ යතුරක් නොවේ.

අදාළ ලිපි