ifconfig-push: net30-এ পিয়ার ঠিকানা নাকি subnet-এ নেটমাস্ক?
ifconfig-push-এর দ্বিতীয় আর্গুমেন্ট net30-এ পিয়ার ঠিকানা এবং topology subnet-এর অধীনে নেটমাস্ক। CCD ফাইল সম্পাদনা করার আগে চলমান টপোলজি তুলনা করুন।
ডায়নামিক ক্লায়েন্ট সংযোগ করে এবং রাউটিং ঠিকঠাক কাজ করে, কিন্তু নির্দিষ্ট ঠিকানা থাকা একমাত্র ক্লায়েন্টটি সার্ভারে একেবারেই পৌঁছায় না। ফায়ারওয়ালে কিছুই বদলায়নি, আর CCD লাইনটি বিশ্বাসযোগ্য দেখায়। সাধারণ কারণটি হলো সার্ভার যে TUN টপোলজি চালাচ্ছে তার চেয়ে ভিন্ন একটির জন্য লেখা দ্বিতীয় আর্গুমেন্ট। ব্যর্থতাটি নীরব: ক্লায়েন্ট একটি ঠিকানা নিয়ে ওঠে এবং সার্ভার সংযোগটি গ্রহণ করে, তবুও কোনো ট্রাফিক পার হয় না।
net30-এ ওই ফিল্ডটি পিয়ার ঠিকানা; subnet-এ এটি নেটমাস্ক। দুটি ফর্মই বিকল্প, কখনোই ক্রম নয়।
দুটি ফর্ম, পাশাপাশি
প্রচলিত net30 স্থাপনায় প্রতিটি ক্লায়েন্ট একটি /30 ব্লকের মালিক: একটি নেটওয়ার্ক ঠিকানা, দুটি ব্যবহারযোগ্য ঠিকানা এবং একটি ব্রডকাস্ট ঠিকানা। ifconfig-push ক্লায়েন্টের ঠিকানা ও পিয়ার ঠিকানা নেয়, আর পিয়ার হলো একই ব্লকের অন্য ব্যবহারযোগ্য ঠিকানা, যা পয়েন্ট-টু-পয়েন্ট লিংকের সার্ভার পাশ ব্যবহার করে।
# net30: client address and its peer
ifconfig-push 10.99.0.6 10.99.0.5
# topology subnet: client address and the pool netmask
ifconfig-push 10.99.0.20 255.255.255.0
topology subnet-এর অধীনে ক্লায়েন্ট সার্ভারের সঙ্গে একটি subnet ভাগ করে, এবং একই ডিরেক্টিভ একটি ঠিকানা ও একটি নেটমাস্ক নেয়। সার্ভারের নিজের ঠিকানা আসে server ডিরেক্টিভ থেকে, দ্বিতীয় ফিল্ড থেকে নয়। ফর্ম দুটি মিশ্রিত করলে এমন ক্লায়েন্ট তৈরি হয় যে নিজেকে পয়েন্ট-টু-পয়েন্ট লিংকে ভাবে, অথচ সার্ভার তাকে subnet হোস্ট হিসেবে রাউট করে, বা উল্টোটি। এ কারণেই নেটমাস্ক কখনোই net30-এর সঙ্গে জোড়া দেওয়া উচিত নয়।
ব্লকের দুই লাইনই CCD ফাইলের জন্য একক লাইন। প্রতিটি ক্লায়েন্ট ঠিক একটিই পায়।
সার্ভার আসলে যে টপোলজি চালাচ্ছে তা পড়ুন
প্যাকেজের ডিফল্ট নয়, চলমান কনফিগারেশন পড়ুন, কারণ টপোলজি বহু বছর আগে সেট হয়ে সামনে কপি হয়ে থাকতে পারে। topology subnet বা তার অনুপস্থিতি খুঁজুন, তারপর server লাইনটি কীভাবে ঠিকানা বরাদ্দ করে তা দেখুন। যে কনফিগারেশন কখনো টপোলজির উল্লেখ করে না, তা subnet সেট করা কনফিগারেশনের সমান নয়।
তারপর ক্লায়েন্টের প্রাপ্ত সেটিংস পড়ুন। যে ঠিকানা, মাস্ক ও পিয়ার সে জানায় তা বলে দেয় সার্ভার কোন ব্যাখ্যা প্রয়োগ করেছে।
নির্দিষ্ট ঠিকানাটি ডায়নামিক পুলের বাইরে রাখুন
নির্দিষ্ট ঠিকানা অবশ্যই ডায়নামিক পুলের বাইরে থাকতে হবে, নইলে দুই ক্লায়েন্টকে একই ঠিকানা দেওয়া হতে পারে। subnet টপোলজিতে server লাইনে nopool স্বয়ংক্রিয় পুল দমন করে, এবং একটি স্পষ্ট ifconfig-pool রেঞ্জ নির্ধারণ করে ডায়নামিক ক্লায়েন্টেরা কী পায়।
dev tun
topology subnet
server 10.99.0.0 255.255.255.0 nopool
ifconfig-pool 10.99.0.100 10.99.0.210 255.255.255.0
client-config-dir /etc/openvpn/ccd
সার্ভার নিজের জন্য 10.99.0.1 নেয়, আর নির্দিষ্ট ক্লায়েন্ট ঠিকানাটি পুল রেঞ্জের বাইরে থাকে। CCD ফাইলটি প্রোফাইল ফাইলের নামে নয়, কার্যকর ক্লায়েন্ট পরিচয়ের নামে নামকরণ করা হয়, এবং এতে অতিরিক্ত এক্সটেনশন থাকে না। username-as-common-name সক্রিয় থাকলে প্রমাণিত ব্যবহারকারীর নামই হলো মেলানোর পরিচয়। একই পরিচয় ভাগ করা দুটি ডিভাইস নির্দিষ্ট ঠিকানাও ভাগ করবে, যা রাউটিং নয় বরং নীতি সংক্রান্ত সমস্যা।
ক্লায়েন্ট আসলে যে বরাদ্দ পেয়েছে তা যাচাই করুন
অন্য কিছু যাচাই করার আগে অভীষ্ট ক্লায়েন্টটি আবার সংযোগ করুন এবং কোন CCD ফাইল নির্বাচিত হয়েছিল তা নিশ্চিত করুন। তারপর ঠিকানা, মাস্ক বা পিয়ার, এবং সার্ভারে ফেরার রুট যাচাই করুন। subnet স্থাপনায় পিয়ার ঠিকানা দেখানো ক্লায়েন্টটি এখনো ভুল ফর্মই ব্যবহার করছে।
টপোলজি পরিবর্তন প্রতিটি ক্লায়েন্ট ও প্রতিটি ওভাররাইডকে প্রভাবিত করে, তাই এটিকে এক ক্লায়েন্টের মেরামত নয় বরং মাইগ্রেশন হিসেবে ধরুন। ইতিমধ্যে ব্যবহৃত টপোলজির সঙ্গে স্থির লাইনটি মিলিয়ে সংশোধন করাই সাধারণত ছোট পরিবর্তন। server-options রেফারেন্স সহায়কটি এবং ক্লায়েন্ট-নির্দিষ্ট ওভাররাইডগুলো নথিভুক্ত করে।