web-dev-qa-db-fra.com

Comment savoir si la multidiffusion IP est activée

J'ai des scripts qui exécutent des tests de multidiffusion IP; cependant, mes scripts échouent sur une machine Linux particulière.

Je sais que je peux regarder CONFIG_IP_MULTICAST dans le fichier de configuration du noyau pour déterminer si le noyau a été compilé avec cela. Cependant, il serait plus facile de signaler les exigences manquantes dans mon script si je pouvais regarder /proc ou sysctl et obtenez la réponse.

Existe-t-il un moyen de savoir si la multidiffusion IP a été compilée dans le noyau sans regarder CONFIG_IP_MULTICAST?

19
Mike Pennington

Il semble que la plupart des noyaux (post v1) prennent en charge la multidiffusion par défaut ou que CONFIG_IP_MULTICAST soit activé lors de la compilation. Pour vérifier si le noyau compilé et en cours d'exécution est abonné à un groupe de multidiffusion, j'utiliserais netstat -g.

Il semble que la plupart des noyaux (post v1) prennent en charge la multidiffusion par défaut.

[root@centos module]# grep CONFIG_IP_MULTICAST /usr/src/kernels/2.6.18-274.7.1.el5-i686/.config 
CONFIG_IP_MULTICAST=y
[root@centos module]# netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      all-systems.mcast.net

Je vois que l'interface eth0 sur mon hôte pense que son groupe mcast de base abonné 224.0.0.251. Alternativement, si je cingle le groupe ou le réseau et que tous les réseaux hôtes activés pour la multidiffusion connus me sont retournés, je dirais que la multidiffusion fonctionne sur l'hôte. Peux-tu essayer netstat -g ou cat /proc/net/igmp et voir s'il renvoie des groupes sur votre hôte?

18
Nikhil Mulley

Sur votre box Linux: ip maddr show donne:

@4Gtest ~]$ ip maddr show
1:      lo
        inet  224.0.0.1
        inet6 ff02::1
2:      p3p1
        link  01:00:5e:00:00:01
        link  33:33:00:00:00:01
        link  33:33:ff:bd:7e:0f
        link  01:00:5e:00:00:fb
        link  01:00:5e:7f:ff:05
        inet  224.127.255.5
        inet  224.0.0.251
        inet  224.0.0.1
        inet6 ff02::1:ffbd:7e0f
        inet6 ff02::1
20
Alan Beard
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F1:FF:EA  
inet addr:78.46.74.27  Bcast:78.46.74.31  Mask:255.255.255.224
inet6 addr: fe80::20c:29ff:fef1:ffea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
RX packets:5339836 errors:0 dropped:0 overruns:0 frame:0
TX packets:5486444 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:820300389 (782.2 MiB)  TX bytes:1929979381 (1.7 GiB)
Base address:0x1400 Memory:e8820000-e8840000

Désactiver la multidiffusion:

ifconfig eth0 -multicast

résultat:

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F1:FF:EA  
inet addr:78.46.74.27  Bcast:78.46.74.31  Mask:255.255.255.224
inet6 addr: fe80::20c:29ff:fef1:ffea/64 Scope:Link
UP BROADCAST MTU:1500  Metric:1
RX packets:5339836 errors:0 dropped:0 overruns:0 frame:0
TX packets:5486444 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:820300389 (782.2 MiB)  TX bytes:1929979381 (1.7 GiB)
Base address:0x1400 Memory:e8820000-e8840000

Pas de multidiffusion présente dans l'interface

Activer la multidiffusion:

ifconfig eth0 multicast
8
bill mate

En utilisant la commande ip, on peut vérifier si une interface est capable de multidiffusion en:

ip link show eth0 | grep MULTICAST

Pour activer ou désactiver la multidiffusion, vous pouvez utiliser:

Sudo ip link set dev eth0 multicast [on|off] 
6
Pierz