Redireccionamiento ICMP: cómo probarlo con icmpush

Redireccionamiento ICMP: cómo probarlo con icmpush

Quiero ver cómo cambia la tabla de enrutamiento en un sistema Linux cuando se recibe una redirección ICMP. Para eso uso

icmpush -v red -sp current-gateway -gw new-gateway -dest google.com -c host -prot tcp my-eth1-ip-address

(que devuelve el éxito), pero el resultado de

route -n 

sigue siendo el mismo. Por supuesto, he comprobado la salida de

cat /proc/sys/net/ipv4/conf/eth1/accept_redirects

que es 1. Esta es una máquina Ubuntu 12, con la última versión estable del kernel, sin firewall instalado.

Entonces la pregunta: ¿qué podría estar yendo mal?

Respuesta1

De acuerdo aDocumentación/redes/ip-sysctl.txt, de forma predeterminada, las redirecciones solo se aceptan para aquellas puertas de enlace que ya figuran en la tabla de enrutamiento.

Secure_redirects - BOOLEANO
    Acepte mensajes de redireccionamiento ICMP solo para puertas de enlace,
    enumerados en la lista de puertas de enlace predeterminadas.
    Secure_redirects para la interfaz se habilitará si al menos uno de
    conf/{all,interface}/secure_redirects está configurado en VERDADERO,
    de lo contrario se desactivará
    predeterminado VERDADERO

Respuesta2

Una suposición: la llamada de icmpushno utiliza la interfaz externa eth1, sino la del localhost lopara que el kernel no reconozca que es una redirección correcta desde el gateway. Además, en versiones muy antiguas del kernel de Linux estas rutas no se mostraban en la respuesta del archivo route -n. Como señalé, la respuesta de route -nCpodría ser la forma correcta de incluir también la ruta de redireccionamiento temporal.

@grawity, sobre aceptar redirecciones que se enviaron en respuesta a otro paquete: ¿leíste eso en alguna parte? porque estaría realmente interesado en eso.

información relacionada