Bagaimana saya bisa tahu jika IP Multicast diaktifkan

19

Saya memiliki skrip yang menjalankan tes IP multicast; namun, skrip saya gagal pada mesin linux tertentu.

Saya tahu bahwa saya dapat melihat CONFIG_IP_MULTICASTfile konfigurasi kernel untuk menentukan apakah kernel telah dikompilasi dengan ini. Namun, akan lebih mudah untuk menandai persyaratan yang tidak ada dalam skrip saya jika saya dapat melihat /procatau sysctldan mendapatkan jawabannya.

Apakah ada cara untuk mengetahui apakah IP Multicast dikompilasi ke dalam kernel tanpa melihatnya CONFIG_IP_MULTICAST?

Mike Pennington
sumber

Jawaban:

18

Tampaknya kebanyakan kernel (post v1) mendukung multicast secara default atau mengaktifkan CONFIG_IP_MULTICAST saat mengkompilasi. Untuk memeriksa apakah kernel yang dikompilasi dan dijalankan berlangganan ke grup multicast, saya akan menggunakan netstat -g.

Tampaknya kebanyakan kernel (post v1) mendukung multicast secara default.

[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

Saya melihat bahwa antarmuka eth0 pada host saya berpikir 224.0.0.251 berlangganan grup dasar. Selain itu, jika saya ping grup atau jaringan dan semua jaringan host yang diaktifkan multicast yang dikenal dikembalikan kepada saya, saya akan mengatakan multicast bekerja pada host. Bisakah Anda mencoba netstat -gatau cat /proc/net/igmpdan melihat apakah ia mengembalikan grup di host Anda?

Nikhil Mulley
sumber
1
Tetapi bagaimana Anda menentukan, jika router kotak itu terhubung untuk mendukung multicast?
Nils
1
Multicasting - pengirim mengirim datagram tunggal dari alamat unicast ke alamat grup multicast dan router perantara mengurus pembuatan salinan dan mengirimkannya ke semua penerima yang telah bergabung dengan grup multicast yang sesuai.
Nikhil Mulley
3
Jika Ya, router perlu mendukung multicasting. Namun, untuk pengirim / penerima ini berfungsi pada IGMP dan untuk router, Protocol Independent Multicast (PIM). Router yang mendukung PIM, biasanya diaktifkan, dan grup multicast - 224.0.0.0/4. Coba pasang pc lain yang mendengarkan dalam grup di ujung lain & kirim data ke grup multicast & periksa apakah penerima di akhir menerima data. Nyaman, jaringan router mendukung multicasting. Beberapa alat online: imj.ucsb.edu/mcast_detective (windows)
Nikhil Mulley
20

Di kotak linux Anda: ip maddr show berikan:

@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
Alan Beard
sumber
1
Bagaimana cara menambahkan grup muticast ke antarmuka?
AR
8
# 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

Nonaktifkan Multicast:

ifconfig eth0 -multicast

hasil:

# 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

Tidak ada Multicast di antarmuka

Aktifkan Multicast:

ifconfig eth0 multicast
pasangan tagihan
sumber
8
Harus disebutkan bahwa ifconfigsekarang sudah ketinggalan zaman di linux ... kita harus menggunakan iproute2utilitas.
Mike Pennington
7
Sudah 2 tahun dan kami masih menggunakanifconfig
Askar
1
@oscar tetapi itu tidak berarti bahwa itu baik untuk dilakukan karena ipdan utilitas lain dari iproute2 mencerminkan perubahan terbaru dalam kode jaringan kernel Linux (tidak seperti ifconfig).
pevik
6

Dengan menggunakan ipperintah, seseorang dapat memeriksa apakah suatu antarmuka memiliki kemampuan multicast dengan:

ip link show eth0 | grep MULTICAST

Untuk mengaktifkan atau menonaktifkan multicast, Anda dapat menggunakan:

sudo ip link set dev eth0 multicast [on|off] 
Pierz
sumber