web-dev-qa-db-ja.com

IPマルチキャストが有効かどうかはどうすればわかりますか

IPマルチキャストテストを実行するスクリプトがあります。ただし、特定のLinuxマシンでスクリプトが失敗します。

カーネル構成ファイルのCONFIG_IP_MULTICASTを調べて、カーネルがこれでコンパイルされているかどうかを確認できることを知っています。ただし、/procまたはsysctlを調べて回答を得ることができれば、スクリプトで不足している要件にフラグを付ける方が簡単です。

CONFIG_IP_MULTICASTを確認せずにIPマルチキャストがカーネルにコンパイルされたかどうかを確認する方法はありますか?

19
Mike Pennington

ほとんどのカーネル(v1以降)はデフォルトでマルチキャストをサポートしているか、コンパイル中にCONFIG_IP_MULTICASTが有効になっているようです。コンパイルして実行中のカーネルがマルチキャストグループにサブスクライブしているかどうかを確認するには、netstat -gを使用します。

ほとんどのカーネル(v1以降)はデフォルトでマルチキャストをサポートしているようです。

[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

私のホストのeth0インターフェイスが、購読している224.0.0.251基本mcastグループを認識していることがわかります。また、グループまたはネットワークにpingを実行した後、既知のマルチキャストが有効なすべてのホストネットワークが返された場合は、ホストでマルチキャストが機能していると言えます。 netstat -gまたはcat /proc/net/igmpを試して、ホスト上のグループが返されるかどうかを確認できますか?

18
Nikhil Mulley

Linuxボックス:ip maddr showは以下を与えます:

@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

マルチキャストを無効にする:

ifconfig eth0 -multicast

結果:

# 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

インターフェイスにマルチキャストがありません

マルチキャストを有効にする:

ifconfig eth0 multicast
8
bill mate

ipコマンドを使用すると、インターフェイスがマルチキャスト対応かどうかを次の方法で確認できます。

ip link show eth0 | grep MULTICAST

マルチキャストを有効または無効にするには、以下を使用できます。

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