Azure P2S VPN একটি প্রাইভেট এন্ডপয়েন্টের নাম রিজলভ করতে পারছে না
পরীক্ষাগুলো ক্রমানুসারে করুন: DNS কোন ঠিকানা ফেরত দেয়, জোন লিংক, পৌঁছানো যায় এমন রিজলভার, সার্টিফিকেটের হোস্টনাম এবং একটি সাময়িক hosts এন্ট্রি।
আপনি point-to-site টানেল সংযোগ করেন, প্রাইভেট ঠিকানায় ping করেন, অ্যাপ খোলেন, আর বদলে 403 বা সার্টিফিকেট ত্রুটি পান। দুটি লক্ষণই DNS-এর দিকে ইঙ্গিত করে, কিন্তু এরা ভিন্ন ত্রুটি: একটির অর্থ ক্লায়েন্ট পাবলিক ঠিকানা রিজলভ করেছে, অন্যটির অর্থ সে প্রাইভেট ঠিকানা রিজলভ করে এমন একটি নাম দিয়েছে যা সার্টিফিকেট কভার করে না। নিচের পরীক্ষাগুলো ক্রমানুসারে করুন এবং প্রথম ব্যর্থতায় থামুন, কারণ একটি hosts এন্ট্রি বা ক্যাশ করা উত্তর পরের প্রতিটি পরীক্ষাকে ভুল কারণে পাস করাতে পারে। আমি এই ক্রমটি আমার VPN প্রোফাইলের পাশে একটি টেক্সট ফাইলে রাখি, কারণ সমাধান টানেলে কিছুই বদলায় না, বদলায় ক্লায়েন্ট যা জানে তাতে।
ক্লায়েন্ট আসলে যে ঠিকানা পায় তা দিয়ে শুরু করুন
অ্যাপ্লিকেশনকে বিশ্বাস না করে সরাসরি রিজলভারকে জিজ্ঞাসা করুন। Windows-এ nslookup adminuidev-fedqcubyd9bfb2bq.canadacentral-01.azurewebsites.net দেখায় ক্লায়েন্ট কোন ভিউ পেয়েছে। পাবলিক উত্তর মানে এরপর কিছুই এন্ডপয়েন্টে পৌঁছাবে না; এন্ডপয়েন্টের প্রাইভেট ঠিকানা মানে DNS শেষ, এবং পরের পরীক্ষা হলো সংযোগটি নিজেই।
প্রাইভেট এন্ডপয়েন্ট সার্ভিসের নাম বদলায় না। অ্যাকাউন্ট বা অ্যাপ তার স্বাভাবিক সম্পূর্ণ কোয়ালিফায়েড নাম রাখে, এবং এন্ডপয়েন্ট কেবল সেই ঠিকানাটি বদলায় যেখানে ভার্চুয়াল নেটওয়ার্কের ভেতরের ক্লায়েন্টদের জন্য নামটি রিজলভ হয়। এজন্যই একই হোস্টনাম নেটওয়ার্কের VM থেকে প্রাইভেটভাবে এবং যে ল্যাপটপ কখনো প্রাইভেট ভিউ পায়নি সেখান থেকে পাবলিকভাবে রিজলভ হয়।
টানেলের আগে জোন, তার লিংক এবং রেকর্ড পরীক্ষা করুন
তিনটি শর্ত একসঙ্গে পূরণ হতে হবে: প্রাইভেট জোনটি আছে, এটি সেই ভার্চুয়াল নেটওয়ার্কের সঙ্গে লিংক করা যেখানে VPN গেটওয়ে ও ক্লায়েন্টরা Azure-এ ঢোকে, এবং এতে এন্ডপয়েন্টের জন্য প্রাইভেট ঠিকানায় নির্দেশকারী একটি A রেকর্ড আছে। জোনটি অসম্পর্কিত নেটওয়ার্কে লিংক করুন, গেটওয়ে পাবলিক রেকর্ডই রিজলভ করতে থাকবে, অথচ টানেলের সবকিছু সুস্থ দেখাবে।
জোনের নাম সার্ভিসের অন্তর্গত, সাধারণভাবে প্রাইভেট লিংকের নয়। App Service সাধারণত privatelink.azurewebsites.net ব্যবহার করে, স্টোরেজ ও SQL-এর নিজস্ব namespace আছে, আর অন্য সার্ভিসের জোন ধার করলে এমন জোন তৈরি হয় যা আছে কিন্তু কাজের কিছু উত্তর দেয় না।
ক্লায়েন্টকে এমন রিজলভার দিন যা সত্যিই তার নাগালে
168.63.129.16 Azure ভার্চুয়াল মেশিন থেকে উত্তর দেয় এবং point-to-site টানেলের অপর পাশের ল্যাপটপের জন্য DNS সার্ভার নয়। ক্লায়েন্টের দরকার টানেলের মধ্য দিয়ে পৌঁছানো যায় এমন রিজলভার: Azure DNS Private Resolver ইনবাউন্ড এন্ডপয়েন্ট, ভার্চুয়াল নেটওয়ার্কের ভেতরে একটি ফরওয়ার্ডার, অথবা VPN ক্লায়েন্ট প্রোফাইলে বহন করা DNS সার্ভার এন্ট্রি, যাতে ক্লায়েন্ট সরাসরি ভার্চুয়াল নেটওয়ার্ককে জিজ্ঞাসা করে।
কনফিগার করা কিন্তু নাগালের বাইরে থাকা রিজলভার কোনো রিজলভার না থাকার মতোই আচরণ করে, এবং লক্ষণ ভুল উত্তর নয়, টাইমআউট, তাই এটি ফায়ারওয়াল সমস্যা হিসেবে ভুল পড়া হয়। টানেলের বহন করার কথা এমন কোয়েরি দিয়ে এটি পরীক্ষা করুন, পাবলিক নাম দিয়ে নয় যা লোকাল লিংক দিয়েই সফল হতো।
সেটিংস পুশ করার বদলে ফরওয়ার্ড করলে, প্রাইভেট জোনের মালিকানাধীন namespace ফরওয়ার্ড করুন, পুরো azurewebsites.net-এর বদলে privatelink.azurewebsites.net। যে শর্তসাপেক্ষ ফরওয়ার্ডার পুরো প্যারেন্ট সাফিক্স গিলে ফেলে, সে সার্ভিসের প্রতিটি লুকআপ Azure-এ পাঠায়, এমনকি যেগুলো লোকাল থাকা উচিত সেগুলোও।
যে নামের জন্য সার্টিফিকেট জারি হয়েছে সেটিই ব্যবহার করুন
ঠিকানা সঠিক হলে দ্বিতীয় ত্রুটি সামনে আসে। স্টোরেজ ও App Service একটি privatelink উপনাম প্রকাশ করে, আর সেই উপনাম অবশ্যই সার্টিফিকেটের নাম নয়। privatelink.blob.core.windows.net-এ পাঠানো একটি AzCopy আপলোড ভ্যালিডেশনে ব্যর্থ হলো; একই আপলোড <account>.blob.core.windows.net/<container>-এ প্রাইভেট ঠিকানায় রিজলভ হয়ে পাস করল, তাই এটি ওভাররাইড ছাড়াই প্রাইভেট পথে রইল।
নিয়মটি ব্রাউজারে এবং App Service-এর ক্ষেত্রেও খাটে: সার্টিফিকেট যে হোস্টনাম কভার করে সেটি দিয়ে সংযোগ করুন এবং DNS-কে প্রাইভেট ঠিকানা জোগাতে দিন। ভ্যালিডেশন বাইপাসের দিকে হাত বাড়াবেন না, কারণ তা নামকরণের ভুলকে নিরাপত্তা রিগ্রেশনে পরিণত করে। সফল ping পথ প্রমাণ করে, হ্যান্ডশেকের ভেতরের নাম নিয়ে কিছুই বলে না, এজন্যই এগুলো আলাদা পরীক্ষা।
চার ধাপের একটি ক্রম যা প্রতিটি স্তর আলাদা করে
- নিশ্চিত করুন VPN ক্লায়েন্ট point-to-site পুল থেকে একটি ঠিকানা পেয়েছে এবং এন্ডপয়েন্টের প্রাইভেট ঠিকানায় তার রুট আছে।
- অ্যাপ যে সঠিক নাম ব্যবহার করে সেটি রিজলভ করুন এবং উত্তরটি এন্ডপয়েন্টের ঠিকানার সঙ্গে মেলান।
- সার্ভিস পোর্টে এন্ডপয়েন্টে একটি TCP সংযোগ খুলুন, তারপর সেই সংযোগে উপস্থাপিত সার্টিফিকেটের নাম পড়ুন।
- এখনই অনুমোদন পরীক্ষা করুন, কারণ কাজ করা পথ ও বৈধ সার্টিফিকেট এখনো রিসোর্সে প্রবেশাধিকার দেয় না।
ঠিকানা সঠিক থাকা অবস্থায় সংযোগ প্রত্যাখ্যাত হলে তা DNS নয়, নেটওয়ার্ক সিকিউরিটি গ্রুপ বা প্রাইভেট এন্ডপয়েন্ট সংযোগের অবস্থার দিকে ইঙ্গিত করে, তাই রিজলভার সেটিংস আবার সম্পাদনার আগে সেগুলো দেখুন। TLS নামের অমিল আপনাকে URL-এর হোস্টনাম ও সার্টিফিকেটের subject-এ ফিরিয়ে নেয়। রিজলভ আউটপুট, সার্টিফিকেটের নাম ও সঠিক URL একসঙ্গে রাখুন; এই তিনটি মান গেটওয়ে না ছুঁয়েই এসব ঘটনার বেশিরভাগ ব্যাখ্যা করে।
নিয়ন্ত্রণ হিসেবে ভার্চুয়াল নেটওয়ার্কের ভেতরের একটি VM ব্যবহার করুন। নামটি সেখানে প্রাইভেটভাবে এবং টানেল থেকে পাবলিকভাবে রিজলভ হলে জোন ও রেকর্ড সঠিক, আর একমাত্র পার্থক্য ক্লায়েন্টের রিজলভার পথ, যা এন্ডপয়েন্ট কনফিগারেশন আরেকবার দেখার চেয়ে দ্রুত নিশ্চিত করা যায়।
ক্লায়েন্টরাও ক্যাশ করে। দশ মিনিট আগে পাবলিকভাবে উত্তর দেওয়া একটি রেকর্ড জোন ঠিক করার পরেও উত্তর দিতে থাকে, তাই আবার পরীক্ষার আগে ফ্লাশ করুন। Windows-এ ipconfig /flushdns ক্লায়েন্ট ক্যাশ পরিষ্কার করে; নাম রিজলিউশন পলিসি নিয়ম টিকে থাকে, কোন সাফিক্স কোন সার্ভারে যাবে তা ঠিক করে, এবং আপনি এইমাত্র যে রিজলভার বদলেছেন সেখানেই namespace পাঠাতে থাকতে পারে।
hosts এন্ট্রি কোথায় রাখা উচিত
এন্ডপয়েন্টের ঠিকানা hosts ফাইলে যোগ করা ভালো ডায়াগনস্টিক এবং খারাপ ডিজাইন। এটি প্রমাণ করে নাম-ঠিকানা ম্যাপিং-ই অনুপস্থিত অংশ এবং তার পরের সবকিছু পরীক্ষা করতে দেয়, কিন্তু এটি আপনার ব্যবহারকারীদের কাছে অদৃশ্য, এন্ডপয়েন্টের ঠিকানা বদলালে ভেঙে যায় এবং যে জোনের উত্তর দেওয়া উচিত সেটি লুকায়।
রয়ে যাওয়া পরীক্ষামূলক এন্ট্রি পুরোনো ক্যাশের চেয়েও খারাপ, কারণ ত্রুটির দিক অনুযায়ী এটি ঠিক হওয়া পথকে ভাঙা বা ভাঙা পথকে ঠিক দেখাতে পারে। চূড়ান্ত রানের আগে এটি সরান এবং কেবল প্রোডাকশন রিজলভার দিয়ে রিজলভ করুন।
সংক্ষিপ্ত নামে সার্চ সাফিক্স লাগে, সম্পূর্ণ কোয়ালিফায়েড নামে লাগে না, তাই আগে সম্পূর্ণ কোয়ালিফায়েড নামটি পরীক্ষা করুন, তারপর ঠিক করুন ওয়ার্কফ্লোর ক্লায়েন্ট প্রোফাইলের মাধ্যমে পুশ করা সাফিক্স দরকার কি না। Microsoft তার প্রাইভেট এন্ডপয়েন্ট DNS নির্দেশিকা-য় প্রতিটি সার্ভিসের জোন নাম ও রেকর্ডের আকার ডকুমেন্ট করে; অন্য সার্ভিস থেকে জোন কপি না করে আপনার সার্ভিসের এন্ট্রি পড়ুন।