যে সার্ভার লাইনে CIDR প্রত্যয়ের সঙ্গে ডটেড মাস্ক মেশানো হয়, তা ডেমনকে পোর্ট খোলার আগেই থামিয়ে দেয়। IPv4-এর জন্য server হেল্পার দুটি আলাদা আর্গুমেন্ট চায়: একটি সারিবদ্ধ নেটওয়ার্ক ঠিকানা, তারপর ডটেড আকারে নেটমাস্ক। ওই লাইনের বাকি সব অনুমান, আর অনুমানেই পুলের আকার ও ক্লায়েন্ট মাস্ক ভুল হয়।

হেল্পার যে দুটি আর্গুমেন্ট গ্রহণ করে

আগে নেটওয়ার্ক লিখুন, পরে মাস্ক, আর ঠিকানার সঙ্গে কিছু জুড়বেন না:

server 10.72.16.0 255.255.240.0

এটি /20-এর রূপ। নিচের লাইনটিই ভুল, আর এটি রানটাইমে নয়, অপশন পার্সিংয়ে ব্যর্থ হয়:

server 10.72.16.0/20 255.255.240.0

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

মাস্ক লেখার আগে নেটওয়ার্ক সারিবদ্ধ করুন

প্রথম ঠিকানাটি রেঞ্জের নেটওয়ার্ক ঠিকানা, তার ভেতরের সুবিধাজনক ক্লায়েন্ট ঠিকানা নয়। /20-এর জন্য স্প্যান 10.72.16.0 থেকে 10.72.31.255 পর্যন্ত, আর তাদের মধ্যে কেবল প্রথমটিই বৈধ নেটওয়ার্ক আর্গুমেন্ট। /21 ব্যবহার করে 255.255.248.0 এবং 10.72.16.0 থেকে 10.72.23.255 পর্যন্ত বিস্তৃত, তাই তার লাইন হলো server 10.72.16.0 255.255.248.0।

প্রিফিক্স বদলালে স্প্যান বদলায়, আর কিছুই নয়। একটি ক্লায়েন্ট কত ঠিকানা পায় তা বদলায় না, কারণ সেটি টপোলজির বৈশিষ্ট্য, এই লাইনের মাস্কের নয়।

সার্ভারের দিক থেকে পুল নিশ্চিত করুন

ইনস্ট্যান্সটি ফোরগ্রাউন্ডে বিস্তারিত লগিংসহ চালু করুন এবং হেল্পার যে লাইনগুলো দেয় তা পড়ুন। এটি যে পুল তৈরি করেছে তা স্টার্টআপে ছাপা হয়, যা হাতে হিসাব করার চেয়ে বেশি নির্ভরযোগ্য:

openvpn --config /etc/openvpn/server.conf --verb 4 --dev tun9 --port 1195

আউটপুটের ওপরের দিকে পুল সারসংক্ষেপ খুঁজুন। এতে হেল্পারের সংরক্ষিত রেঞ্জ তালিকাভুক্ত থাকে, আর সেই রেঞ্জ আপনার উদ্দেশ্যের সঙ্গে না মিললে মাস্কের গাণিতিক হিসাব যা-ই বলুক, লাইনের আর্গুমেন্ট ভুল।

তারপর একটি ক্লায়েন্ট সংযুক্ত করুন এবং যে লাইনে তাকে দেওয়া ঠিকানা লেখা আছে তা খুঁজুন। পুল রেঞ্জের পাশে ওই একটি ঠিকানাই বলে দেয় ক্লায়েন্ট সংরক্ষিত ব্লকের ভেতরে পড়েছে কি না, নাকি এমন জায়গায় যেখানে আপনি আশা করেননি। দুটি না মিললে ক্লায়েন্ট নয়, আর্গুমেন্ট ঠিক করুন। দুটি মিললেও ক্লায়েন্ট যদি কিছুতেই পৌঁছাতে না পারে, তাহলে পুল কখনও সমস্যাই ছিল না।

টপোলজি মাথায় রেখে ক্লায়েন্টের মাস্ক পড়ুন

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

সিদ্ধান্তে পৌঁছানোর আগে কনফিগার করা টপোলজি ও বরাদ্দ করা ঠিকানা একসঙ্গে যাচাই করুন:

ip -4 addr show tun0

ঠিকানা পুলের ভেতরে আর মাস্ক পুলের চেয়ে সরু হলে সেটি টপোলজির কাজ করা। ঠিকানা পুলের বাইরে হলে পুল ভুল, আর ক্লায়েন্টের দিক থেকে যত খুশি পরীক্ষা করলেও তা ঠিক হবে না।

চলমান পুল বদলানো

এমন রেঞ্জ বাছুন যা বর্তমান পুল, LAN বা ক্লায়েন্টদের কাছে ইতিমধ্যে পুশ করা যেকোনো রুট এর সঙ্গে ওভারল্যাপ না করে। ওভারল্যাপ হলো সেই ব্যর্থতা যা রিস্টার্ট উতরে যায় এবং কয়েক দিন পরে এক দিক থেকে একটি সাইট অপ্রাপ্য হিসেবে দেখা দেয়।

লাইন বদলান, রিস্টার্ট করুন, এবং ব্যবহারকারীদের ফিরতে দেওয়ার আগে স্টার্টআপ পুল আবার পড়ুন। নতুন রেঞ্জ যদি কিছুর সঙ্গে সংঘর্ষ করে, একই স্টার্টআপ আউটপুট তা সঙ্গে সঙ্গে দেখায়, আর রোলব্যাক হলো এক লাইনের সম্পাদনা আর আরেকটি রিস্টার্ট।

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

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