我有两台 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