OpenVPN-এ রুটটি কোথায় থাকবে: ক্লায়েন্টে না সার্ভারে?
সার্ভার কনফিগে খালি রুট সার্ভারকে বদলায়, ক্লায়েন্টকে নয়। ক্লায়েন্ট ফাইল, গ্লোবাল push বা একক ক্লায়েন্টের push বেছে নিন এবং কী পৌঁছাল তা যাচাই করুন।
আপনি সার্ভার কনফিগারেশনে route 10.60.0.0 255.255.255.0 যোগ করেন, রিস্টার্ট করেন, ল্যাপটপ আবার সংযোগ করেন, তবুও ওই ল্যাপটপ থেকে সাবনেট এখনো পৌঁছানো যায় না। লাইনটি গৃহীত হয়েছে, সার্ভিস পরিষ্কারভাবে চালু হয়েছে, আর লগে কিছুই ভুল দেখাচ্ছে না। যা ঘটেছে তা হলো, রুটটি আপনি যে মেশিনটি সম্পাদনা করেছেন সেখানেই ইনস্টল হয়েছে: গেটওয়ে এখন মনে করে সে ওই প্রিফিক্সে পৌঁছাতে পারে, অথচ ক্লায়েন্টকে কিছুই বলা হয়নি। স্থানটাই পুরো প্রশ্ন, আর একই লাইন চারটি স্থানে থাকতে পারে।
চারটি স্থান এবং প্রতিটি কে পায়
একটি রুট ক্লায়েন্টের নিজের কনফিগারেশন দিয়ে যোগ করা যায়, গ্লোবাল push-এর মাধ্যমে প্রতিটি ক্লায়েন্টকে দেওয়া যায়, ক্লায়েন্ট-নির্দিষ্ট ফাইলের মাধ্যমে একজন ক্লায়েন্টকে দেওয়া যায়, অথবা সার্ভারের নিজের রাউটিং প্রসঙ্গে লেখা যায়।
ওই চারটি ক্ষেত্রেই প্রায় অভিন্ন সিনট্যাক্স ব্যবহৃত হয় এবং সম্পূর্ণ ভিন্ন ফল দেয়। প্রথম তিনটি প্রভাবিত করে ক্লায়েন্ট টানেলে কী পাঠায়; চতুর্থটি প্রভাবিত করে সার্ভার কীভাবে একটি নেটওয়ার্কে পৌঁছায়, যা তখন উপকারী যখন সার্ভারের নিজেরই একটি পথ দরকার এবং ক্ষতিকর যখন এটিকে বিতরণ ভেবে ভুল করা হয়।
লাইনটি লেখার আগে চারটির মধ্যে কোনটি চান তা ঠিক করুন, তারপর প্রাপক নিশ্চিত করুন।
| Placement | Effect | Receiver |
|---|---|---|
| Client profile route | Installed by the client at connect | That client only |
Global push "route ..." | Sent to every client that accepts pushed options | All pulling clients |
| Client-specific push | Sent to the matching client context | One identity |
| Server config route, no push | Added to the server's own table | The gateway itself |
খালি সার্ভার রুট মানুষকে অবাক করে কেন
সার্ভার কনফিগারেশনই প্রশাসকরা প্রথমে দেখেন, আর সেখানকার রুট নির্দেশনা VPN নেটওয়ার্ক সম্পর্কে একটি বিবৃতি বলে মনে হয়। তা নয়। OpenVPN এটিকে ডেমন চলছে এমন মেশিনে স্থানীয় রুট ইনস্টল হিসেবে ধরে, যা ঠিক সেই ধরনের পরিবর্তন যা আপনি ip route দিয়ে করতেন এবং পরে ভুলে যেতেন।
বিতরণের জন্য রুটটি push করতে হয়, আর push-এর জন্য ক্লায়েন্টকে টানতে হয়। টানা অপশন নিষ্ক্রিয় করে চালু করা ক্লায়েন্ট প্রস্তাবটি সম্পূর্ণ উপেক্ষা করে। সার্ভার ফাইল পুনর্লিখনের আগে ওই হ্যান্ডশেকের দুই প্রান্তই যাচাই করুন, কারণ সার্ভারের লগ অভিযোগ করবে না: তার দিক থেকে প্রস্তাব পাঠানো হয়েছে। গৃহীত রুটও কেবল পরের সংযোগেই কার্যকর হয়, আপনি যে সেশনে আছেন সেখানে কখনোই নয়।
দুটি কাজকে আলাদা হিসেবে দেখলেই ব্যর্থতা রহস্যময় থাকা বন্ধ করে: সার্ভার প্রিফিক্সে পৌঁছায়, ক্লায়েন্ট পারে না, আর দুটি বাক্যই একই সময়ে সত্য।
প্রতি-ক্লায়েন্ট ফাইল এবং যে পরিচয়ের সঙ্গে তারা মেলে
ক্লায়েন্ট-নির্দিষ্ট ফাইলের নাম রাখা হয় সেই পরিচয় অনুযায়ী যা সার্ভার প্রমাণ করেছে, যা ডিফল্টভাবে সার্টিফিকেটের কমন নেম। ডেস্কটপ ক্লায়েন্টে বন্ধুত্বপূর্ণ সংযোগের নাম ওই মান নয়, আর অমিল হলে এমন ফাইল তৈরি হয় যা কখনো পড়া হয় না।
সার্ভার আসলে যে ডিরেক্টরি ব্যবহার করে তা যাচাই করুন, তারপর নিশ্চিত করুন ফাইলের নাম প্রমাণিত পরিচয়ের সঙ্গে হুবহু মেলে, বড়-ছোট হাতের অক্ষরসহ।
grep -n 'client-config-dir' /etc/openvpn/server/server.conf
ls -l /etc/openvpn/ccd/ওই ফাইলের ভেতরেও রুটটি push করতে হয়, কারণ প্রতি-ক্লায়েন্ট প্রসঙ্গ হলো সেই ক্লায়েন্টের সেশনে প্রয়োগ করা অপশনের একটি সেট, স্থানীয় রাউটিং টেবিল নয়। সেখানে খালি রুটের সমস্যা গ্লোবাল ফাইলের খালি রুটের মতোই।
ক্লায়েন্টের নিজের ফাইল এবং যে টুল এর মালিক
ক্লায়েন্টের কনফিগারেশনে রাখা রুট সেই ক্লায়েন্ট সংযোগ করার সময় ইনস্টল হয় এবং বিচ্ছিন্ন হলে সরানো হয়, যা একটি স্থির গন্তব্যের জন্য সঠিক জীবনচক্র।
যদি কোনো নেটওয়ার্ক ম্যানেজার প্রোফাইলের মালিক হয়, সে ওই অপশনগুলো একবার আমদানি করে নিজের কপি রাখতে পারে। পরে ডাউনলোড করা ফাইল সম্পাদনা করলে কিছুই বদলায় না, আর এটাই "রুট আছে কিন্তু প্রয়োগ হয় না" কথাটির সাধারণ কারণ।
আপনি যে ফাইল ডাউনলোড করেছেন তা নয়, সক্রিয় প্রোফাইল যাচাই করুন, এবং ম্যানেজার যে আমদানি করা সেটিংস দেখায় তা যাচাই করুন। তারপর সংযোগ করে সিস্টেমকে জিজ্ঞাসা করুন একটি নির্দিষ্ট ঠিকানা কোন পথ ব্যবহার করে, টেক্সট ফাইলে রুট ছিল বলে টানেল জিতেছে ধরে নেওয়ার বদলে।
ক্লায়েন্টে যাচাই করুন, তারপর ফেরার পথ দেখুন
গন্তব্যের জন্য ক্লায়েন্টের নিজের রাউটিং টেবিলকে জিজ্ঞাসা করুন, সার্ভারেরটা নয়। প্রিফিক্সের ভেতরের একটি হোস্টের জন্য লুকআপই যথেষ্ট দেখাতে কোন ইন্টারফেস ও পরের হপ ব্যবহার হবে।
ip route get 10.60.0.10লুকআপ টানেলের দিকে ইঙ্গিত করলে বিতরণ কাজ করেছে এবং বাকি সমস্যা অন্যত্র। এটি ডিফল্ট গেটওয়ের দিকে ইঙ্গিত করলে রুটটি ইনস্টল হয়নি, ক্লায়েন্ট-সাইড অপশনে ফিল্টার হয়েছে, বা ক্লায়েন্ট যে প্রোফাইল ব্যবহার করে না তার অন্তর্গত।
ধরে নিন বিতরণ কাজ করেছে তবুও কিছু সাড়া দেয় না: তাহলে গেটওয়েতে ফরওয়ার্ডিং, অপর প্রান্তের ফেরার রুট এবং তাদের মধ্যবর্তী যেকোনো ফায়ারওয়াল যাচাই করুন। রুট একটি পথ বেছে নেয়, প্রবেশাধিকার দেয় না।