Xray
Visão Geral
Implante e configure o Xray-core — a plataforma avançada de proxy que suporta os protocolos VLESS, VMess, Trojan e Shadowsocks com transportes modernos como Reality, XTLS-Vision, WebSocket, gRPC e HTTP/2. Esta skill cobre implantação de servidor, seleção de protocolo, configuração TLS/Reality, roteamento de tráfego, gerenciamento multi-usuário, integração com CDN, configuração de cliente e monitoramento.
Instruções
Passo 1: Instalação
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
xray version
# Binário: /usr/local/bin/xray
# Config: /usr/local/etc/xray/config.json
# Gerar UUID e chaves X25519
xray uuid
xray x25519 # Par de chaves Privada + Pública para Reality
Passo 2: VLESS + Reality (Recomendado)
A configuração mais segura. O Reality imita o handshake TLS de um site HTTPS real, eliminando a necessidade de um domínio ou certificado TLS.
Configuração do servidor (/usr/local/etc/xray/config.json):
{
"log": { "loglevel": "warning" },
"inbounds": [{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{ "id": "SEU-UUID", "flow": "xtls-rprx-vision", "email": "usuario1@proxy" }
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "www.microsoft.com:443",
"serverNames": ["www.microsoft.com", "microsoft.com"],
"privateKey": "SUA-CHAVE-PRIVADA",
"shortIds": ["", "0123456789abcdef"]
}
},
"sniffing": { "enabled": true, "destOverride": ["http", "tls", "quic"] }
}],
"outbounds": [
{ "protocol": "freedom", "tag": "direct" },
{ "protocol": "blackhole", "tag": "block" }
],
"routing": {
"rules": [{ "type": "field", "ip": ["geoip:private"], "outboundTag": "block" }]
}
}
Link de compartilhamento para cliente:
vless://UUID@IP_DO_SERVIDOR:443?encryption=none&flow=xtls-rprx-vision&security=reality&sni=www.microsoft.com&fp=chrome&pbk=CHAVE_PUBLICA&sid=0123456789abcdef&type=tcp#MeuProxy
systemctl enable --now xray
Passo 3: VLESS + WebSocket + TLS (Compatível com CDN)
Para roteamento através do Cloudflare CDN, a fim de ocultar o IP do servidor. Requer um domínio com proxy do Cloudflare e um certificado TLS.
apt install -y certbot
certbot certonly --standalone -d proxy.seudominio.com
{
"inbounds": [
{
"port": 443, "protocol": "vless",
"settings": {
"clients": [{ "id": "SEU-UUID" }],
"decryption": "none",
"fallbacks": [
{ "dest": 8080 },
{ "path": "/caminho-ws", "dest": 8443, "xver": 1 }
]
},
"streamSettings": {
"network": "tcp", "security": "tls",
"tlsSettings": {
"certificates": [{
"certificateFile": "/etc/letsencrypt/live/proxy.seudominio.com/fullchain.pem",
"keyFile": "/etc/letsencrypt/live/proxy.seudominio.com/privkey.pem"
}]
}
}
},
{
"listen": "127.0.0.1", "port": 8443, "protocol": "vless",
"settings": { "clients": [{ "id": "SEU-UUID" }], "decryption": "none" },
"streamSettings": { "network": "ws", "wsSettings": { "path": "/caminho-ws" } }
}
],
"outbounds": [{ "protocol": "freedom", "tag": "direct" }]
}
Configure o nginx na porta 8080 como fallback e, no Cloudflare: SSL/TLS Completo (Estrito), WebSockets ATIVADO.
Passo 4: Trojan e Shadowsocks
Trojan (parece HTTPS normal):
{
"inbounds": [{
"port": 443, "protocol": "trojan",
"settings": {
"clients": [{ "password": "sua-senha-forte", "email": "usuario1@trojan" }],
"fallbacks": [{ "dest": 8080 }]
},
"streamSettings": {
"network": "tcp", "security": "tls",
"tlsSettings": { "certificates": [{ "certificateFile": "...", "keyFile": "..." }] }
}
}]
}
Shadowsocks 2022 (cifras AEAD modernas):
{
"inbounds": [{
"port": 8388, "protocol": "shadowsocks",
"settings": { "method": "2022-blake3-aes-128-gcm", "password": "CHAVE_BASE64", "network": "tcp,udp" }
}]
}
Gere a chave: openssl rand -base64 16 (ou -base64 32 para aes-256)
Passo 5: Gerenciamento Multi-Usuário
"clients": [
{ "id": "uuid-1", "email": "alice@proxy", "flow": "xtls-rprx-vision" },
{ "id": "uuid-2", "email": "bob@proxy", "flow": "xtls-rprx-vision" },
{ "id": "uuid-3", "email": "carol@proxy", "flow": "xtls-rprx-vision" }
]
Estatísticas de tráfego por usuário — ative a API de estatísticas:
{
"stats": {},
"policy": {
"levels": { "0": { "statsUserUplink": true, "statsUserDownlink": true } },
"system": { "statsInboundUplink": true, "statsInboundDownlink": true }
},
"api": { "tag": "api", "services": ["StatsService", "HandlerService"] },
"inbounds": [
{ "listen": "127.0.0.1", "port": 10085, "protocol": "dokodemo-door",
"settings": { "address": "127.0.0.1" }, "tag": "api" }
],
"routing": { "rules": [{ "type": "field", "inboundTag": ["api"], "outboundTag": "api" }] }
}
Consultar e gerenciar usuários em tempo de execução:
xray api stats --server=127.0.0.1:10085 -name "user>>>alice@proxy>>>traffic>>>uplink"
xray api adi --server=127.0.0.1:10085 --inbound-tag proxy --id "novo-uuid" --email "novousuario@proxy"
xray api rmi --server=127.0.0.1:10085 --inbound-tag proxy --email "usuariovelho@proxy"
Passo 6: Regras de Roteamento e Monitoramento
Rotear por domínio/IP/geo:
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{ "type": "field", "domain": ["geosite:category-ads-all"], "outboundTag": "block" },
{ "type": "field", "ip": ["geoip:private"], "outboundTag": "block" },
{ "type": "field", "network": "tcp,udp", "outboundTag": "proxy" }
]
}
}
Monitoramento:
systemctl status xray
journalctl -u xray -f
grep "accepted" /var/log/xray/access.log | awk '{print $3}' | sort | uniq -c | sort -rn
Firewall:
ufw allow 443/tcp && ufw allow 443/udp && ufw enable
Exemplos
Exemplo 1: Implantar um servidor proxy VLESS + Reality para uma pequena equipe
Solicitação do usuário: "Configure o Xray no nosso VPS Debian 12 em 198.51.100.30 usando VLESS com transporte Reality. Crie contas para alice, bob e carol. Use microsoft.com como alvo do Reality e forneça os links de compartilhamento para o v2rayNG."
O agente instalará o Xray via script oficial, gerará um UUID para cada usuário e um par de chaves X25519, criará um config.json com uma entrada VLESS na porta 443 usando configurações Reality com destino a www.microsoft.com, adicionará três entradas de cliente com fluxo xtls-rprx-vision, adicionará regras de roteamento para bloquear IPs privados, ativará e iniciará o serviço xray, abrirá a porta 443 no firewall e fornecerá três links de compartilhamento vless:// com o IP do servidor, chave pública, short ID e SNI.
Exemplo 2: Configurar um proxy VLESS com frontend CDN via Cloudflare e um site de fallback
Solicitação do usuário: "Eu tenho proxy.meusite.com apontando para nosso servidor através do Cloudflare. Configure o Xray com VLESS sobre WebSocket em /secret-ws para que o tráfego passe pelo CDN do Cloudflare. Visitantes que não forem proxy devem ver um site nginx normal."
O agente obterá um certificado Let's Encrypt com certbot, configurará o Xray com uma entrada principal VLESS+TLS na porta 443 com fallback para nginx na porta 8080, adicionará uma segunda entrada VLESS+WebSocket em localhost:8443 com caminho /secret-ws, configurará o nginx para servir um site estático na porta 8080, verificará se o SSL do Cloudflare está definido como Completo (Estrito) com WebSockets ativados e fornecerá a string de conexão do cliente com o caminho WebSocket e o SNI do Cloudflare.
Diretrizes
- Sempre use VLESS + Reality para novas implantações; não requer domínio ou certificado e é o protocolo mais difícil de detectar e bloquear
- Defina
"alterId": 0para todos os usuários VMess para ativar a criptografia AEAD obrigatória; alterId diferente de zero usa o formato legado, menos seguro e depreciado - Bloqueie o acesso a faixas de IP privadas (geoip:private) nas regras de roteamento para evitar que o proxy seja usado em ataques SSRF contra serviços internos
- Use os comandos
xray apipara adicionar e remover usuários em tempo de execução sem reiniciar o serviço, evitando desconectar usuários ativos - Escolha o
desteserverNamesdo Reality de um site popular (microsoft.com, apple.com) hospedado em um IP diferente do seu servidor e certifique-se de que esse site suporte TLS 1.3 e HTTP/2 - Ative a API de estatísticas com rastreamento por usuário (
statsUserUplink/statsUserDownlink) para monitorar o uso de banda e detectar abusos