9Router: evaluar un gateway sin prometer acceso ilimitado
Lea la regla de confianza de cabeceras de 9Router
Examine loopback, sustitución de campos internos y por qué otra entrada de arranque cambia el límite de solicitudes.
Qué aprenderás
- Partir del socket
- Reemplazar metadatos
- Probar el camino desplegado
Antes de empezar
- Lectura básica de comandos y configuración
- Entorno de ensayo desechable y autorizado
Registre modelo solicitado, intentos y aceptación sin retener secretos ni automatizar cambios de cuenta.
Conclusiones clave
- Forwarding solo se acepta en la rama loopback.
- Via-proxy no resume toda la confianza.
- Otra entrada puede omitir el wrapper.
Partir del socket
El wrapper lee req.socket.remoteAddress y considera loopback 127.0.0.1, ::1 y ::ffff:127.0.0.1. Solo para esos peers puede usar x-real-ip o la primera entrada separada por comas de x-forwarded-for.
Un peer remoto directo conserva su dirección socket aunque envíe forwarding. Esta derivación concreta no confía en cualquier IP que un cliente remoto afirme tener.
Reemplazar metadatos
Antes del handler elimina x-9r-real-ip, x-forwarded-for, x-9r-via-proxy y x-9r-peer-token. Añade IP derivada y token aleatorio por proceso. La presencia original de forwarding controla otro marcador via-proxy.
Ese marcador solo no demuestra confianza en la IP enviada: también importa loopback. El wrapper tampoco prueba que todos los consumidores posteriores interpreten correctamente los campos; necesitan revisión propia.
Probar el camino desplegado
Cubra peer remoto con forwarding falso, proxy loopback limpio, ausencia de cabeceras y proxy de contenedor. Compruebe campos derivados y entradas eliminadas independientemente. Son condiciones distintas.
Los comentarios indican que Next directo no carga el wrapper. Pruebe la entrada de producción y topología reales. No ejecutamos estas fixtures ni auditamos la ruta separada de upgrade h2c.
Cómo elegir
| Criterio | Opción A | Opción B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
Pasos de implementación
- 1
Lea socket y loopback antes de precedencia.
- 2
Compruebe sustitución de campos internos.
- 3
Pruebe entrada y topología reales.
Ejemplo para copiar
{
"proposedFixture": true,
"peer": "203.0.113.10",
"forwardedFor": "198.51.100.20",
"expectedDerivedIp": "203.0.113.10",
"executed": false
}Preguntas frecuentes
¿Cualquier x-forwarded-for decide identidad?
No aquí: peers no loopback conservan socket.
¿Todo el gateway está auditado?
Es una revisión de un límite sin pruebas integradas ejecutadas.
Fuentes
- 9Router / custom-server.jsFuente verificada 2026-09-18