La interfaz loopback es una interfaz virtual. El único propósito de la interfaz de bucle invertido es devolver los paquetes que se le envían, es decir, todo lo que le envía se recibe en la interfaz. No tiene mucho sentido poner una ruta predeterminada en la interfaz loopback, porque el único lugar al que puede enviar paquetes es al trozo de cable imaginario que se enlaza desde la salida de la interfaz hasta la entrada. No hay nada que pueda cambiar este comportamiento de la interfaz loopback, para eso está codificado.
Cuando hace ping a 10.0.3.2, la respuesta no proviene de algún dispositivo externo, sino de la propia interfaz de loopback. Cuando agrega una dirección en la interfaz de bucle invertido, por ejemplo,
sudo ip addr add 10.0.3.1/24 dev lo
una ruta a 10.0.3.0/24
está agregado. Puedes ver esto con
ip route show table local
Algo como
local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1
debería aparecer Esta entrada de la tabla de enrutamiento indica que un paquete enviado a cualquier dirección entre 10.0.3.1
y 10.0.3.254
se envía a través del lo
interfaz, desde la que se devuelve inmediatamente.
EDITAR:aclaración como respuesta al comentario a continuación.
Esto es lo que sucede cuando hace ping a 10.0.3.2:el kernel obtiene un paquete IP para entregar con una dirección de destino 10.0.3.2. Al igual que con cualquier paquete a entregar, el kernel consulta la tabla de enrutamiento. En este caso, la entrada coincidente es esta:local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1
, que dice que el paquete debe entregarse a través del lo
interfaz con la dirección de origen 10.0.3.1.
Ahora, porque el paquete fue entregado a los lo
interfaz, la interfaz loopback hace lo que normalmente hace:saca el paquete de la cola de envío y lo pone en la cola de recepción. Desde el punto de vista del kernel, ahora hemos recibido un paquete entrante listo para ser consumido por un proceso de servidor que escucha en un socket. (En el caso del ping, el núcleo lo procesa internamente). Ahora hemos recibido un paquete ICMP "remoto" con una dirección de destino de 10.0.3.2, que podría decirse que no es una de nuestras direcciones locales, pero se entregó al loopback no obstante, la interfaz.
A continuación, el núcleo envía una respuesta al ping:un paquete de respuesta ICMP con las direcciones invertidas:10.0.3.2 como dirección de origen y 10.0.3.1 como destino. Esto se entrega a través de la interfaz de bucle invertido al programa de ping, lo que muestra que recibimos una respuesta de 10.0.3.2.