Roteamento do Lado do Servidor
Este guia é destinado puramente como uma demonstração do roteamento do lado do servidor. Não assuma que copiar esses exemplos produzirá uma configuração completamente funcional em produção. Ele não cobre todas as capacidades do Xray-core, nem garante que funcionará perfeitamente em todos os ambientes.
Para detalhes completos sobre a sintaxe de configuração e comportamento, consulte a documentação oficial do Xray.
Alguns usuários podem ter notado que o Remnawave apaga automaticamente o array clients da configuração do Node. Isso não é um bug, mas um comportamento intencional. O Remnawave o apaga para garantir que apenas as configurações necessárias sejam mantidas para que determinadas funcionalidades operem corretamente.
Neste guia, vamos configurar o roteamento de tráfego do lado do servidor usando dois Nodes: RU e DE. Os usuários se conectarão ao Node RU. De lá, o tráfego será roteado da seguinte forma:
- O tráfego para sites
.ruserá enviado diretamente pelo NodeRU. - Todo o restante do tráfego será roteado pelo Node
DE.
Para isso, criaremos um usuário de serviço que facilitará o roteamento do tráfego.
Como resultado, o "fluxo" do tráfego pode ser assim:
- O usuário abre
google.com. - A requisição chega primeiro ao Node
RU. - O Node
RUaplica as regras de roteamento. Comogoogle.comnão é um domínio.ru, o tráfego é roteado para o NodeDE. - O Node
DEcompleta a conexão comgoogle.com.
Este tipo de configuração de roteamento do lado do servidor é frequentemente chamado de "bridge" (ponte).
Criar um Perfil de Configuração para DE
Navegue até a seção Perfis de Configuração e crie um novo Perfil de Configuração, por exemplo DE Bridge Profile.
{
"log": {
"loglevel": "warning"
},
"dns": {},
"inbounds": [
{
"tag": "BRIDGE_DE_IN",
"port": 9999,
"listen": "0.0.0.0",
"protocol": "shadowsocks",
"settings": {
"clients": [],
"network": "tcp,udp"
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
}
}
],
"outbounds": [
{
"tag": "DIRECT",
"protocol": "freedom"
},
{
"tag": "BLOCK",
"protocol": "blackhole"
}
],
"routing": {
"rules": []
}
}
Atribua o Perfil de Configuração recém-criado ao Node DE. Selecione o Inbound BRIDGE_DE_IN.
Crie um novo Squad Interno, vamos chamá-lo de Bridge Squad. Ative o Inbound que criamos anteriormente — BRIDGE_DE_IN.
Criar um Usuário de Serviço
Para que nossa bridge funcione, precisaremos criar um usuário. Vamos chamá-lo de bridge_user.
Como se trata de um usuário de serviço, obviamente não queremos que sua assinatura expire ou seja limitada pelo uso de tráfego. Defina Data Limit como 0 e Expiry Date para o ano 2099.
Em seguida, atribua o Squad adequado a este usuário. No nosso caso, é o Bridge Squad.
Após o usuário de serviço ser criado, precisaremos obter sua senha. Abra o cartão do usuário, clique no botão More Actions e depois em Detailed Info. Lá você deve ver a seção Connection Information.
Dependendo do protocolo do Inbound (Shadowsocks no nosso caso), copie o valor apropriado:
| Protocolo | Valor de Informação de Conexão |
|---|---|
| Trojan | Senha Trojan |
| VLESS | UUID VLESS |
| Shadowsocks | Senha SS |
Configurar um Perfil Público
Muito provavelmente, você já tem um Perfil de Configuração ao qual seus usuários se conectam. Caso contrário, consulte este guia.
Nesta etapa, não estamos interessados nos "inbounds" — em vez disso, modificaremos os arrays "outbounds", "routing" e "rules" desse Perfil.
{
"log": {
"loglevel": "none"
},
"inbounds": [
{
"tag": "PUBLIC_RU_INBOUND",
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
},
"streamSettings": {
"network": "raw",
"security": "reality",
"realitySettings": {
"target": "USE YOUR OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE YOUR OWN KEY!",
"serverNames": ["USE YOUR OWN VALUES!"]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "DIRECT"
},
{
"protocol": "blackhole",
"tag": "BLOCK"
}
],
"routing": {
"rules": [
{
"ip": ["geoip:private"],
"outboundTag": "BLOCK"
},
{
"domain": ["geosite:private"],
"outboundTag": "BLOCK"
},
{
"protocol": ["bittorrent"],
"outboundTag": "BLOCK"
}
]
}
}
Outbounds
Primeiro precisamos modificar o array outbounds.
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "DE NODE ADDRESS",
"password": "PASSWORD FROM PREVIOUS STEP",
"port": 9999,
"level": 0,
"method": "chacha20-ietf-poly1305"
}
]
}
}
| Campo | Valor |
|---|---|
address | O endereço IP ou nome de domínio do seu servidor Node DE. |
port | A porta do Inbound; no nosso caso, a porta do BRIDGE_DE_IN. |
password | A senha do usuário de serviço. Depende do protocolo que você está usando; veja a etapa anterior. |
method | Método de criptografia. Para Shadowsocks no Remnawave, sempre use chacha20-ietf-poly1305. |
Roteamento e Regras
Em seguida, modifique as regras de roteamento conforme suas necessidades.
Abaixo está o exemplo de uma regra que torna o Node RU um nó de saída para IPs e sites russos, enquanto o restante do tráfego é enviado para o Node DE.
{
"ip": ["geoip:ru"],
"outboundTag": "DIRECT"
},
{
"domain": ["geosite:category-ru"],
"outboundTag": "DIRECT"
}
Abaixo está o exemplo de uma regra que encaminha todo o tráfego para o Outbound SS_OUTBOUND_TO_DE.
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}
O Perfil de Configuração público completo pode parecer assim:
{
"log": {
"loglevel": "none"
},
"inbounds": [
{
"tag": "PUBLIC_RU_INBOUND",
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
},
"streamSettings": {
"network": "raw",
"security": "reality",
"realitySettings": {
"target": "USE YOUR OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE YOUR OWN KEY!",
"serverNames": ["USE YOUR OWN VALUES!"]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "DIRECT"
},
{
"protocol": "blackhole",
"tag": "BLOCK"
},
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "DE NODE ADDRESS",
"password": "PASSWORD FROM PREVIOUS STEP",
"port": 9999,
"level": 0,
"method": "chacha20-ietf-poly1305"
}
]
}
}
],
"routing": {
"rules": [
{
"ip": ["geoip:private"],
"outboundTag": "BLOCK"
},
{
"domain": ["geosite:private"],
"outboundTag": "BLOCK"
},
{
"protocol": ["bittorrent"],
"outboundTag": "BLOCK"
},
{
"ip": ["geoip:ru"],
"outboundTag": "DIRECT"
},
{
"domain": ["geosite:category-ru"],
"outboundTag": "DIRECT"
},
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}
]
}
}
As regras de roteamento do Xray são processadas em ordem, de cima para baixo.
Veja como as regras do nosso exemplo funcionam:
-
IPs privados (
geoip:private) →BLOCK
O tráfego que corresponde a esta regra é enviado para o OutboundBLOCK, que é um protocoloblackhole(completamente bloqueado). -
Domínios privados (
geosite:private) →BLOCK
Igual ao anterior, mas para nomes de domínio. -
Tráfego BitTorrent (
bittorrent) →BLOCK
Todo o tráfego BitTorrent é bloqueado. -
IPs russos (
geoip:ru) →DIRECT
O tráfego que corresponde a esta regra é enviado para o OutboundDIRECT, que é um protocolofreedom(o NodeRUatua como nó de saída). -
Domínios russos (
geosite:category-ru) →DIRECT
O tráfego para domínios russos também sai diretamente do Node RU. -
Nenhuma regra correspondente (o restante do tráfego) →
SS_OUTBOUND_TO_DE
Qualquer tráfego restante que chegue aoPUBLIC_RU_INBOUNDé roteado para o NodeDEpelo OutboundShadowsocksque criamos anteriormente.
Você não precisa usar Shadowsocks como protocolo de trânsito — você pode usar VLESS em seu lugar. Apenas certifique-se de atualizar sua configuração adequadamente.