3 votes

Diffusion sur 0.0.0.0

J'ai un service qui dit qu'il "diffuse sur". 0.0.0.0 " en utilisant l'interface eth0 con sendto() .

Cependant, en vérifiant le trafic avec tcpdump il semble qu'il diffuse sur le lo l'interface, et non sur le réseau. Par exemple, je vois des messages comme celui-ci sur l'interface lo et rien sur l'interface eth0 interface :

22:38:17.814047 IP localhost.14557 > localhost.14540 : UDP, longueur 36

Sur la même machine que celle qui exécute le service, je peux voir le trafic avec netcat en cours d'exécution :

$ netcat -l -u -p 14540

Mais je ne vois pas ce trafic depuis une autre machine (en fait, j'utilise des conteneurs Docker).

Pour vérifier que la diffusion fonctionne entre les conteneurs, j'exécute :

$ netcat -l -u -p 54321

sur le premier conteneur, et :

$ echo "foobar" | netcat -ub 255.255.255.255 54321

J'obtiens l'apparition de "foobar" sur le terminal du premier conteneur. D'après ce que je comprends, cela signifie que je diffuse "foobar" par le biais de l'Internet. réseau zéro ( 0.0.0.0 (le même que celui revendiqué par mon service ci-dessus).

Pourquoi ma diffusion "foobar" va-t-elle sur le réseau (interface eth0) et les messages de diffusion de service restent locaux (interface lo ) ?

1voto

Dan Points 1280

Conformément à RFC 1122, section 3.2.1.3 (a) :

{ 0, 0 }

Cet hôte sur ce réseau. NE DOIT PAS être envoyé, sauf en tant que une adresse source dans le cadre d'une procédure d'initialisation par laquelle l'hôte apprend sa propre adresse IP.

On NE DOIT PAS diffuser vers 0.0.0.0.

Je suppose donc qu'il s'agit d'un comportement non défini, et qu'il devrait être corrigé dans le service. Le fait qu'il diffuse sur lo est spécifique à cette installation, mais ne doit pas être généralisée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X