两台ubuntu机器之间的多播问题

两台ubuntu机器之间的多播问题

我有两台 ubuntu 16.04 机器(机器 A 和 B),它们通过网线连接。机器 A 正在创建多播。多播无法到达机器 B。有谁知道这可能是什么原因?

以下提供了一些法医信息:

两台机器都没有活动防火墙,例如机器 A 显示:

root@linux:~# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

机器 A 和 B 的连接接口配置为传输组播,例如机器 A 显示:

enp0s31f6 Link encap:Ethernet  HWaddr 90:1b:0e:c4:af:e1  
          inet addr:192.168.10.3  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::921b:eff:fec4:afe1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9221 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25793 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:890075 (890.0 KB)  TX bytes:8214828 (8.2 MB)
          Interrupt:16 Memory:f7100000-f7120000 

enp1s0    Link encap:Ethernet  HWaddr 90:1b:0e:ae:a2:fa  
          inet addr:169.254.1.2  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Memory:f7000000-f707ffff 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING MULTICAST  MTU:65536  Metric:1
          RX packets:106353 errors:0 dropped:0 overruns:0 frame:0
          TX packets:106353 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:20525233 (20.5 MB)  TX bytes:20525233 (20.5 MB)

界面enp0s31f6已连接(正在运行)。 A的路由表显示:

root@linux:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.1    0.0.0.0         UG    100    0        0 enp0s31f6
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 enp1s0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 enp0s31f6

机器 A 上的 tcpdump 显示传出多播流量:

15:47:37.420032 IP 192.168.10.3.2222 > 239.0.0.222.2222: UDP, length 327
15:48:37.415102 IP 192.168.10.3.2222 > 239.0.0.222.2222: UDP, length 327
15:49:37.417969 IP 192.168.10.3.2222 > 239.0.0.222.2222: UDP, length 327

机器B 上的wireshark 不显示多播流量。

问候,

吉多

我做了进一步的调查。我在 ubuntu 机器 A 和 B 之间安装了一个交换机,另外我还将一台 Mac 笔记本电脑连接到该交换机。 mac从机器B的DHCP服务器获得了IP,所以我能够连接到互联网,因为B也连接到互联网并扮演网关的角色。

当我在Mac上启动wireshark后,我可以看到多播数据包,而在B上则无法检测到任何数据包。另外,我在 A 上启动了 iperf,我可以在 mac 上看到所有这些生成的数据包,但在 B 上看不到。

iperf -c 239.0.0.222 -p 2222 -u -T 32 -t 3 -i 1

机器 A(正在创建多播包)

root@linux:~# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
root@linux:~# uname -a
Linux linux 4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

机器B

root@testserver:~# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
root@testserver:~# uname -a
Linux testserver 4.10.0-37-generic #41~16.04.1-Ubuntu SMP Fri Oct 6 22:42:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

机器 B 也没有激活防火墙:

root@testserver:~# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

机器 B 有以下网络接口

eno1      Link encap:Ethernet  Hardware Adresse 74:d4:35:3d:13:14  
          inet Adresse:192.168.199.202  Bcast:192.168.199.255  Maske:255.255.255.0
          inet6-Adresse: fe80::e45b:3ea5:a1ca:2cf7/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:2541323 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:1958194 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:2907121035 (2.9 GB)  TX-Bytes:1743378563 (1.7 GB)
          Interrupt:20 Speicher:f0c00000-f0c20000 

enp12s0   Link encap:Ethernet  Hardware Adresse 00:13:3b:0f:71:2c  
          inet6-Adresse: fe80::213:3bff:fe0f:712c/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:22 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:0 (0.0 B)  TX-Bytes:2721 (2.7 KB)

enp14s0   Link encap:Ethernet  Hardware Adresse 00:13:3b:0f:71:2d  
          inet Adresse:192.168.30.1  Bcast:192.168.30.255  Maske:255.255.255.0
          inet6-Adresse: fe80::213:3bff:fe0f:712d/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:24903 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:28057 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:2617514 (2.6 MB)  TX-Bytes:3973717 (3.9 MB)

enp17s0   Link encap:Ethernet  Hardware Adresse 00:13:3b:0f:6d:19  
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:0 (0.0 B)  TX-Bytes:0 (0.0 B)

enp19s0   Link encap:Ethernet  Hardware Adresse 00:13:3b:0f:6d:1a  
          inet Adresse:192.168.40.1  Bcast:192.168.40.255  Maske:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:0 (0.0 B)  TX-Bytes:0 (0.0 B)

enp3s0    Link encap:Ethernet  Hardware Adresse 00:0a:cd:2f:f0:cc  
          inet6-Adresse: fe80::20a:cdff:fe2f:f0cc/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:1308 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:0 (0.0 B)  TX-Bytes:120880 (120.8 KB)

enp4s0    Link encap:Ethernet  Hardware Adresse 00:0a:cd:2f:f0:cd  
          inet Adresse:192.168.20.1  Bcast:192.168.20.255  Maske:255.255.255.0
          inet6-Adresse: fe80::20a:cdff:fe2f:f0cd/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:59234 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:69110 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:6492424 (6.4 MB)  TX-Bytes:9395771 (9.3 MB)

enp5s0    Link encap:Ethernet  Hardware Adresse 00:0a:cd:2f:f0:ce  
          inet6-Adresse: fe80::20a:cdff:fe2f:f0ce/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:31 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:0 (0.0 B)  TX-Bytes:3536 (3.5 KB)

enp6s0    Link encap:Ethernet  Hardware Adresse 00:0a:cd:2f:f0:cf  
          inet Adresse:192.168.10.1  Bcast:192.168.10.255  Maske:255.255.255.0
          inet6-Adresse: fe80::20a:cdff:fe2f:f0cf/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:822669 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:1701383 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:272743664 (272.7 MB)  TX-Bytes:2164337194 (2.1 GB)

lo        Link encap:Lokale Schleife  
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:65536  Metrik:1
          RX-Pakete:7895 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:7895 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:1222431 (1.2 MB)  TX-Bytes:1222431 (1.2 MB)

机器B通过接口连接恩普6s0并提供互联网连接接口eno1

网络接口 enp3s0 enp4s0 enp5s0 和 enp6s0 位于 4 端口网卡上。

该卡包含 RTL 8168 网卡

答案1

我“解决”了这个问题。问题是,如果 Wireshark 实例同时观察到多个接口,则 Wireshark 显然无法在 Linux 计算机上显示多播数据包。当我使用 Wireshark 只嗅探一个接口时,我就可以看到多播数据包。也许这是RTL 8169网卡linux驱动程序的限制。

但我尝试扫描多播数据包,因为我面临以下问题:如果多播数据包进入接口 X,我无法在传出接口 Y 上看到它。我将使用新线程请求答案。

问候,

吉多

答案2

让我们显示两个服务器节点的配置。

参考RFC5771

您配置的组播 IP 地址不能为 192.168.10.3/24。

通常,它们必须在范围内224.0.0.0/4(从 224.0.0.0 到 239.255.255.255)

看起来像:224.168.10.3

相关内容