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 add
và được thực hiện với nó". Vấn đề ip maddress
chỉ ả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 autojoin
cờ 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 tcpdump
hoặc tshark
bạ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ư socat
cũ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 socat
hoặ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 trap
BASH 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
/ tshark
lệ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 socat
lệnh ở trên để tham gia và lặp lại nội dung STDOUT
bằng cách thay thế /dev/null
bằ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+D
khi bạn hoàn tất để gửi EOF
tin 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.
-p
lá 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.