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
) ?