関連ページ
tcpdump -i any -n igmp IGMPの確認(参加しているIGMPバージョンやグループがわかります。) またigmp leaveの状況もわかります。
tcpdump -i any -n host 233.x.x.x and port xxxx <- どこから、マルチキャスト受信しているがわかります。 tcpdump -i any -n udp and not port 161 <- UDP 161(SNMP)以外のUDP全て
netstat -g
cat /proc/net/igmp
マルチキャストのアドレスが追加されます。
https://github.com/troglobit/mtools
msend - send UDP messages to a multicast group
mreceive - receive UDP multicast messages and display them
# git clone https://github.com/troglobit/mtools # cd mtools # make # ls LICENSE.md README.md mreceive.8 mreceive.d mreceive.o msend.8 msend.d msend.o Makefile mreceive mreceive.c mreceive.map msend msend.c msend.map ttcp.c
# ./mreceive -h mreceive version 2.3 Usage: mreceive [-g GROUP] [-p PORT] [-i ADDRESS ] ... [-i ADDRESS] [-n] mreceive [-v | -h] -g GROUP IP multicast group address to listen to. Default: 224.1.1.1 -p PORT UDP port number used in the multicast packets. Default: 4444 -i ADDRESS IP addresses of one or more interfaces to listen for the given multicast group. Default: the system default interface. -n Interpret the contents of the message as a number instead of a string of characters. Use this with `msend -n` -v Print version information. -h Print the command usage.
# ./msend -h msend version 2.3 Usage: msend [-g GROUP] [-p PORT] [-join] [-i ADDRESS] [-t TTL] [-P PERIOD] [-text "text"|-n] msend [-v | -h] -g GROUP IP multicast group address to send to. Default: 224.1.1.1 -p PORT UDP port number used in the multicast packets. Default: 4444 -i ADDRESS IP address of the interface to use to send the packets. The default is to use the system default interface. -join Multicast sender will join the multicast group. By default a sender never joins the group. -P PERIOD Interval in milliseconds between packets. Default 1000 msec -t TTL The TTL value (1-255) used in the packets. You must set this higher if you want to route the traffic, otherwise the first router will drop the packets! Default: 1 -text "text" Specify a string to use as payload in the packets, also displayed by the mreceive command. Default: empty -n Encode -text argument as a number instead of a string. -v Print version information. -h Print the command usage.
#!/usr/bin/python3 import socket import time LOCAL_IP = '192.168.0.30' MCAST_GRP = '224.1.1.1' MCAST_PORT = 5007 MULTICAST_TTL = 10 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP, 0) sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, MULTICAST_TTL, socket.inet_aton(LOCAL_IP)) count = 0 while True: message = 'test:{0}'.format(count).encode('utf-8') print(message) sock.sendto(message, (MCAST_GRP, MCAST_PORT)) count +=1 time.sleep(0.5)
#!/usr/bin/python36 import socket import struct MCAST_GRP = '224.1.1.1' MCAST_PORT = 5007 LOCAL_IP = '192.168.0.22' sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind((MCAST_GRP, MCAST_PORT)) sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, socket.inet_aton(MCAST_GRP) + socket.inet_aton(LOCAL_IP)) while True: # For Python 3, change next line to "print(sock.recv(10240))" #Python3 print(sock.recv(10240)) #Python2 #print sock.recv(10240)
一般向けサイト
ITエンジニア向けサイト
英語サイト
Portfolio
Copyright (c) 2024 現場で必要なネットワーク技術入門 All Rights Reserved.