// DevOps
¿Qué es rp_filter y para qué sirve?
Publicado el 22.09.2026
En el mundo de Linux y las tecnologías de red existen muchas configuraciones del kernel que no son obvias pero son críticamente importantes. Una de esas configuraciones es rp_filter. Este parámetro, que a menudo pasa desapercibido, juega un papel clave en la seguridad de red y en el enrutamiento correcto de los paquetes. Vamos a ver qué es, cómo funciona y por qué su comprensión es importante para todo administrador de sistemas.
¿Qué es rp_filter?
rp_filter significa Reverse Path Filtering (filtrado de ruta inversa). Es un mecanismo del kernel de Linux que verifica los paquetes de red entrantes para asegurarse de que hayan llegado por la interfaz por la cual, según las tablas de enrutamiento, se podría enviar un paquete de respuesta.
En términos sencillos: cuando llega un paquete a una interfaz de red, rp_filter comprueba si sería posible que este servidor envíe una respuesta al IP del remitente de ese paquete por la misma interfaz por la que llegó el paquete.
Imagine una analogía: Usted recibe una carta en la que, como dirección de remitente, aparece la calle “Lenina, casa 5”. Su oficina postal comprueba: si usted enviara una carta a “Lenina, casa 5”, ¿la enviaría a través de la misma oficina postal desde la que acaba de recibir esta carta? Si la respuesta es sí, entonces todo está bien. Si no (por ejemplo, “Lenina, casa 5” está en otra ciudad y para enviarla se usa otra oficina postal distinta), entonces esta carta se considera sospechosa.
¿Para qué sirve rp_filter? (Objetivo principal: Anti-spoofing)
El objetivo principal de rp_filter es la protección contra el IP-spoofing (suplantación de IP). El IP-spoofing es una técnica en la que un atacante falsifica la dirección IP de origen de los paquetes de red, haciéndose pasar por otro equipo. Esto puede usarse para:
- Ataques DDoS: Ocultar la verdadera fuente del ataque.
- Evadir filtros de red: Hacerse pasar por un nodo de confianza.
- Ataques Man-in-the-Middle: Interceptar y modificar el tráfico.
Cuando rp_filter está activado, rechaza paquetes entrantes si su IP de origen no coincide con la ruta inversa esperada. De este modo asegura que los paquetes que recibe su servidor realmente provienen de donde dicen provenir, o al menos que la ruta hacia el remitente a través de esa interfaz es “válida” según su tabla de enrutamiento.
Modos de funcionamiento de rp_filter
rp_filter se configura por cada interfaz de red por separado (por ejemplo, eth0, eth1), y también mediante las claves globales all y default (cómo se combinan se explica más abajo). El parámetro puede tomar uno de tres valores:
0(Disabled): Desactivado. No se realiza filtrado de ruta inversa. Todos los paquetes se aceptan independientemente de la ruta inversa. No recomendado para la mayoría de entornos, ya que deja el sistema vulnerable al spoofing.1(Strict mode - Modo estricto): Modo estricto RFC3704. El sistema comprueba que la respuesta al paquete entrante podría ser enviada solo a través de la misma interfaz por la que llegó el paquete, y que esa sería la mejor ruta hacia la fuente. Si no es así, el paquete se descarta.- Ventajas: Protección máxima contra el spoofing.
- Inconvenientes: Puede causar problemas en configuraciones de red complejas, como enrutamiento asimétrico (cuando el tráfico entrante sigue una ruta y el saliente otra), así como con ciertos tipos de balanceo de carga.
2(Loose mode - Modo permisivo): Modo permisivo RFC3704. El sistema comprueba que la respuesta al paquete entrante podría ser enviada a través de cualquier interfaz en ese servidor. Si existe al menos una ruta hacia la fuente del paquete, el paquete se acepta.- Ventajas: Buen compromiso entre seguridad y flexibilidad. Proporciona protección contra el spoofing, pero permite enrutamientos asimétricos y otros escenarios de red complejos.
- Inconvenientes: Protección menos estricta que en el modo
1.
¿Dónde está y cómo configurarlo?
Los parámetros rp_filter están en /proc/sys/net/ipv4/conf/. Puede verlos por cada interfaz y para todas las interfaces a la vez:
/proc/sys/net/ipv4/conf/all/rp_filter(valor global: al comprobar un paquete el kernel compara con el valor de la interfaz y toma el mayor de los dos)/proc/sys/net/ipv4/conf/default/rp_filter(valor que heredarán las interfaces creadas después de cambiar el parámetro)/proc/sys/net/ipv4/conf/<interface_name>/rp_filter(por ejemplo,/proc/sys/net/ipv4/conf/eth0/rp_filter)
Comprobar el valor actual (por ejemplo, para eth0):
cat /proc/sys/net/ipv4/conf/eth0/rp_filterCambiar el valor temporalmente (hasta el reinicio):
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filterCambiar el valor permanentemente (tras el reinicio):
Para ello use sysctl. Abra o cree un archivo de configuración (por ejemplo, /etc/sysctl.d/99-rpfilter.conf):
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Si necesita un valor separado para la interfaz:
net.ipv4.conf.eth0.rp_filter = 1Los comentarios en los archivos sysctl.d deben escribirse solo en una línea separada que comience con # o ;. No se permite un comentario al final de la línea con el valor: el texto después de # se considerará parte del valor y el parámetro no se aplicará.
Luego aplique los cambios:
sudo sysctl -p /etc/sysctl.d/99-rpfilter.confEl comando sudo sysctl -p sin argumentos lee solo /etc/sysctl.conf. Para aplicar todos los archivos de /etc/sysctl.d/, /run/sysctl.d/ y /usr/lib/sysctl.d/, use:
sudo sysctl --systemSi varios archivos definen el mismo parámetro, se aplica el valor del archivo cuyo nombre está por último en orden alfabético, por eso es conveniente poner sus ajustes en un archivo con prefijo 99-.
all frente a interfaz: qué valor se aplica
Un error común es pensar que net.ipv4.conf.all.rp_filter establece un valor “por defecto” que puede ser sobrescrito en la interfaz. No es así. Según la documentación del kernel, al comprobar un paquete que llegó a una interfaz se usa el mayor de los dos valores: conf/all/rp_filter y conf/<interfaz>/rp_filter.
all | interfaz | Valor aplicado en el interfaz |
|---|---|---|
| 0 | 0 | 0 — verificación deshabilitada |
| 0 | 2 | 2 — modo permisivo |
| 1 | 0 | 1 — modo estricto |
| 2 | 1 | 2 — modo permisivo |
Consecuencias prácticas:
- Para relajar la comprobación en una interfaz (por ejemplo, poner
2en un túnel con enrutamiento asimétrico) no basta con cambiar el valor de la interfaz:alldebe ser menor o igual al valor deseado. Normalmente se poneall = 0y se define el modo en cada interfaz por separado. - Para endurecer la comprobación en todas partes, basta con aumentar
all. - La clave
defaultno afecta a interfaces ya existentes — solo a las creadas después (túneles, VLANs, interfaces de contenedores).
Para ver qué valor está en efecto puede usar un comando:
sysctl -a 2>/dev/null | grep '\.rp_filter'En distribuciones con systemd, el archivo suministrado /usr/lib/sysctl.d/50-default.conf establece el modo permisivo (2) para default y para todas las interfaces, y all deliberadamente no se toca — permanece con el valor por defecto del kernel, 0. Por eso en esos sistemas en la práctica actúa el modo 2, aunque cat /proc/sys/net/ipv4/conf/all/rp_filter muestre 0.
Recomendaciones de configuración
- Para la mayoría de servidores (una interfaz, sin enrutamiento asimétrico): use
rp_filter = 1(modo estricto). Esto ofrece la mejor protección contra el spoofing.confnet.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 - Para servidores con enrutamiento asimétrico, múltiples direcciones IP en una interfaz, o configuraciones de red complejas (por ejemplo, balanceadores de carga, servidores VPN, algunas máquinas virtuales): considere
rp_filter = 2(modo permisivo). Proporciona un nivel razonable de protección pero permite que el tráfico entrante y saliente sigan rutas diferentes.confnet.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 - Si el enrutamiento depende de marcas de paquetes (
fwmark), por ejemplo con policy routing medianteip rule fwmarko proxy transparente, preste atención al parámetrosrc_valid_mark. Con valor1la marca del paquete se tiene en cuenta al comprobar la ruta inversa, yrp_filterfunciona correctamente cuando la marca se usa para enrutamiento en ambos sentidos. Con0(por defecto) la marca no se tiene en cuenta. Parasrc_valid_marktambién se aplica la misma regla del máximo entrealle interfaz. - Nunca use
rp_filter = 0salvo que tenga razones muy sólidas y comprenda completamente los riesgos.
Un ejemplo donde rp_filter suele causar problemas es al enviar el tráfico de una subred a través de un servidor remoto por un túnel con policy routing; el análisis de ese esquema está en el artículo Enrutamos el tráfico de la subred local a través de un servidor remoto (IPIP + enrutamiento por políticas). El enrutamiento asimétrico con dos proveedores se analiza en el artículo Redundancia de canales de comunicación: Parte 4 — Acceso a Internet: BGP, failover de DNS y CDN.
Conclusión
rp_filter es una herramienta potente para aumentar la seguridad de red de su servidor Linux mediante la protección contra IP-spoofing. La configuración correcta de este parámetro es crítica, especialmente en entornos de acceso público. Siempre empiece con el modo más estricto (1) y sóplese a 2 únicamente si surgen problemas con tráfico legítimo en configuraciones de red complejas. Recuerde: comprender las configuraciones de red del kernel es clave para una infraestructura estable y segura.
// Reviews
Reseñas relacionadas
Muchísimas gracias a Mijaíl por su trabajo, estoy muy satisfecho con el resultado. Agradezco especialmente las recomendaciones durante la configuración: a partir de un pliego de requisitos bastante confuso por mi parte (y yo entiendo poco de servidores), Mijaíl, con preguntas aclaratorias y propuestas, formuló una comprensión clara de qué tareas resolvería la configuración final y cómo organizarlo todo de la mejor manera. ¡Lo recomiendo!
Muchísimas gracias a Mijaíl por el trabajo, estoy muy satisfecho con el resultado. Agradezco especialmente las recomendaciones durante el proceso de configuración; a partir de mi especificación bastante confusa (y yo sé …
Configuración de Mikrotik hAP. Configuraré su router Wi‑Fi Mikrotik.
21.07.2025 · ★ 5/5
Excelente profesional, experto y persona maravillosa. En una hora nos arregló lo que llevábamos días intentando solucionar. Estoy seguro de que no será la primera vez que recurramos a su excepcional profesionalismo.
Excelente especialista, un experto con mucha experiencia y una persona maravillosa. En una hora nos arregló aquello por lo que llevábamos días rompiéndonos la cabeza! Estoy seguro de que no será la primera vez que …
MikroTik hAP: configuración del router. Configuraré su router MikroTik Wi‑Fi.
28.05.2025 · ★ 5/5
¡Un enfoque profesional!
¡Enfoque profesional al asunto!
Configuración del router Mikrotik hAP. Configuraré su router Mikrotik Wi-Fi.
31.03.2025 · ★ 5/5
Sabe, puede, hace. Todo rápido y al grano; quedé satisfecho con la colaboración.
Sabe, puede, hace. Todo de forma rápida y al grano, quedé satisfecho con la colaboración.
Configuración de Mikrotik hAP. Configuraré el router Wi-Fi Mikrotik para usted.
14.03.2025 · ★ 5/5
¡Gracias! Configuraron el router según mi especificación técnica, con una explicación completa de lo que estamos haciendo.
¡Gracias! Configuraron el router según mi especificación técnica, con una explicación completa de lo que hacemos
Configuración del router MikroTik hAP. Configuraré un router MikroTik Wi‑Fi para usted.
09.03.2025 · ★ 5/5
¡Todo genial! ¡Gracias! Lo recomiendo
¡Todo genial! ¡Gracias! Lo recomiendo
// Contact
¿Necesitas ayuda?
Escríbeme y te ayudaré a resolver el problema
Respondo en un día laborable (03:00-13:00 GMT)
Или оставьте заявку здесь:
// Related