Приблизно о сьомій годині вечора увесь онлайновий світ застиг враженим: відключили Facebook, Instagram, WhatsApp та інші сервіси цієї соцмережі. Вони повністю перестали працювати і наче зникли з інтернету. Користувачі не розгубилися і масово почали реєструватися у інших месенджерах та соцмережах. Залишилося питання, як вдалося відключити Facebook?
Facebook відключили
Спершу мало хто думав, що проблема дуже серйозна. У CloudFlare, наприклад, спершу думали, що проблема з їхнім розпізнавачем DNS 1.1.1.1 і вже готувалися опублікувати відповідну заяву на своєму сайті, але детальніший аналіз показав, що проблеми значно серйозніші.
Facebook та його дочірні служби WhatsApp та Instagram, по суті, були повністю відключені. Їхні DNS-імена перестали визначатися, а IP-адреси їхнніх серверів були недоступні. Це було так, якби хтось одночасно висмикнув усі кабелі з їхніх центрів обробки даних та відключив їх від інтернету.
Як це взагалі можливо
Facebook опублікував повідомлення в блозі, в якому наводяться деякі подробиці того, що сталося всередині компанії. Сторонні фахівці бачили проблеми з BGP і DNS, описані в цьому пості, але насправді проблема почалася зі зміни конфігурації, яке вплинуло на всю внутрішню магістраль. Це призвело до зникнення Facebook та інших об’єктів.
Проблема існувала близько трьох годин. Таку тривалість деякі експерти пояснюють тим, що стали недоступні всі внутрішні ресурси компанії, включаючи месенджери і корпоративні адресні книги. Ще зникли майже усі звичні способи комунікації.
Співробітники Facebook не могли потрапити в офіс, оскільки бейджики прив’язані до інтернет-авторизації. Також значну частину проблем можна було вирішити тільки при фізичному доступі до серверів, що ускладнювалося дистанційною роботою.
Знайомтеся з BGP
BGP розшифровується як протокол прикордонного шлюзу. Це механізм обміну інформацією про маршрутизацію між автономними системами (AS) в інтернеті.
Великі маршрутизатори, які забезпечують роботу інтернету, мають величезні, постійно оновлювані списки можливих маршрутів, які можна використовувати для доставки кожного мережевого пакету в кінцеві пункти призначення. Без BGP інтернет-маршрутизатори не знали б, що робити, і інтернет не працював би.
Інтернет – це буквально мережа мереж, і вони пов’язані між собою BGP. BGP дозволяє одній мережі (скажімо, Facebook) рекламувати свою присутність в інших мережах, що утворюють інтернет. Якщо, Facebook не рекламує свою присутність, інтернет-провайдери та інші мережі не можуть знайти мережу Facebook, і тому вона недоступна.
У кожної окремої мережі є ASN: номер автономної системи. Автономна система (AS) – це окрема мережа з єдиною внутрішньою політикою маршрутизації. AS може створювати префікси (скажімо, вони контролюють групу IP-адрес), а також транзитні префікси (скажімо, вони знають, як досягти певних груп IP-адрес).
Номер ASN Cloudflare – AS13335. Кожен ASN повинен оголошувати свої префіксні маршрути в інтернет за допомогою BGP, інакше ніхто не буде знати, як підключитися і де знайти.
На цій спрощеній схемі шість автономних систем в Інтернеті і два можливих маршрути, по яких один пакет може пройти від початку до кінця. AS1 > AS2 > AS3 – найшвидший, а AS1 > AS6 > AS5 > AS4 > AS3 – найповільніший, але його можна використовувати, якщо перший не спрацює.
О 15: 58 UTC у CloudFlare помітили, що Facebook перестав оголошувати маршрути до своїх DNS-префіксів. Це означало, що принаймні DNS-сервери Facebook були недоступні. Через це розпізнавач DNS Cloudflare 1.1.1.1 більше не міг відповідати на запити, що запитують IP-адресу facebook.com .
Тим часом інші IP-адреси Facebook залишалися маршрутизованими, але не були особливо корисними, оскільки без DNS Facebook і пов’язані з ним служби були фактично недоступні.
Повідомлення про оновлення BGP інформує маршрутизатор про будь-які зміни, внесені в оголошення префікса, або повністю видаляє префікс. Це можна чітко бачити за кількістю оновлень від Facebook. Зазвичай цей графік досить спокійний: Facebook не вносить багато змін у свою мережу щохвилини.
Але приблизно о 15: 40 UTC стався пік змін маршрутизації з Facebook. Ось тоді-то і почалися неприємності.
Що саме сталося
Маршрути були скасовані, DNS-сервери Facebook відключилися. Сайти Facebook фактично відключилися від інтернету.
Як прямий наслідок цього, розпізнавачі DNS по всьому світу перестали дозволяти доменні імена сайтів соцмережі. Це відбувається тому, що DNS, як і багато інших систем в Інтернеті, також має свій механізм маршрутизації.
Коли хтось набирає https://facebook.com URL-адреса в браузері, розпізнавач DNS, відповідальний за перетворення доменних імен на фактичні IP-адреси для підключення, спочатку перевіряє, чи є щось в його кеші, і використовує це. Якщо ні, він намагається отримати відповідь від серверів доменних імен, які зазвичай розміщуються організацією, якій він належить.
Якщо сервери імен недоступні або не відповідають з якої-небудь іншої причини, повертається SERVFAIL, і браузер видає користувачеві помилку.
Додатки та люди ігнорують помилку
Але це ще не все. Тепер людська поведінка та логіка додатків спрацьовують і викликають ще один експоненціальний ефект. За цим слідує цунамі додаткового DNS-трафіку.
Це сталося частково тому, що додатки не приймають помилку за відповідь і починають повторювати спроби підключення, іноді агресивно. Також кінцеві користувачі також не приймають помилку за відповідь і починають перезавантажувати сторінки та перезапускати додатки, іноді також агресивно.
Оскільки Facebook та їхні сайти настільки великі, DNS-розпізнавачі по всьому світу почали обробляти в 30 разів більше запитів, ніж зазвичай. Це призвело до проблем із затримкою і часом очікування для інших сайтів інтернету.
Вплив на інші інтернет-сервіси
Люди шукають альтернативи і хочуть дізнатися більше або обговорити, що відбувається. Коли Facebook став недоступним, збільшилася кількість запитів DNS до Twitter, Signal та інших платформ обміну повідомленнями та соціальних мереж.
У підсумку
У всьому світі трафік, що надходив в мережу Facebook і виходив з неї, просто зник.
Ці події є м’яким нагадуванням про те, що інтернет – це дуже складна і взаємозалежна система, що складається з мільйонів систем і протоколів, що працюють разом. Ця довіра, стандартизація та співпраця між організаціями лежать в основі того, щоб ІТ працювали майже для п’яти мільярдів активних користувачів по всьому світу.
За матеріалами: CloudFlare