diff --git a/frontend/src/lib/components/kb/KbArticle.svelte b/frontend/src/lib/components/kb/KbArticle.svelte index 16f625a..f4692aa 100644 --- a/frontend/src/lib/components/kb/KbArticle.svelte +++ b/frontend/src/lib/components/kb/KbArticle.svelte @@ -14,6 +14,7 @@ kb?.reset(); [&_code]:bg-neutral-900/70 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:rounded [&_code]:text-sm [&_code]:text-neutral-200 [&_h1]:mb-16 [&_h1]:text-5xl [&_h1]:font-black [&_h1]:tracking-tight [&_h1]:text-neutral-100 [&_h1]:uppercase [&_li]:my-3 [&_li]:text-neutral-300 + [&_ol]:list-decimal [&_ol]:pl-6 [&_ol]:my-6 [&_p]:my-6 [&_p]:text-lg [&_p]:leading-relaxed [&_p]:text-neutral-300 [&_ul]:list-disc [&_ul]:pl-6 [&_ul]:my-6 " diff --git a/frontend/src/routes/kb/probing/+page.svelte b/frontend/src/routes/kb/probing/+page.svelte index 6d9c758..297d342 100644 --- a/frontend/src/routes/kb/probing/+page.svelte +++ b/frontend/src/routes/kb/probing/+page.svelte @@ -1,6 +1,5 @@ @@ -48,12 +47,48 @@ import KbNote from "$lib/components/kb/KbNote.svelte"; сразу, не дожидаясь завершения всех проверок.

- Сканер не пытается открыть сайт целиком или подключиться напрямую к серверу. - Вместо этого он делает небольшую контрольную загрузку с тестовых хостов. - Часть этих хостов используется как условно заблокированные направления, - часть — как контрольные доступные направления. Это помогает отличить разные - типы поведения: обрыв на этапе начала HTTPS-соединения, недогрузку данных - или нормальную передачу. + Сканер не загружает целевой сайт целиком. Для домена он делает небольшие + контрольные HTTPS-загрузки с тестовых хостов, подставляя проверяемое имя в + SNI, а до разрешённого IP-адреса выполняет короткую TCP-трассировку на порт + 443. Эти проверки позволяют независимо увидеть блокировку по имени домена и + аномально раннее завершение маршрута до адреса. +

+ + + Методика сканирования + +

+ Каждая задача содержит IP-адрес цели и, если пользователь проверяет домен, + само доменное имя. SNI-проверка, трассировка цели и контрольные трассировки + запускаются одновременно, чтобы состояние сети во время измерений было как + можно более одинаковым. +

+
    +
  1. + Сканер подключается к настроенным тестовым хостам, но передаёт проверяемый + домен в TLS ClientHello и HTTP Host. Затем он оценивает, удалось ли + завершить TLS-обмен и получить минимальный объём данных. Для проверки + IP-адреса без домена этот этап пропускается. +
  2. +
  3. + Сканер открывает TCP-соединения к разрешённому IP-адресу на порту 443, + последовательно увеличивая TTL от 1 до 5. На каждом TTL по умолчанию + одновременно отправляются три попытки: это уменьшает влияние потерь + пакетов и ограничения частоты ICMP-ответов. Ответ ICMP Time Exceeded + переводит проверку к следующему TTL, а TCP RST или успешное соединение + завершают трассировку. +
  4. +
  5. + Из списка известных доступных хостов случайно выбираются не более трёх + IP-адресов той же версии протокола, что и цель. Все контрольные + трассировки идут параллельно, а для сравнения используется наименьший + измеренный контрольный TTL. +
  6. +
+

+ Если трассировки цели и контроля завершились ответом ICMP Time Exceeded, но + ответ для цели пришёл на меньшем TTL, сканер выставляет вердикт «ТСПУ Блок». + В результатах показывается номер последнего достигнутого перехода для цели.

@@ -66,30 +101,39 @@ import KbNote from "$lib/components/kb/KbNote.svelte";