App cliente do Outline v1.15.0+.
Este tutorial mostra em detalhes como implementar o Shadowsocks sobre WebSockets, uma técnica potente para contornar a censura em ambientes onde as conexões normais do Shadowsocks são bloqueadas. Ao encapsular o tráfego do Shadowsocks dentro de WebSockets, você pode disfarçá-lo como tráfego padrão da Web, aumentando a resiliência e a acessibilidade.
Etapa 1: configure e execute um servidor do Outline
Crie um novo arquivo config.yaml
com a seguinte configuração:
web:
servers:
- id: server1
listen:
- "127.0.0.1:WEB_SERVER_PORT"
services:
- listeners:
- type: websocket-stream
web_server: server1
path: "/TCP_PATH"
- type: websocket-packet
web_server: server1
path: "/UDP_PATH"
keys:
- id: 1
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
Baixe a versão mais recente do
outline-ss-server
(em inlgês)
e execute-a usando a configuração criada:
outline-ss-server -config=config.yaml
Etapa 2: exponha o servidor da Web
Para tornar seu servidor da Web WebSocket acessível publicamente, é necessário que ele seja exposto à Internet. Também é preciso configurar o TLS (em inglês). Há várias formas de fazer isso. Você pode usar um servidor da Web local, como Caddy, nginx ou Apache, garantindo que ele tenha um certificado TLS válido, ou empregar um serviço de encapsulamento como o Cloudflare Tunnel ou o ngrok (todos os links em inglês).
Exemplo usando o TryCloudflare
Neste exemplo, vamos demonstrar o uso do TryCloudflare (em inglês) para criar um túnel rápido. Essa é uma forma maneira conveniente e segura de expor seu servidor da Web local sem abrir portas de entrada.
Faça o download do
cloudflared
(em inglês) e instale-o.Crie um túnel apontando para a porta do seu servidor da Web local:
cloudflared tunnel --url http://127.0.0.1:WEB_SERVER_PORT
O Cloudflare vai fornecer um subdomínio (por exemplo,
acids-iceland-davidson-lb.trycloudflare.com
) para acessar seu endpoint WebSocket
e gerenciar automaticamente o TLS. Anote esse subdomínio, porque ele será necessário
mais tarde.
Etapa 3: crie uma chave de acesso dinâmica
Gere um arquivo YAML de chaves de acesso do cliente para seus usuários com o formato de configuração de chave de acesso e inclua os endpoints do WebSocket que foram configurados no lado do servidor:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN/TCP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN/UDP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
Depois de gerar o arquivo YAML de chaves de acesso dinâmicas, você terá que entregá-lo aos seus usuários. É possível armazenar o arquivo em um serviço estático de hospedagem na Web ou gerá-lo dinamicamente. Saiba mais sobre como usar as chaves de acesso dinâmicas.
Etapa 4: conecte-se com o app cliente do Outline
Use um dos aplicativos oficiais do app cliente do Outline (versões 1.15.0+) e adicione a chave de acesso dinâmica que você criou como uma entrada de servidor. Clique em Conectar para iniciar o encapsulamento para seu servidor usando a configuração Shadowsocks sobre Websocket.
Use uma ferramenta como o IPInfo (em inglês) para verificar se você está navegando na Internet pelo seu servidor Outline.