// 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):

bash
cat /proc/sys/net/ipv4/conf/eth0/rp_filter

Cambiar el valor temporalmente (hasta el reinicio):

bash
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter

Cambiar 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):

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 = 1

Los 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:

bash
sudo sysctl -p /etc/sysctl.d/99-rpfilter.conf

El 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:

bash
sudo sysctl --system

Si 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.

allinterfazValor aplicado en el interfaz
000 — verificación deshabilitada
022 — modo permisivo
101 — modo estricto
212 — modo permisivo

Consecuencias prácticas:

  • Para relajar la comprobación en una interfaz (por ejemplo, poner 2 en un túnel con enrutamiento asimétrico) no basta con cambiar el valor de la interfaz: all debe ser menor o igual al valor deseado. Normalmente se pone all = 0 y se define el modo en cada interfaz por separado.
  • Para endurecer la comprobación en todas partes, basta con aumentar all.
  • La clave default no 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:

bash
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.
    conf
    net.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.
    conf
    net.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 mediante ip rule fwmark o proxy transparente, preste atención al parámetro src_valid_mark. Con valor 1 la marca del paquete se tiene en cuenta al comprobar la ruta inversa, y rp_filter funciona correctamente cuando la marca se usa para enrutamiento en ambos sentidos. Con 0 (por defecto) la marca no se tiene en cuenta. Para src_valid_mark también se aplica la misma regla del máximo entre all e interfaz.
  • Nunca use rp_filter = 0 salvo 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

ladohinpy

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 …

Ravenor

MikroTik hAP: configuración del router. Configuraré su router MikroTik Wi‑Fi.

28.05.2025 · ★ 5/5

¡Un enfoque profesional!

¡Enfoque profesional al asunto!

ErlikZ

Configuración del router Mikrotik hAP. Configuraré su router Mikrotik Wi-Fi.

31.03.2025 · ★ 5/5

// Contact

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Respondo en un día laborable (03:00-13:00 GMT)

Или оставьте заявку здесь:

Confirme que no es un bot.

Escribir y recibir una respuesta rápida