О «деградации» серверов YouTube
В августе 2024 года пользователи из РФ внезапно начали испытывать проблемы с просмотром видео на ютубе. Официальные лица утверждают, что со стороны провайдеров ограничений нет, вся проблема в «устаревших» серверах:
1) https://www.rapsinews.ru/White_Internet_news/20241115/310409982.html (архив: https://archive.is/c0GuZ)

2) https://tass.ru/ekonomika/22412171 (архив: https://archive.is/GWB5Y)

3) https://www.interfax.ru/russia/988244 (архив: https://archive.is/wVrnV)

4) Эксперт с IT-форума «Двач»

Вроде бы уважаемые люди, врать не будут. Но почему тогда все говорят про какое-то специальное замедление и блокировку? Давайте разбираться.
youtube.com
Итак, заходим на главную и видим, что загрузка всех ресурсов страницы крайне замедлена:

Это значит, что мы сразу попали на тот самый устаревший сервер? Посмотрим, откуда грузятся все эти замедленные файлы:

IP-адрес: 74.125.131.198
Глянем подробнее, что это за адрес:

Оказывается, сервер находится в Финляндии, в городе Хамина:

Но ведь гугл ушел только из РФ, а не из Финляндии. Неужели там тоже сервера деградировали?
Посмотрим, что происходит при загрузке файлов с сервера. Для удобства возьмем из списка ресурсов ютуба какой-нибудь отдельный скрипт, например:
https://www.youtube.com/s/player/2d24ba15/player_ias.vflset/ru_RU/base.js
Открываем его в браузере, параллельно отслеживая трафик в Wireshark:


Видим, что в трафике очень много ошибок, связанных с переповторами передачи по TCP. Их число каждый раз случайно, иногда файл грузится за несколько секунд, а иногда не загружается и за 5 минут.
К счастью, на просторах интернетов есть всякие интересные программы, которые могут менять трафик на уровне TCP и чинить такие сломанные серверы. Попробуем применить одну из них и посмотреть результат:


И вот чудесным образом сервер раздеградировал! Немного необычных пакетов в начале, но дальше всё идеально.
Google Global Cache
Но ладно, это был финский сервер, а что же с брошенными гуглом серверами в РФ? Может они деградировали как-то по-другому?
Чтобы выйти на сервер в РФ, нам нужно найти адрес сервера GGC, с которого грузятся сами видео. Открываем случайное видео, используя ту же магическую программу, и ищем в списке ресурсов домен googlevideo.com:

Вот наш сервер: https://rr3---sn-xguxaxjvh-bvwe.googlevideo.com
Его IP: 188.234.130.206
Убедимся, что он в РФ:

Получается, что и сервер в РФ можно точно так же раздеградировать обратно обычной программой. Стоит заметить, что параметры программы для починки googlevideo несколько сложнее, чем для youtube.com. Он явно «деградировал» сильнее.
Теперь посмотрим трафик в Wireshark при подключении к этому серверу. Для удобства можно делать запрос к нему через curl:


Как видим, наша программа для изменения трафика поменяла начало соединения по протоколу TLS, так что Wireshark даже не определяет пакет как Client Hello, но имя домена googlevideo.com всё ещё передается внутри пакета.
Теперь попробуем сделать то же самое, но без изменения трафика:


На этот раз сессия зависает сразу же после передачи Client Hello. Сервер снова «деградировал».
Мобильный интернет
По некоторым данным (https://iz.ru/1757974/anton-belyi/tishe-edet-youtube-zamedlilsia-dlia-rossiian-pochti-v-10-raz), у мобильных операторов ситуация гораздо лучше:

Проверим это, раздав интернет со смартфона на ПК, и выполнив те же проверки с теми же самыми серверами.
Загрузка скрипта с www.youtube.com:


Запрос к googlevideo через curl:

И действительно, «деградации» серверов на мобильном интернете не наблюдается.
Подмена SNI
И напоследок ещё один эксперимент, теперь снова на проводном операторе. Попробуем обратиться к какому-нибудь обычному сайту, подменив SNI. Иначе говоря, пошлем запрос на сервер так, как будто это сервер googlevideo.
Возьмем для теста сайт python.org, который точно ещё не «деградировал».

Запишем его IP и домен googlevideo в файл hosts:

Теперь при подключении к https://rr3---sn-xguxaxjvh-bvwe.googlevideo.com мы будем отправлять запрос не на сервера гугла, а на сервер python.org.
Делаем запрос через curl:


Кажется, теперь «деградировал» и сайт python. Сразу после отправки Client Hello, в котором содержится домен googlevideo, сессия ломается и пакеты перестают доходить. Точно так же, как и при обращении к реальному серверу гугла.
А теперь заменим в файле hosts название домена с googlevideo на goooooooooglevideo, чтобы убедиться, что дело именно в имени:



Теперь всё отлично, никаких потерь пакетов.
Итак, что же мы выяснили:
1) «Деградация» есть не только у GGC сервера в РФ
2) «Деградация» чинится программами, изменяющими трафик
3) На мобильном интернете «деградация» исчезает
4) Через подмену SNI можно «сдеградировать» другой сайт, не связанный с YouTube

Архив этой страницы: https://archive.is/s9tuH