OpenVPN চালু হয় না, আর ত্রুটির বার্তা এমন একটি লাইন দেখায় যা দেখতে ঠিকই আছে: Unrecognized option or missing or extra parameter(s) in office.ovpn:42: ca। সার্টিফিকেট বদলায়নি, ফাইলটি এডিটরে খোলে, আর পাথে দেখতে কিছুই ভুল নয়। পার্সার অপশনের নামে আপত্তি করছে না; সে আপত্তি করছে তার সঙ্গে কতগুলো আর্গুমেন্ট এসেছে তা নিয়ে। চারটি যাচাই প্রায় প্রতিটি এমন ঘটনা মিটিয়ে দেয়, আর সেগুলো খরচের ক্রমে চালানোই ভালো।

পার্সার কেন অপশনকেই দোষ দেয়

প্রতিটি কনফিগারেশন লাইন কোনো অপশন তা দেখার আগেই হোয়াইটস্পেস আর কোটেশনে ভাগ হয়ে যায়। তাই স্পেস থাকা কোনো মান কোটেশনে মোড়া না থাকলে একাধিক আর্গুমেন্ট হিসেবে আসে, আর যে অপশনটি লাইনটির মালিক সে-ই অমিলের কথা জানায়। Windows-এ ডিফল্ট ইনস্টল ডিরেক্টরি এটিকে নিশ্চিত করে, কারণ C:\Program Files গঠনগতভাবেই পাথের মাঝখানে বসে থাকে। এই ত্রুটিতে সার্টিফিকেট কখনো খোলা হয় না, তাই ফাইলটি আছে কি না দেখা কোনো কাজে আসে না।

যে লাইন নম্বর জানানো হয় তা সাধারণত ঠিকই থাকে, আর যে অপশন জানানো হয় সেটিই লাইনটি খরচ করেছে। যখন বলা অপশনটি এমন যে আপনি জানেন আপনি কখনো লেখেননি, তার উপরের লাইনটি পড়ুন, কারণ আগের কোনো ব্লকে হারানো কোটেশন পার্সিংকে সরিয়ে দেয়। এভাবেই একটি সার্টিফিকেট ব্লক আর্গুমেন্টের সংখ্যার দায় নিয়ে ফেলে।

ca C:\Program Files\OpenVPN\config\office-ca.crt

স্পেস আছে এমন প্রতিটি পাথে কোটেশন দিন

মানটির চারপাশে এক জোড়া ডাবল কোটেশনই পুরো মেরামত, আর Windows-এ ফরওয়ার্ড স্ল্যাশ গ্রহণযোগ্য, তাই এস্কেপিং কখনো সমস্যার অংশ হয় না। একই ধাপেই প্রতিটি পাথ অপশন ঠিক করুন, কারণ পার্সার প্রথম ব্যর্থতাতেই থামে আর পরেরটি শুধু পরের বার চালুর জন্য অপেক্ষা করে। সেটটিতে সাধারণত থাকে ca, cert, key, tls-auth এবং auth-user-pass।

ca "C:/Program Files/OpenVPN/config/office-ca.crt"
cert "C:/Program Files/OpenVPN/config/office.crt"
key "C:/Program Files/OpenVPN/config/office.key"

ডিরেক্টরির নাম খুঁজলে ফাইল পড়ার চেয়ে দ্রুত প্রতিটি জায়গা পাওয়া যায়। কিছু সম্পাদনার আগেই এটি চালান, যাতে তালিকাটি সম্পূর্ণ হয়:

Select-String -Path .\office.ovpn -Pattern 'Program Files'

প্রোফাইলটি স্পেসহীন পাথে সরানো একটি বৈধ বিকল্প, আর তা কেবল তখনই বৈধ যখন প্রতিটি পাথও তার সঙ্গে সরে। অর্ধেক সরানো প্রোফাইল ভিন্ন ফাইলনামে একই ত্রুটি ফিরিয়ে আনে, আর তা ধরতে বেশি কঠিন, কারণ বার্তাটি এখন আপনার সদ্য বানানো পাথ দেখায়। একটি পদ্ধতি বেছে নিন আর সেটি শেষ করুন।

সার্টিফিকেটের আগে মোড ঘোষণা ফিরিয়ে আনুন

দ্বিতীয় সাধারণ কারণটি একই নষ্ট হওয়া বিকেল নিয়ে ভিন্ন বার্তা দেয়। ক্লায়েন্ট প্রোফাইলকে তার মোড উপরের দিকে ঘোষণা করতে হয়, আর শুধু সার্টিফিকেট ব্লকগুলো নতুন ফাইলে পেস্ট করলে সেই ঘোষণাটি হারানো সহজ। তা ছাড়া OpenVPN ফাইলটি ভিন্ন ডিফল্ট সেট দিয়ে পড়ে, আর ক্ষতিটি অনেক পরে অপশনগুলোর মধ্যে দ্বন্দ্ব বা লগইন ব্যর্থতা হিসেবে দেখা দেয়। অনুপস্থিত লাইনটি যাচাই করতে সস্তা আর ভুলতে ব্যয়বহুল।

client
dev tun
proto udp
remote vpn.example.net 1194

সেখানে থাকতে প্রতি লাইনে একটি নির্দেশনা রাখুন। জোড়া লাগানো লাইন প্রথম অংশের ঠিক সেই আর্গুমেন্ট-সংখ্যার ত্রুটিই দেয়, আর জানানো লাইনটি যুক্তিসঙ্গত দেখায়, কারণ জোড়া লাগাটি ঘটেছে যেখানে এডিটর লেখাটি মোড় দিয়েছে। রেন্ডার করা লাইন নয়, কাঁচা লাইনটি পড়ুন।

এনকোডিংয়ের ক্ষতি অপশনের নামের মতো দেখায়

UTF-16 হিসেবে সংরক্ষিত এবং বাইট-অর্ডার মার্কযুক্ত একটি ফাইল তার প্রথম অপশনটি পার্সার থেকে লুকিয়ে রাখে, আর আলগা বাইট বার্তায় অপশনের নামে জুড়ে বসতে পারে। ফাইলটি বাইট-অর্ডার মার্ক ছাড়া UTF-8 হিসেবে সংরক্ষণ করুন, তারপর আবার খুলে নিশ্চিত হোন যে প্রথম অক্ষরটি সাধারণ বর্ণ। এডিটর, PowerShell রিডাইরেকশন আর চ্যাট উইন্ডো থেকে পেস্ট করা লেখা সবই না জিজ্ঞেস করেই এনকোডিং বদলে দেয়।

Format-Hex .\office.ovpn | Select-Object -First 1

বাইট-অর্ডার মার্ক যেকোনো লেখার আগে অগ্রণী মার্কার বাইট হিসেবে দেখা যায়, আর ওই অক্ষরগুলো হাতে মুছে ফেলা হারানো চাল, কারণ এডিটর পরের সংরক্ষণেই সেগুলো আবার লিখে দেয়। বরং স্পষ্ট এনকোডিং দিয়ে ফাইলটি আবার সংরক্ষণ করুন। লাইন শেষগুলো বেশি সহনশীল, কিন্তু শেষে নতুন লাইন নেই এমন ফাইল সম্পাদনার পর শেষ নির্দেশনাটিকে আগেরটির সঙ্গে মিলিয়ে ফেলতে পারে।

কোন যাচাই আগে, আর কেন

এনকোডিং দিয়ে শুরু করুন, কারণ এতে একটি কমান্ড লাগে আর ফাইলের বাকি সব পাঠকে অকার্যকর করে দেয়। তারপর কোটেশন, তারপর মোড ঘোষণা ও বাকি বাধ্যতামূলক নির্দেশনাগুলো, আর কেবল তার পরেই সার্টিফিকেট, কী ও প্রমাণপত্র। এই ক্রমে কাজ করলে প্রতিটি ধাপ ফেরানো যায়, কারণ কোটেশনের সমস্যা ঠিক করতে বদলানো সার্টিফিকেট একটি চলমান ইনস্টলকে মূল থেকে দুই সম্পাদনা দূরের নতুন ব্যর্থতা দিয়ে রেখে যায়। আলাদা আলাদা যাচাইয়ের চেয়ে ক্রমটিই বেশি জরুরি।

অপারেটর যেভাবে পাঠিয়েছে সেভাবেই ফাইলটির একটি অস্পৃষ্ট কপি রাখুন। পরে কোনো সম্পাদনা সেটি ভাঙলে ওই কপির সঙ্গে তুলনা দেখায় কোটেশন, নতুন লাইন বা মার্কার বাইট সরেছে কি না, আর তা ত্রুটি আবার পড়ার চেয়ে দ্রুত। প্রতিটি নির্দেশনার অপশন-তথ্য ইনস্টল করা সংস্করণের OpenVPN ম্যানুয়ালে আছে।

সম্পর্কিত নিবন্ধ