РКН блокирует cloudflare. Решение.

"Россияне лишились доступа ко многим сайтам — это Роскомнадзор заблокировал сайты с шифрованием ECH от Cloudflare. Роскомнадзор начал блокировать серверы, к которым подключается Cloudflare." И т.д.

Такими заголовками начали наполняться интернет сми, форумы, паблики по данной тематике.

Наш сервис пополнения steam – steambot.org с комиссией 10%, также использует Cloudflare и нам удалось найти решение, делимся (также новым читателям нашего блога, напоминаем, что ранее мы рассказывали, как с нуля небольшой командой создали и продолжаем создавать сервис для пополнения стим).

Для начала, мы не сразу понял, что наш сайт блокируется провайдерами (РКН). Мы заметили, что упал трафик, предположили, что влияние сезонности и длительных выходных, на которых была сверх активность по пополнению steam на нашем сайте steambot.org. Решили понаблюдать и в рамках недели посмотреть на метрики, далее действовать по ситуации.

Благо, один из клиентов написал, что у него не заходит на сайт. Стали разбираться в чем причина, так как на наших устройствах – всё работало. Выяснили, что сайт блокировал провайдер (мегафон).

РКН блокирует cloudflare. Решение.

Параллельно с этим, знакомые стали отправлять информацию, что РКН очередной раз блокирует cloudflare. Начался поиск решения.

Делимся вариантами решения:

1й способ. Если у вас тариф Cloudflare PRO:

РКН блокирует cloudflare. Решение.
  • Откройте настройки Cloudflare для вашего сайта.
  • Перейдите в раздел SSL/TLS и выберите Edge Certificates.
  • Убедитесь, что опция Encrypted Client Hello отключена. Если она активна, нажмите на зеленый переключатель, чтобы сделать его серым.
  • На всякий случай выполните очистку кэша: перейдите в Caching - Configuration и выберите Purge Everything.
  • Подождите несколько минут для обновления настроек.

2й способ. Если у вас бесплатный тариф Cloudflare (Free) — (проверено):

РКН блокирует cloudflare. Решение.
  • Зайдите в настройки Cloudflare для вашего сайта.
  • Перейдите в раздел SSL/TLS - Edge Certificates.
  • Установите Minimum TLS Version на значение TLS 1.2, если у вас выбрано другое.
  • Отключите TLS 1.3, чтобы галочка рядом с этой опцией стала серой.
  • Очистите кэш Cloudflare через Caching - Configuration - Purge Everything.
  • Подождите несколько минут, чтобы изменения вступили в силу.

3й способ. Если у вас Free тариф Cloudflare, и вы знаете, что такое Curl и терминал.

Выполняем действия - по аналогии с отлучением IPV6 по API Cloudflare. Обратите внимание, первый код - для Linux, второй для Windows.

Linux

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/_idkey_/settings/ech" \ -H "X-Auth-Email: _email_account_" \ -H "X-Auth-Key: _global_key" \ -H "Content-Type: application/json" \ --data '{"id":"ech","value":"off"}'

Windows

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/_idkey_/settings/ech" -H "X-Auth-Email: _email_account_" -H "X-Auth-Key: _global_key" -H "Content-Type: application/json" --data "{\"id\":\"ech\",\"value\":\"off\"}"

Дополнение к 3-ему способу (взято из комментариев):

Значения, которые нужно вставлять в команду:
_email_account_ - Ваша почта в Cloudflare
_global_key - Ваш глобальный API ключ (получение My Profile -> API Tokens -> Global API Key -> нажимаем View)
_idkey_ - (указывается в ссылке /zones/_idkey_/settings/) ID вашего домена (получение Websites -> Ваш Домен -> и снизу будет Zone ID)

В случае успеха в консоли должно быть ответ типа:
{"result":{"id":"ech","value":"off","modified_on":null,"editable":true},"success":true,"errors":[],"messages":[]}

Также вы можете проверить значение ECH немного изменённой командой в терминале

Linux:
curl -X GET "https://api.cloudflare.com/client/v4/zones/_idkey_/settings/ech" \-H "X-Auth-Email: _email_account_" \-H "X-Auth-Key: _global_key" \-H "Content-Type: application/json" \--data '{}'

Windows:
curl -X GET "https://api.cloudflare.com/client/v4/zones/_idkey_/settings/ech" -H "X-Auth-Email: _email_account_" -H "X-Auth-Key: _global_key" -H "Content-Type: application/json" --data "{}"

Ответ должен быть типа:
{"result":{"id":"ech","value":"off","modified_on":null,"editable":true},"success":true,"errors":[],"messages":[]}

Бонус, для тех кто любит читать.

Что такое ECH? Технология ECH (Encrypted ClientHello) добавляет дополнительный слой шифрования в соединение между браузером и сервером, защищая данные Server Name Indication (SNI) в протоколе TLS 1.3. Это означает, что информация о сайте, с которым пользователь устанавливает соединение, больше не доступна для надзорных органов. В результате, блокировочные списки Роскомнадзора становятся менее эффективными, так как оборудование интернет-провайдеров, синхронизируемое с РКН, больше не может точно определить, разрешено ли установление защищенного соединения с тем или иным сайтом. Шифрование также затрудняет анализ и сбор данных через DPI (Deep Packet Inspection). Теперь у провайдеров и других организаций нет возможности просматривать и блокировать отдельные пакеты вашего трафика. Сайты, внесенные в реестр Роскомнадзора и часто блокируемые на уровне интернет-соединений, такие как ресурсы с экстремистским или запрещенным контентом, увидели в технологии ECH возможность обойти подобные ограничения. Для них новое шифрование стало настоящей находкой.

Часть информации, а именно методы решения были найдены на данном сайте.

33
27 комментариев

Гайд, что делать сайту ДТФ, чтобы вернуть волшебные метрики.
Правда это сейчас не в приоритете.

1
1

Автор добавь в статью это дополнение пожалуйста, а то многим может быть не понятно

Дополнение к 3-ему способу

Значения, которые нужно вставлять в команду:
_email_account_ - Ваша почта в Cloudflare
_global_key - Ваш глобальный API ключ (получение My Profile -> API Tokens -> Global API Key -> нажимаем View)
_idkey_ - (указывается в ссылке /zones/_idkey_/settings/) ID вашего домена (получение Websites -> Ваш Домен -> и снизу будет Zone ID)

В случае успеха в консоли должно быть ответ типа
{"result":{"id":"ech","value":"off","modified_on":null,"editable":true},"success":true,"errors":[],"messages":[]}

Также вы можете проверить значение ECH немного изменённой командой в терминале

Linux:
curl -X GET "https://api.cloudflare.com/client/v4/zones/_idkey_/settings/ech" \
-H "X-Auth-Email: _email_account_" \
-H "X-Auth-Key: _global_key" \
-H "Content-Type: application/json" \
--data '{}'

Windows:
curl -X GET "https://api.cloudflare.com/client/v4/zones/_idkey_/settings/ech" -H "X-Auth-Email: _email_account_" -H "X-Auth-Key: _global_key" -H "Content-Type: application/json" --data "{}"

Ответ должен быть типа:
{"result":{"id":"ech","value":"off","modified_on":null,"editable":true},"success":true,"errors":[],"messages":[]}

2

Добавил, спасибо)

Домен указывается то имя, по которому идёт блокировка? А если несколько сайтов, то соответственно столько же раз запускать команду? Или я так понимаю, это команда действительна только для тех, кто управляет этими доменами?

Можно пожалуйста подробнее как это прописать? Нужен PuTTY?

ПС Второй вариант с подключением TSL 1.2 не работает...(

у нас поовина рунета на cloudflare не?

1