فیسبوک چگونه از اینترنت محو شد؟ (12 مهر 1400)

دیروز چه اتفاقی برای فیسبوک افتاد؟
خوب این سوالیه که خیلیا دارن از خودشون می‌پرسن و سعی می‌کنیم در اینجا تا حدودی به توضیحش بپردازیم.

تمامی Public IP هایی که در دنیا وجود دارن زیر مجموعه یک Autonomous system number یا ASN میشن، ASN شماره‌ای ناهمتا است که توسط Regional Internet Registry (RIR) به Local Internet Registry(LIR) اختصاص داده میشه تا بتونن با اون عضوی از شبکه جهانی اینترنت بشن و میشه گفت اینترنت شبکه‌ای از شبکه‌هاست و هر شبکه برای حضور در اینترنت باید یک ASN داشته باشه.

حالا برای ارتباط بین ASN ها در شبکه اینترنت از یک Routing Protocol استفاده میشه که به اون ‌BGP (Border Gateway Protocol) گفته میشه و وظیفه مسیریابی در دنیای اینترنت رو به عهده داره.

میریم نگاهی بیندازیم که برای فیسبوک در این بخش چه اتفاقی افتاد.
دیروز بخشی از سرویس‌های فیسبوک حوالی ساعت 15:39 UTC شروع به محو شدن کردن، درست شنیدین محو شدن!
یعنی سرورها و منابعی که داشتن توسط 32394 ASN در اینترنت دیده می‌شد، از اینترنت ناپدیده شدن. همون‌طور که می‌تونید حدس بزنید Facebook ارتباط‌های BGP شو از دست داد و دیگه تو اینترنت دیده نمی‌شد.

دلیل این اتفاق براساس اعلام رسمی خود فیسبوک به دلیل تغییر کانفیگ اشتباه در روترهای Backbone که وظیفه مسیریابی ترافیک رو بین دیتاسنترهای فیس‌بوک به عهده داشتن رخ داده. ما همچنان مشتاقانه منتظر اطلاعات بیشتری از سمت فیسبوک هستیم.

ویدیو زیر از دسترس خارج شدن AS32934 رو نمایش میده.

https://youtu.be/6awH_BCx_Mo

با ناپدید شدن این ASN، یکی از مهمترین سرویس‌هایی که از دسترس خارج شد سرویس DNS بود و با از دسترس خارج شدن سرویس DNS عملا دیگه هیچ یک از دامنه‌های تحت مالکیت Facebook ریزالو نمی‌شدن.

وقتی ما می‌خوایم به منابعی در شبکه اینترنت دسترسی داشته باشیم باید IP اون رو داشته باشیم پس برای رسیدن به یک صفحه وب یا حتی ارتباط اپلیکیشن‌های WhatsApp و Instagram که ما روی تلفن‌های همراه خودمون استفاده می‌کنیم بر اساس IP شکل می‌گیره، خوب پس DNS این جا چیکاره است؟
خوب جوابش ساده است ما که نمی‌تونیم IPها رو بخاطر بسپاریم و تازه ممکنه IPها ثابت نباشن یا تغییر کنن، پس ما از سرویس DNS که یکی از وظایف اصلیش تبدیل اسم به IP استفاده می‌کنیم.

سرویس DNS یک ساختار درختی داره که در بالا دامنه روت و سپس TLDها و بعد از اون Second level domain ها قرار می‌گیرن، به اسم‌هایی که در هر مرحله این درخت قرار می‌گیرن label گفته میشه و تعداد labelهای DNS نباید از 63 octet[1] فراتر بره.

در مورد DNS Serverها هم می‌تونیم بگیم که به شکل کلی به چهار بخش زیر تقسیم می‌شن:

  • سرورهای Root:‌ در دنیا ۱۳ سرویس‌دهنده دامنه root وجود داره که وظیفه اصلیشون راهنمایی Resolverها به سمت TLD هاست.
  • سرورهای TLD: هر TLD برای نگهداری اطلاعات Second level domain دارای یکسری Nameserver و مدیریت TLD ها هم به وسیله IANA انجام میشه.
  • سرورهای Authoritative: اطلاعات دامنه رو نگهداری می‌کنن مثلا در اینجا Facebook.com یک نمونه از Authoritative nameserver میشه نام برد.
  • سرورهای Recursive Resolver: سرورهای DNSی که ما عموما روزمره ازشون استفاده می‌کنیم تو این دسته قرار می‌گیرند و وظیفه پاسخ‌دهی به درخواست‌های کاربران رو به عهده دارن، این سرورها خودشون برای به دست آوردن اطلاعات به سراغ Root و TLD و Authoritativeها میرن.
    از معروف‌ترین‌ اون‌ها میشه به 8.8.8.8 گوگل و 4.2.2.4 Level3 اشاره کرد.

در عکس زیر سعی شده فرایند پاسخ‌دهی به یک درخواست DNS به شکل مختصر نشون داده بشه:

وقتی Authoritative Nameserver از دسترس خارج می‌شه درخواست‌های Recursive Resolverها بی‌پاسخ می‌مونن و SERVfail به کلاینت نهایی نمایش داده میشه.

یکی از ساید افکت‌های مهم این اتفاق افزایش درخواست‌ها به Recursive Resolverها بود، دلیل این اتفاق رو میشه به این شکل توضیح داد که خیلی از اپلیکیشن‌ها برای دسترسی به سرورهاشون دارن از DNS استفاده می‌کنن و وقتی که درخواست‌هاشون به مشکل می‌خوره دوباره تلاش می‌کنن و این چرخه همین‌طور ادامه داره.

مثلا وقتی WhatsApp که رو موبایلمون داریم می‌خواد به سرور WhatsApp وصل بشه در ابتدا whatsapp.com رو می‌خواد تبدیل به IP کنه که این اتفاق با مشکل مواجه میشه پس دوباره تلاش می‌کنه و این تلاش‌های پی‌درپی سبب افزایش درخواست به Public Resolverهایی مثل Level3, Google, Cloudflare میشه و همین باعث شد سرویس‌های اونا هم با کندی و اختلالاتی همراه بشه.

گراف زیر رو کلادفلر از افزایش درخواست‌های DNS مرتبط به Facebook منتشر کرده که به خوبی افزایش درخواست رو نمایش میده.

بازگشت

فیسبوک حوالی ساعت 21:00 UTC شروع به بازگشت سرویس‌هاش کرد و حدودا 21:20 UTC در دسترس قرار گرفت.

امیدارم با توضیحات داده شده دلیل این قطعی سرویس های Facebook براتون مشخص شده باشه و با سازوکار بخشی از سرویس های تحت وب بیشتر آشنا شده باشید.