Перейти к основному содержимому

Маскировка префикса подключения

В клиенте Outline версии 1.9.0 ключи доступа поддерживают префикс. Это список байтов, используемых в качестве первых байтов соли TCP-подключения Shadowsocks. Благодаря этому подключение выглядит как протокол, разрешенный в сети, и обходит брандмауэры, которые блокируют нераспознанные протоколы.

Когда следует применять этот прием​

Если вам кажется, что пользователи вашего сервера Outline все ещё заблокированы, вы можете попробовать другие префиксы.

Инструкции​

Длина префикса не должна превышать 16 байтов. Более длинный префикс может вызвать коллизии солей. Это повлияет на безопасность шифрования и может привести к обнаружению подключений. Используйте наиболее короткий префикс из возможных, чтобы обойти блокировку.

Используемый порт должен совпадать с протоколом вашего префикса. Найти сопоставленные протоколы и номера портов можно в этом списке.

Ниже перечислены некоторые примеры префиксов, которые выглядят как распространенные протоколы.

Рекомендуемый порт Кодировка JSON Кодировка URL

HTTP-запрос 80 (http) "POST " POST%20

HTTP-ответ 80 (http) "HTTP/1.1 " HTTP%2F1.1%20

DNS-over-TCP-запрос 53 (dns) "\u0005\u00DC\u005F\u00E0\u0001\u0020" %05%C3%9C_%C3%A0%01%20

TLS ClientHello 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) "\u0016\u0003\u0001\u0000\u00a8\u0001\u0001" %16%03%01%00%C2%A8%01%01

TLS Application Data 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) "\u0013\u0003\u0003\u003F" %13%03%03%3F

TLS ServerHello 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) "\u0016\u0003\u0003\u0040\u0000\u0002" %16%03%03%40%00%02

SSH 22 (ssh), 830 (netconf-ssh), 4334 (netconf-ch-ssh), 5162 (snmpssh-trap) "SSH-2.0\r\n" SSH-2.0%0D%0A

Динамические ключи доступа​

Чтобы использовать префикс с динамическими ключами доступа (ssconf://), добавьте к объекту JSON ключ префикса со значением в кодировке JSON, представляющим нужный префикс (примеры указаны в таблице выше). Вы можете использовать управляющие символы (например, \u00FF) для непечатных кодовых точек Unicode в диапазоне от U+0 до U+FF. Например:

{
"server": "example.com",
"server_port": 8388,
"password": "example",
"method": "chacha20-ietf-poly1305",
"prefix": "\u0005\u00DC\u005F\u00E0\u0001\u0020"
}

Статические ключи доступа​

Чтобы использовать префикс со статическими ключами доступа (ss://), необходимо изменить существующий ключ перед его предоставлением. Если вы сгенерировали в Менеджере Outline статический ключ доступа, добавьте к нему в конце версию префикса в кодировке URL (примеры указаны в таблице выше). Вот как это может выглядеть:

ss://Z34nthataITHiTNIHTohithITHbVBqQ1o3bkk@127.0.0.1:33142/?outline=1&prefix=<your url-encoded prefix goes here>

Вы также можете использовать функцию браузера encodeURIComponent(), чтобы преобразовать кодировку префикса из JSON в URL. Для этого откройте консоль JavaScript в браузере Chrome: в меню выберите "Дополнительные инструменты > Инструменты разработчика" и откройте вкладку Console (Консоль). Затем введите следующее:

encodeURIComponent("<your json-encoded prefix goes here>")

Нажмите "Ввод". Полученное значение будет префиксом в кодировке URL. Например:

encodeURIComponent("\u0016\u0003\u0001\u0000\u00a8\u0001\u0001")
'%16%03%01%00%C2%A8%01%01'