L'interface de bouclage est une interface virtuelle. Le seul but de l'interface de bouclage est de renvoyer les paquets qui lui sont envoyés, c'est-à-dire que tout ce que vous lui envoyez est reçu sur l'interface. Cela n'a aucun sens de mettre une route par défaut sur l'interface de bouclage, car le seul endroit où elle peut envoyer des paquets est le morceau de câble imaginaire qui est bouclé de la sortie de l'interface à l'entrée. Il n'y a rien qui puisse changer ce comportement de l'interface de bouclage, c'est ce pour quoi elle est codée.
Lorsque vous effectuez une requête ping sur 10.0.3.2, la réponse ne provient pas d'un périphérique externe, mais de l'interface de bouclage elle-même. Lorsque vous ajoutez une adresse sur l'interface de bouclage avec par exemple
sudo ip addr add 10.0.3.1/24 dev lo
un itinéraire vers 10.0.3.0/24
est ajouté. Vous pouvez le voir avec
ip route show table local
Quelque chose comme
local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1
devrait apparaître. Cette entrée de la table de routage indique qu'un paquet envoyé à n'importe quelle adresse entre 10.0.3.1
et 10.0.3.254
est envoyé via le lo
interface, à partir de laquelle il est immédiatement renvoyé.
EDIT :clarification en réponse au commentaire ci-dessous.
Voici ce qui se passe lorsque vous pingez 10.0.3.2 :le noyau reçoit un paquet IP à livrer avec une adresse de destination 10.0.3.2. Comme pour tout paquet à livrer, le noyau consulte la table de routage. Dans ce cas, l'entrée correspondante est celle-ci :local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1
, qui indique que le paquet doit être livré via le lo
interface avec l'adresse source 10.0.3.1.
Maintenant, parce que le paquet a été donné au lo
interface, l'interface de bouclage fait ce qu'elle fait normalement :elle retire le paquet de la file d'attente d'envoi et le place dans la file d'attente de réception. Du point de vue du noyau, nous avons maintenant reçu un paquet entrant prêt à être consommé par un processus serveur écoutant sur une socket. (Dans le cas du ping, le noyau le traite en interne.) Nous avons maintenant reçu un paquet ICMP "distant" avec une adresse de destination de 10.0.3.2, qui n'est sans doute pas l'une de nos adresses locales, mais il a été livré au bouclage interface néanmoins.
Ensuite, le noyau envoie une réponse au ping :un paquet de réponse ICMP avec les adresses inversées :10.0.3.2 comme adresse source et 10.0.3.1 comme destination. Ceci est transmis via l'interface de bouclage au programme ping, ce qui montre que nous avons reçu une réponse de 10.0.3.2.