Enmascaramientos del prefijo de conexión

A partir de la versión 1.9.0 del cliente de Outline, las claves de acceso admiten la opción "prefijo". El "prefijo" es una lista de bytes que se usan como los primeros de la sal de una conexión TCP de Shadowsocks. Esto puede hacer que la conexión parezca un protocolo que se permite en la red y, así, eludir firewalls que rechazan protocolos que no reconocen.

¿Cuándo debo probar esta opción?

Si sospechas que aún se bloquea a los usuarios de tu implementación de Outline, recomendamos que pruebes algunos prefijos diferentes.

Instrucciones

El prefijo no debe exceder los 16 bytes. Los prefijos más largos pueden causar colisiones de sal, que pueden comprometer la seguridad de la encriptación y provocar que se detecten las conexiones. Usa el prefijo más corto para evitar el bloqueo que enfrentas.

El puerto que uses deberá coincidir con el protocolo que pretende simular tu prefijo. IANA mantiene un registro de números de puertos de protocolo de transporte que asigna protocolos y números de puertos.

Algunos ejemplos de prefijos eficaces son similares a protocolos comunes:

Puerto recomendado Codificado con JSON Codificado con URL
Solicitud HTTP 80 (HTTP) "POST " POST%20
Respuesta HTTP 80 (HTTP) "HTTP/1.1 " HTTP%2F1.1%20
Solicitud de DNS por TCP 53 (dns) "\u0005\u00DC\u005F\u00E0\u0001\u0020" %05%C3%9C_%C3%A0%01%20
TLS ClientHello 443 (https), 463 (smtp), 563 (nntp), 636 (ldap), 989 (ftp-data), 990 (ftp), 993 (imap), 995 (pop3), 5223 (Apple APN), 5228 (Play Store), 5349 (turn) "\u0016\u0003\u0001\u0000\u00a8\u0001\u0001" %16%03%01%00%C2%A8%01%01
Datos de aplicación de TLS 443 (https), 463 (smtp), 563 (nntp), 636 (ldap), 989 (ftp-data), 990 (ftp), 993 (imap), 995 (pop3), 5223 (Apple APN), 5228 (Play Store), 5349 (turn) "\u0013\u0003\u0003\u003F" %13%03%03%3F
TLS ServerHello 443 (https), 463 (smtp), 563 (nntp), 636 (ldap), 989 (ftp-data), 990 (ftp), 993 (imap), 995 (pop3), 5223 (Apple APN), 5228 (Play Store), 5349 (turn) "\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

Claves de acceso dinámicas

Para usar la función de prefijo con claves de acceso dinámicas (ssconf://), agrega una clave de "prefijo" al objeto JSON, con un valor codificado con JSON que represente el prefijo que quieres (revisa los ejemplos en la tabla de arriba). Puedes usar códigos de escape (como \u00FF) para representar puntos de código Unicode en el rango de U+0 a U+FF. Por ejemplo:

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

Claves de acceso estáticas

Para usar prefijos con claves de acceso estáticas (ss://), deberás modificar tu clave existente antes de distribuirla. Si tienes una clave de acceso estática generada por Outline Manager, toma una versión codificada con URL de tu prefijo (revisa ejemplos de estos en la tabla de arriba) y agrégala al final de la clave de acceso como se muestra aquí:

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

Para los usuarios avanzados, puedes usar la función encodeURIComponent() de tu navegador para convertir tu prefijo codificado con JSON a uno codificado con URL. Para hacerlo, abre la consola de tu inspector web (*Desarrollador > Consola web de JavaScript *en Chrome) y escribe lo siguiente:

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

Presiona Intro. El valor que se produzca será la *versión *codificada con URL. Por ejemplo:

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