Saltar al contenido principal

En este ejemplo veremos cómo configurar el enrutamiento de servidor usando usuarios de servicio en el panel Remnawave.

Enrutamiento de servidor

Algunos usuarios pueden haber notado que Remnawave limpia automáticamente el array clients de la configuración del servidor. Esto no es un error ni un bug; el panel borra automáticamente estos arrays porque para que ciertas funciones del panel operen correctamente, el panel debe asegurarse de que no haya nada innecesario en ese array.

Imaginemos que tenemos dos servidores: RU-001 y DE-001.

Los usuarios se conectarán al servidor RU-001, realizaremos enrutamiento del tráfico y, a modo de ejemplo, enviaremos los sitios .ru directamente y todo lo demás al servidor DE-001.

Para resolver esta tarea necesitamos crear un usuario de servicio a través del cual realizaremos el enrutamiento.

Creación del perfil para DE-001

Ve a la sección Config Profiles y crea un nuevo perfil; lo llamaremos 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": []
}
}

Guarda la configuración actualizada.

Ve a la sección Internal Squad (para crear un nuevo squad haz clic en el signo más en la esquina derecha). En este squad activa únicamente el inbound recién creado BRIDGE_DE_IN del perfil Bridge Profile.

Asegúrate también de activar este inbound y el perfil en la tarjeta del nodo — en nuestro caso, el nodo DE-001.

Creación del usuario de servicio

Ve a la sección Users y crea un usuario llamado bridge_user_001. Asegúrate de que este usuario no tenga límite de tráfico y establece la fecha de expiración de la suscripción alrededor del año 2099. (No queremos que el panel deshabilite al usuario por alcanzar el límite de tráfico o porque la suscripción haya expirado.)

No olvides activar el squad para este usuario — en nuestro caso, activamos el squad creado anteriormente.

Una vez creado el usuario correctamente, abre su tarjeta y en el menú (botón More Actions) haz clic en la sección Detailed Info.

En esta sección desplázate hasta abajo y, según el tipo de inbound que tengas, copia la información.

ProtocoloDenominación en el panel
ShadowsocksSS Password
VLESSVLESS UUID
TrojanTrojan Password

Al final debes tener en tus manos una contraseña de conexión.

Configuración del perfil público

Es muy probable que ya tengas este perfil y los usuarios se conecten a través de él. La sección inbounds no necesita modificaciones; lo que nos interesa es la sección outbounds y routing.rules.

{
"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 OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE OWN KEY!",
"serverNames": ["REPLACE WITH 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" }
]
}
}

Entonces, la tarea inicial es: los usuarios se conectan al servidor RU-001 mediante el protocolo VLESS, y luego redirigimos el tráfico mediante enrutamiento.

Outbound

Primero necesitamos construir el outbound.

{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "ADDRESS OF DE-001",
"password": "PASSWORD FROM PREVIOUS STEP",
"port": 9999,
"level": 0,
"method": "chacha20-ietf-poly1305"
}
]
}
}
Valor¿Qué introducir?
addressIP o nombre de dominio que apunte a tu servidor, por ejemplo la IP del servidor DE-001
portPuerto del inbound, en nuestro caso el puerto del inbound BRIDGE_DE_IN
passwordContraseña del usuario para la conexión (pueden existir valores distintos según el protocolo, ver arriba)

En el caso de Shadowsocks — no uses ningún método que no sea chacha20-ietf-poly1305, ya que Remnawave solo admite este método.

Enrutamiento

Ejemplo de regla que envía todo el tráfico al outbound indicado arriba.

{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}

Ejemplo de reglas que envían los sitios RU directamente (salida desde el nodo RU-001) y todo lo demás a DE-001.

      {
"ip": [
"geoip:ru"
],
"outboundTag": "DIRECT"
},
{
"domain": [
"geosite:category-ru"
],
"outboundTag": "DIRECT"
}

Ensamblamos la configuración completa, que quedará así.

{
"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 OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE OWN KEY!",
"serverNames": ["REPLACE WITH OWN VALUES!"]
}
}
}
],
"outbounds": [
{ "protocol": "freedom", "tag": "DIRECT" },
{ "protocol": "blackhole", "tag": "BLOCK" },
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "ADDRESS OF DE-001",
"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"
}
]
}
}

Hemos añadido nuestro outbound SS_OUTBOUND_TO_DE al array outbounds, y las reglas al array rules dentro del objeto routing.

Las reglas en Xray funcionan por orden de prioridad. Nuestras reglas se pueden interpretar aproximadamente así:

  1. Si la IP pertenece a geoip:privateBLOCK (se envía al outbound BLOCK, que es un blackhole y bloquea la conexión).
  2. Si el dominio pertenece a la categoría geosite:private — misma acción.
  3. Lo mismo para el tráfico bittorrent.
  4. Si la IP pertenece a geoip:ru — se envía al Outbound DIRECT, por lo que el tráfico saldrá desde nuestro servidor RU-001.
  5. Si el dominio pertenece a la categoría geosite:category-ru — también se envía a DIRECT.
  6. Si el tráfico proviene del inbound PUBLIC_RU_INBOUND — lo enviamos al outbound SS_OUTBOUND_TO_DE (y desde allí va a nuestro servidor DE-001).

Conclusión

En este ejemplo hemos obtenido el siguiente esquema:

  • El usuario se conecta al servidor RU-001 usando el protocolo VLESS
  • El tráfico queda sujeto a las reglas:
    • Sitios (o IPs) rusos — salen directamente (DIRECT)
    • Todo el demás tráfico — se envía mediante el protocolo shadowsocks al otro servidor DE-001

También es posible usar VLESS como protocolo de tránsito; la diferencia principal estará en nuestro outbound.