VPN-এর পেছনে CloudFront জিও ব্লকিং: এক্সিট নির্ণয়
এজ যে ঠিকানাটি দেখে সেই অনুযায়ী সিদ্ধান্ত নেয়, আর শেয়ার্ড এক্সিট একসাথে দেশ ও সুনাম বদলে দেয়। এক্সিট নোড ঘোরানোর আগে প্রতিটি নিয়ন্ত্রণ আলাদাভাবে পরীক্ষা করুন।
জিও নিষেধাজ্ঞা হলো একটি IP ঠিকানা নিয়ে সিদ্ধান্ত, আর VPN বদলে দেয় সার্ভিস কোন ঠিকানাটি দেখবে। এই একটি বাক্যই সহায়তা সারিতে আসা বেশিরভাগ বিভ্রান্তিকর অভিযোগ ব্যাখ্যা করে: «সাইটটি বাড়িতে কাজ করে কিন্তু টানেলে ব্যর্থ হয়» এবং «সাইটটি টানেলে কাজ করে কিন্তু অফিসের অন্য কেউ এটি লোড করতে পারে না» একই প্রক্রিয়ার বিপরীত ফলাফল। এই রানবুকটি কারণগুলো বাদ দেওয়ার ক্রমে নির্ণয় করে, শুরু করে এজ আসলে আপনাকে কী বলেছে তা দিয়ে। একই এক্সিট ঠিকানা একটি নিয়ন্ত্রণে পাস করে পরেরটিতে ব্যর্থ হতে পারে, কারণ প্রতিটি নিয়ন্ত্রণ সেই ঠিকানার ভিন্ন বৈশিষ্ট্য মূল্যায়ন করে।
কিছু বদলানোর আগে 403 পড়ুন
জিও ব্লক আর WAF ব্লক দুটোই 403 হিসেবে আসে, আর এগুলো ভিন্ন জায়গায় ঠিক করা হয়। রেসপন্স হেডার ও বডির প্রথম লাইন সংরক্ষণ করুন, কারণ CloudFront একটি ক্যাশে হেডার ও কারণের স্ট্রিং দেয় যা বলে দেয় কোন স্তর উত্তর দিয়েছে:
curl -sS -o /tmp/body.txt -D /tmp/headers.txt https://d111111abcdef8.cloudfront.net/
grep -i "x-cache\|via" /tmp/headers.txt
head -c 300 /tmp/body.txt
যখন ডিস্ট্রিবিউশন নিজেই ভৌগোলিক কারণে অনুরোধটি ব্লক করেছে, বডিতে দেশের নিষেধাজ্ঞার নাম উল্লেখ করা বার্তা থাকে। যখন WAF নিয়ম এটি ব্লক করেছে, বডি সাধারণত একটি সাধারণ নিষিদ্ধ পৃষ্ঠা হয় এবং হেডারে থাকা ডিস্ট্রিবিউশন অনুরোধ আইডি হলো যা আপনি WAF লগে নিয়ে যান। এখানে ভুল করলে আপনাকে দেশের অনুমোদিত তালিকায় পাঠাবে একটি হার-ভিত্তিক নিয়মের সমস্যার জন্য, যা এক দিনের কাজ যার সফল হওয়ার উপায় নেই।
ধাপ 1: ডিস্ট্রিবিউশন কোন ঠিকানা দেখে তা নিশ্চিত করুন
নেটওয়ার্ককে জিজ্ঞাসা করুন বাইরের পৃথিবী কী দেখে, যে মেশিন ও যে রুট দিয়ে ব্যর্থ ব্রাউজারটি যায় সেখান থেকেই। curl -s https://checkip.amazonaws.com কলকারীর পাবলিক ঠিকানা ফেরত দেয়, যা একটি VPN ক্লায়েন্টের জন্য সাবস্ক্রাইবারের বাড়ির সংযোগ নয়, এক্সিট:
curl -s https://checkip.amazonaws.com
nslookup d111111abcdef8.cloudfront.net
যদি সেই ঠিকানাটি অন্য দেশে আপনার প্রদানকারীর এক্সিটের হয়, তাহলে জিও সিদ্ধান্ত ইতিমধ্যেই নেওয়া হয়েছে এবং ক্লায়েন্টে কিছুই তা বদলাবে না। কোনো সেটিংয়ে হাত দেওয়ার আগে টিকিটে ঠিকানাটি লিখুন, কারণ এটি প্রতিবেদনের একমাত্র তথ্য যেটিতে আপনি ও সার্ভিস একমত।
ধাপ 2: দেশকে সুনাম থেকে আলাদা করুন
CloudFront দর্শকের অবস্থান নির্ণয় করে একটি তৃতীয় পক্ষের GeoIP ডেটাবেস থেকে যা অনুরোধের উৎস ঠিকানার উপর নির্ভর করে, আর এই ম্যাপিং সুনির্দিষ্ট নয়, আনুমানিক ও আঞ্চলিক। যখন অবস্থান নির্ধারণ করা যায় না, নথিভুক্ত ডিফল্ট হলো কনটেন্ট পরিবেশন করা। তাই তিনটি সম্ভাব্য অবস্থা আছে: এক্সিট একটি ব্লক করা দেশে ম্যাপ করে, একটি অনুমোদিত দেশে ম্যাপ করে, অথবা ডেটাবেসের কোনো মত নেই এবং অনুরোধ এগিয়ে যায়।
একটি ব্লক করা দেশের ব্যবহারকারী অনুমোদিত দেশে থাকতে পারেন যদি প্রদানকারীর সেখানে এক্সিট থাকে, আর একটি অনুমোদিত দেশের ব্যবহারকারী ব্লক হতে পারেন কারণ এক্সিট অন্য জায়গায় নিবন্ধিত। কোনোটিই প্রমাণ করে না যে নিষেধাজ্ঞা ভাঙা। দুটোই হলো নিষেধাজ্ঞার দেওয়া ঠিকানার উপর কাজ করা, যেমন CloudFront জিও নিষেধাজ্ঞার নথি বর্ণনা করে।
সুনাম হলো দ্বিতীয় অক্ষ এবং এটি টানেল পেরিয়ে টিকে থাকে। AWS WAF-এর পরিচালিত বেনামি IP নিয়ম গ্রুপ তৈরি হয়েছে VPN, প্রক্সি, Tor নোড ও হোস্টিং প্রদানকারীর অনুরোধ ব্লক করার জন্য, তাই দেশের যাচাই পাস করা অনুরোধও প্রত্যাখ্যাত হতে পারে ঠিকানাটি কী তার কারণে, কোথায় তা নয়। যদি টানেলটি ক্লাউড হোস্টে সরানোর সময় ব্লক শুরু হয়, তাহলে সম্ভবত এই স্তরটিই।
ধাপ 3: কোটা আচরণ পরীক্ষা করুন
শেয়ার্ড এক্সিট তৃতীয় উপায়ে ব্যর্থ হয়। প্রতি-IP হার সীমা ও সেশন গণনা একটি ঠিকানাকে একজন ক্লায়েন্ট হিসেবে ধরে, আর একটি ভোক্তা এক্সিট একসাথে অনেক সাবস্ক্রাইবার বহন করে, তাই বাড়ির সংযোগ থেকে সাধারণ দেখানো অনুরোধের ধরন এক্সিট থেকে অটোমেশন মনে হয়। লক্ষণ হলো থ্রটলিং বা সাময়িক ব্লক যা নিজে থেকেই সরে যায়, ভৌগোলিক ত্রুটি বার্তা নয়।
একটি ডিস্ট্রিবিউশন ইচ্ছাকৃতভাবে প্রতি ঠিকানায় সেশন গুনতেও পারে, উদাহরণস্বরূপ DynamoDB-তে লেখা একটি Lambda@Edge ফাংশন দিয়ে। এটি এক্সিটের পেছনের ব্যক্তিকে চিহ্নিত করে না, কিন্তু একটি ঠিকানাকে একজন ক্লায়েন্টের মতো আচরণ করায়, যা প্রায়ই আসল উদ্দেশ্য। কোনো থ্রেশহোল্ড সমন্বয় করার আগে অভিযোগের পেছনের আলাদা ঠিকানাগুলো লগ করুন, কারণ দুইশত ডেস্কের সামনে থাকা কর্পোরেট NAT বাইরে থেকে দেখতে ঠিক একটি ব্যস্ত এক্সিটের মতো। কর্পোরেট NAT, বিশ্ববিদ্যালয় নেটওয়ার্ক বা একটি বড় পরিবার থেকে মিথ্যা পজিটিভ আশা করুন, যারা সবাই একটি ঠিকানা উপস্থাপন করে।
ভূগোলকে দোষ দেওয়ার আগে WAF-এর নমুনা অনুরোধ ও হার-ভিত্তিক নিয়মের মেট্রিক দেখুন। যে নিয়ম এক্সিটের অনুরোধের পরিমাণে আগুন ধরে, তা স্পষ্ট স্বাক্ষর রাখে, আর এটি আপনাকে বলে সমাধানটি সীমা সমন্বয় নাকি ভিন্ন এগ্রেস পথ।
কী বদলাবেন, আর কোন ক্রমে
প্রথমে সিদ্ধান্ত নিন নিয়ন্ত্রণটি কীসের জন্য। আঞ্চলিক ক্যাটালগ রাখা, অপব্যবহার সীমিত করা ও চুক্তি প্রয়োগ করা তিনটি ভিন্ন লক্ষ্য, এবং কেবল প্রথমটির সমাধান দেশের তালিকা দেয়। যদি লক্ষ্য অপব্যবহার নিয়ন্ত্রণ হয়, এক্সিট হলো পরিচয়ের ভুল একক, এবং যত অনুমোদিত তালিকাই হোক একটি শেয়ার্ড ঠিকানাকে বিশ্বাসযোগ্য করবে না।
যদি অনুমোদিত তালিকার জন্য সত্যিই একটি স্থিতিশীল ঠিকানা দরকার হয়, ডেডিকেটেড বা স্ট্যাটিক এক্সিট সাহায্য করে কারণ ঠিকানাটি নিবন্ধন করা যায় এবং ঘোরে না। এটি ঠিকানাটিকে আবাসিক করে না, আর GeoIP ডেটাবেস যে দেশ নির্ধারণ করে তাও বদলায় না। একটি কাজ করা পর্যন্ত এক্সিট ঘোরানো সাময়িক সুনাম পরিবর্তন, নীতির সমাধান নয়।
তারপর ফলাফলটি অনুরোধকারীর ব্যবহৃত পরিভাষায় লিখুন: এই ঠিকানাটি দেশ, সুনাম বা হার দ্বারা ব্লক করা, এবং এই নিয়ন্ত্রণটিই বদলাবে। আরও অস্পষ্ট কিছু আগামী সপ্তাহে ভিন্ন এক্সিট নিয়ে একই টিকিট আমন্ত্রণ করে।