مسدودسازی جغرافیایی CloudFront پشت VPN: تشخیص خروجی
لبه بر اساس نشانیای که میبیند تصمیم میگیرد، و خروجی مشترک هم کشور و هم اعتبار را تغییر میدهد. هر کنترل را جداگانه آزمایش کنید پیش از آنکه گرههای خروجی را بچرخانید.
محدودیت جغرافیایی تصمیمی درباره یک نشانی 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 توصیف میکند.
اعتبار محور دوم است و از تونل جان سالم به در میبرد. گروه قواعد مدیریتشده IP ناشناس در AWS WAF ساخته شده تا درخواستهای VPN، پروکسی، گرههای Tor و ارائهدهندگان میزبانی را مسدود کند، پس درخواستی که بررسی کشور را بگذراند باز هم میتواند به دلیل اینکه نشانی چیست، نه کجاست، رد شود. اگر مسدودسازی زمانی شروع شد که تونل را به میزبان ابری منتقل کردید، احتمالاً این همان لایه است.
گام 3: رفتار سهمیه را بررسی کنید
خروجیهای مشترک به روش سومی شکست میخورند. محدودیت نرخ بهازای هر IP و شمارش نشستها یک نشانی را یک کارخواه میدانند، و خروجی مصرفکننده همزمان مشترکان بسیاری را حمل میکند، پس الگوی درخواستی که از اتصال خانگی عادی به نظر میرسد از خروجی مانند خودکارسازی دیده میشود. نشانه، محدودسازی یا مسدودسازی موقتی است که خودبهخود برطرف میشود، نه پیام خطای جغرافیایی.
توزیع میتواند عمداً نشستها را بهازای هر نشانی بشمارد، مثلاً با تابع Lambda@Edge که در DynamoDB مینویسد. این فرد پشت خروجی را شناسایی نمیکند، اما باعث میشود یک نشانی مثل یک کارخواه رفتار کند، که اغلب قصد واقعی است. پیش از تنظیم هر آستانه، نشانیهای متمایز پشت یک شکایت را ثبت کنید، چون NAT شرکتی جلوی دویست میز از بیرون دقیقاً مانند یک خروجی شلوغ دیده میشود. انتظار مثبتهای کاذب از NAT شرکتی، شبکه دانشگاهی یا خانواده بزرگی را داشته باشید که همگی یک نشانی ارائه میکنند.
پیش از سرزنش جغرافیا، به درخواستهای نمونهبرداریشده WAF و سنجههای قواعد مبتنی بر نرخ نگاه کنید. قاعدهای که با حجم درخواست خروجی فعال میشود اثر انگشت روشنی بر جای میگذارد و همچنین میگوید اصلاح، تنظیم محدودیت است یا مسیر خروجی متفاوت.
چه چیزی را تغییر دهیم، و به چه ترتیبی
نخست تصمیم بگیرید کنترل برای چه چیزی است. نگه داشتن کاتالوگ منطقهای، محدود کردن سوءاستفاده و اجرای قرارداد سه هدف متفاوتاند و تنها هدف نخست با فهرست کشور حل میشود. اگر هدف کنترل سوءاستفاده است، خروجی واحد نادرست هویت است، و هیچ مقدار فهرست مجاز یک نشانی مشترک را قابل اعتماد نمیکند.
اگر واقعاً نشانی پایداری برای فهرست مجاز لازم است، خروجی اختصاصی یا ایستا کمک میکند چون نشانی قابل ثبت است و نمیچرخد. این نشانی را مسکونی نمیکند و کشوری را که پایگاه داده GeoIP به آن نسبت میدهد تغییر نمیدهد. چرخاندن خروجیها تا وقتی یکی کار کند تغییر موقت اعتبار است، نه اصلاح سیاست.
سپس نتیجه را با اصطلاحاتی بنویسید که درخواستدهنده به کار برده است: این نشانی بر اساس کشور، اعتبار یا نرخ مسدود است، و این کنترلی است که تغییر خواهد کرد. هر چیز مبهمتر همان تیکت را هفته آینده با خروجی متفاوت دعوت میکند.