如何查看来自同一主机的多播流量?

如何查看来自同一主机的多播流量?

在 Fedora 30 上,我尝试在同一主机上的另一个进程中查看多播数据包。使用 netstat、iperf 和 tcpdump,我已验证该组已加入并且数据包已发送到多播地址,但服务器模式的 iperf 从未收到任何内容。

当我在另一个网络(我没有设置)上的另一台机器(CentOS 7)上尝试此操作时,我看到数据包离开,但没有看到数据包返回,但服务器 iperf 确实打印出收到的数据包。我猜这是内核的问题,但我该如何启用它?

以下是一些终端会话:

 jnordwick@jnkde ~ iperf -s -u -B 226.94.1.1 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 226.94.1.1
Joining multicast group  226.94.1.1
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------

另一个终端

 jnordwick@jnkde ~ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eno1            1      226.94.1.1

现在正在发送数据包

 jnordwick@jnkde ~ iperf -c 226.94.1.1 -u -T 32 -t 3 -i 1
------------------------------------------------------------
Client connecting to 226.94.1.1, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
Setting multicast TTL to 32
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 192.168.2.155 port 47755 connected with 226.94.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec   131 KBytes  1.07 Mbits/sec
[  3]  1.0- 2.0 sec   128 KBytes  1.05 Mbits/sec
[  3]  0.0- 3.0 sec   385 KBytes  1.05 Mbits/sec
[  3] Sent 268 datagrams

服务器端性能中没有出现任何内容,但如果我在另一个网络上运行完全相同的命令,我可以看到:

[jnordwick@network2 ~]$ iperf -s -u -B 226.94.1.1 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 226.94.1.1
Joining multicast group  226.94.1.1
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 226.94.1.1 port 5001 connected with 204.2.57.7 port 58971
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0- 1.0 sec   129 KBytes  1.06 Mbits/sec   0.000 ms    0/   90 (0%)
[  3]  1.0- 2.0 sec   128 KBytes  1.05 Mbits/sec   0.001 ms    0/   89 (0%)
[  3]  2.0- 3.0 sec   128 KBytes  1.05 Mbits/sec   0.001 ms    0/   89 (0%)
[  3]  0.0- 3.0 sec   385 KBytes  1.05 Mbits/sec   0.001 ms    0/  268 (0%)

tcpdump 确认 igmp 加入并且数据包已发送。我转储了所有可能的接口(包括绑定接口及其从属接口),我可以看到多播数据包从哪个接口发出,但没有任何数据包返回。我认为这是内核问题,因为我认为交换机通常不会将多播/广播流量发送回发送主机。

答案1

这似乎是一个防火墙问题,我尝试过的任何 ipchains 都没有用,但这个有用。

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 \
             -m pkttype --pkt-type multicast -j ACCEPT

另外,关闭防火墙也有效:

systemctl stop firewalld

取自:https://www.centos.org/forums/viewtopic.php?t=60395

相关内容