• [^] # Re: Avis personnel

    Posté par . En réponse au journal 127.0.0.0/8, bientôt sur vos traceroute. Évalué à 4.

    Oui mais justement, le 127.0.0.0/8 n'est pas censé sortir de la machine (qu'elle soit virtuelle ou pas).

    Cette phrase n'a aucun sens. Oui, 127/8 n'est pas censé sortir d'une machine. Mais dire que ça ne doit pas sortir d'une machine virtuelle n'a aucun sens. Une machine virtuelle n'est qu'un détail d'implémentation d'un hôte, ce n'est pas une "machine" à proprement parler, et L'IETF n'a jamais rien normalisé sur les machines virtuelles, parce que ce n'est pas du réseau.

    D'ailleurs, le terme "machine virtuelle" est bien vague. On parle de quoi exactement ? d'émulation de matériel ? de virtualisation ? de para-virtualisation ? d'OS contenus ? de namespaces ?

    Dans certains cas, il y a effectivement une machine virtuelle, dans un autre cas, ce n'est juste qu'un programme. Quelque soit la techno utilisé, le fait que l'invité communique avec l'hôte à travers un pseudo-réseau, une pseudo-carte graphique ou une API interne reste qu'un détail d'implémentation. L'IETF ne va voir qu'une application qui tourne sur un hôte. Et tant que l'hôte (la vraie machine) n'envoie pas de la merde en 127/8 au autres, elle n'a pas son mot à dire.

    Le fait que dans bien des cas on utilise un réseau pour faire quelque chose qui n'est pas du réseau ne reste qu'un détail d'implémentation tant que ça reste à l'intérieur de l'application. Et si cette application peut communiquer avec une autre application, elle choisi le protocole qu'elle veut. Tant qu'elle ne dit pas que "le protocole entre les deux applications est un réseau IP IETF valide" et qu'elle ne sort pas sur un réseau IETF, elle peut utiliser du pseudo-IP en 127/8 si ça lui chante. Moi je préfère quand ça n'utilise pas un pseudo-réseau si ça n'est pas un réseau. Mais on le fait souvent par facilité.

    Par contre, si tu veux effectivement relier tes "machines virtuelles" au réseau, alors c'est très différent : tu est en train de transformer ton hôte en routeur (ou switch, comme tu veux), qui route entre un vrai réseau et quelquechose qui n'est pas un réseau ("réseau virtuel" si tu veux, mais ça reste que ce n'est pas un réseau), mais que tu veux faire passer pour un réseau. Là, l'IETF à son mot à dire (et il l'a déjà fait, il me semble) et tu à du 127/8 qui sort de tes "nœuds virtuels", alors tu viole effectivement la norme et donc tu fait chier.

    Après, choisir de relier tes fausses machines en réseau ou pas, ça reste ton choix. Et tu sera peut-être obligé de relier tes fausses machines en réseau si tu fait tourner des OS non-coopératifs avec l'hôte qui croiront vraiment qu'ils ont une vraie interface réseau. Mais faire tourner des OS qui ne coopèrent pas avec l'hôte, c'est plutôt rare.

    Mais de toute façon, un bon noyau généraliste comme Linux doit pouvoir gérer les deux cas. Et il le fait. Et si tu t'amuse à mal paramétrer ton noyau généraliste et qu'il envoie de la merde sur ton réseau, c'est ton problème. Si tu n'a pas envie que ça arrive, ne prend pas un noyau généraliste.