TL; DR - Chọn một:
sudo ip addr add 233.54.12.234/32 dev eth1 autojoin
socat STDIO UDP4-RECV:22001,ip-add-membership=233.54.12.234:eth1 > /dev/null
Lúc đầu tôi sẽ nói "chỉ cần sử dụng ip maddress addvà được thực hiện với nó". Vấn đề ip maddresschỉ ảnh hưởng đến địa chỉ multicast lớp liên kết chứ không phải địa chỉ multicast giao thức ( man 8 ip-maddress).
Điều đó đang được nói bằng cách sử dụng autojoincờ với động từ địa chỉ thực hiện thủ thuật độc đáo.
Điều này đặt ra một số câu hỏi tiếp theo mặc dù. Tôi giả sử vì bạn sẽ chạy tcpdumphoặc tsharkbạn có quyền root. Trong trường hợp bạn không 22001 là một cổng được đánh số cao và các tiện ích khác như socatcũng sẽ hoàn thành công việc.
Đừng hiểu ý tôi. Chỉ cần kiểm tra điều này, chúng ta có thể tạo các gói UDP đa hướng bằng socathoặc ncat(thường được đóng gói qua nmap/ nmap-ncat).
Trên một số số máy chủ chạy một trong hai kết hợp sau:
Lựa chọn 1:
sudo ip addr add 233.54.12.234/32 dev eth1 autojoin
Lựa chọn 2:
socat -u UDP4-RECV:22001,ip-add-membership=233.54.12.234:eth1 /dev/null &
Tùy chọn đầu tiên sẽ yêu cầu root hoặc ít nhất là khả năng CAP_NET_ADMIN . Tùy chọn thứ hai không yêu cầu root, nhưng cũng hy vọng chạy ở nền trước và do đó có thể ít có lợi cho kịch bản hơn (mặc dù theo dõi ID tiến trình con và làm sạch nó bằng trapBASH có thể chỉ là những gì bạn đang tìm kiếm.
Khi đã xong (nhưng trước khi chúng tôi tiến hành kiểm tra các lệnh tcpdump/ tsharklệnh của chúng tôi ), hãy đảm bảo rằng kernel nhận ra giao diện đã tham gia nhóm IGMP chính xác. Nếu bạn cảm thấy siêu lạ mắt, bạn có thể phân tích cú pháp hex /proc/net/igmp, nhưng tôi khuyên bạn chỉ nên chạy netstat -gn.
Khi bạn đã xác minh rằng bạn thấy giao diện được đăng ký vào nhóm chính xác, hãy kích hoạt lệnh tcpdump của bạn:
tcpdump -nnXs 0 -i eth1 udp port 22001 and dst 233.54.12.234
Ngoài ra, nếu bạn không muốn hoàn toàn đi theo lộ trình tcpdump (hoặc vấp phải câu trả lời này và chỉ tò mò muốn xem multicast trong hành động), bạn có thể sử dụng socatlệnh ở trên để tham gia và lặp lại nội dung STDOUTbằng cách thay thế /dev/nullbằng STDOUT:
socat -u UDP4-RECV:22001,ip-add-membership=233.54.12.234:eth1
Sau đó, từ một máy khác sử dụng một trong hai tùy chọn sau để gửi một số dữ liệu thử nghiệm đơn giản:
Lựa chọn 1:
socat STDIO UDP-DATAGRAM:233.54.12.234:22001
Lựa chọn 2:
ncat -u 233.54.12.234 22001
Khi bạn chạy một trong hai lệnh đó, nó sẽ tương tác chờ đầu vào. Chỉ cần nhập một số thứ vào, nhấn enter để gửi, sau đó CTRL+Dkhi bạn hoàn tất để gửi EOFtin nhắn.
Tại thời điểm này, bạn sẽ thấy một thử nghiệm kết thúc để kết thúc và với một vài lệnh được xây dựng hệ thống trò chuyện tồi tệ nhất, không an toàn nhất trên thế giới.
-plá cờ, trong các phiên bản tiêu chuẩn của tcpdump, biến chế độ promiscuous tắt , vì nó là vào theo mặc định. Trong chế độ lăng nhăng, nó sẽ thấy tất cả lưu lượng truy cập, bao gồm cả lưu lượng phát đa hướng, bất kể bạn đã đăng ký chưa - trừ khi bạn đang sử dụng mạng chuyển mạch và cần phải đăng ký để chuyển đổi lưu lượng cho bạn.