
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 icmpush
no utiliza la interfaz externa eth1
, sino la del localhost lo
para 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 -nC
podrí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.