Networking

我如何知道是否啟用了 IP 多播

  • January 15, 2021

我有執行 IP 多播測試的腳本;但是,我的腳本在特定的 linux 機器上失敗了。

我知道我可以CONFIG_IP_MULTICAST在核心配置文件中查看以確定核心是否是用這個編譯的。但是,如果我可以查看/procsysctl獲得答案,那麼在我的腳本中標記缺失的要求會更容易。

有沒有辦法不查看 IP Multicast 是否已編譯到核心中CONFIG_IP_MULTICAST

似乎大多數核心(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 basic mcast group。或者,如果我 ping 組或網路,然後所有已知的啟用多播的主機網路都返回給我,我會說多播正在主機上工作。您可以嘗試netstat -gcat /proc/net/igmp查看它是否返回主機上的任何組嗎?

在你的 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

引用自:https://unix.stackexchange.com/questions/25872