标签: multicast

如何知道是否启用了 IP 多播

我有运行 IP 多播测试的脚本;但是,我的脚本在特定的 linux 机器上失败了。

我知道我可以查看CONFIG_IP_MULTICAST内核配置文件来确定内核是否是用这个编译的。但是,如果我可以查看/procsysctl得到答案,在我的脚本中标记缺失的需求会更容易。

有没有办法不用查看就知道 IP 多播是否被编译到内核中CONFIG_IP_MULTICAST

networking scripting ip multicast

21
推荐指数
4
解决办法
20万
查看次数

为 tcpdump 捕获创建多播加入

我想编写一个 linux shell 脚本来捕获特定的多播流量。具体来说,我想创建一个 pcap 文件,其中包含一个特定多播组/端口的所有流量。

这是我用来查看流量的命令行:

tcpdump -nnXs 0 -i eth1 udp port 22001 and dst 233.54.12.234
Run Code Online (Sandbox Code Playgroud)

只要我已经建立了对该组的多播订阅,这就可以正常工作。例如,如果我在另一个控制台中运行它:

mdump 233.54.12.234 22001 10.13.252.51
Run Code Online (Sandbox Code Playgroud)

tcpdump会看到数据包。如果mdump没有运行,tcpdump则什么也看不到。

在开始捕获之前,是否有标准的 linux-y 方法来建立这些多播连接?我可以mdump用来建立这些连接,但这似乎很浪费,因为mdump将处理组上的所有数据,但我只是打算将其丢弃。

请注意,由于我的特定环境,我不鼓励将界面置于混杂模式。事实上,它可能被禁止。

linux shell-script multicast tcpdump

13
推荐指数
1
解决办法
3万
查看次数

组播 UDP 不起作用

树莓派上的组播 UDP

我还没有把事情缩小到足够的范围来知道我的问题是因为 debian、raspbian,还是因为我完全遗漏了某些东西。

我有一个 python 应用程序,它使用多播 UDP 让网络上的其他设备知道我的应用程序已启动并在特定 IP 地址上可用。

UDP 多播组是 239.255.250.250,端口是 9131。如果我运行 tcpdump,我可以看到我尝试发送的数据包实际上正在发送数据,但我从未在网络上的其他机器上看到任何通过。

还有其他设备使用具有相同多播组和端口的相同类型的“信标”,我可以看到这些数据包通过其他机器。路由器没有防火墙,在这一点上我真的没有选择。

以下是我知道如何运行的基本诊断。糟糕的 udp chksum 看起来可能没有帮助,但我对此一无所知。

ifconfig 的输出

eth0      Link encap:Ethernet  HWaddr b8:27:eb:b2:79:12  
          inet addr:192.168.2.7  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1682 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1686 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:119105 (116.3 KiB)  TX bytes:169570 (165.5 KiB)
Run Code Online (Sandbox Code Playgroud)

应用程序运行时 tcpdump 的输出

    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
03:29:15.722653 IP (tos 0x0, ttl 1, …
Run Code Online (Sandbox Code Playgroud)

networking python multicast udp

12
推荐指数
1
解决办法
6万
查看次数

如何一次在多台 PC 上安装 Linux?

我需要在 30 台 PC 上安装 Linux 操作系统。有没有办法从一个带有多播的 ISO 映像或 Microsoft 中的 WDS 之类的东西进行安装?

我有一个速度为 100Mb 的以太网连接,因此使用单播安装 30 台 PC 可能会非常慢。

linux multicast system-installation

9
推荐指数
2
解决办法
2501
查看次数

使用 socat 转储多播 UDP 流

我正在设置视频流。

在本地网络中,有两个设备通过 UDP 多播流式传输视频。一台是使用 Linux 的普通计算机(流式传输到 239.220.221.10,端口 9200),第二台是特殊的 DVB-S 流式传输器(流式传输到 239.220.220.32,端口 9200)。网络中有多个 IPTV 机顶盒,它们能够播放来自任一来源的流。还有一些用于组播过滤的 Cisco 交换机,但我无法检查它们的配置。

在不同的计算机(运行 Ubuntu 12.04)上,我想捕获流,最好使用 VLC 或 FFMPEG。从计算机流媒体(239.220.221.10)它可以工作,但从特殊流媒体(239.220.220.32)我没有流。

我试过的

我试图缩小问题的范围,并尝试使用 socat 和 tcpdump 捕获原始 UDP 数据报。如果我运行以下命令,我会在 video.dump 文件中获得有效的视频:

> socat UDP4-RECVFROM:9200,ip-add-membership=239.220.221.10:0.0.0.0 - > video.dump
Run Code Online (Sandbox Code Playgroud)

当我同时运行 tcpdump 时,我看到传入的数据报:

> sudo tcpdump -i eth1 
18:00:39.059824 IP 10.1.2.202.41852 > 239.220.221.10.9200: UDP, length 1316
18:00:39.060789 IP 10.1.2.202.41852 > 239.220.221.10.9200: UDP, length 1316
...
Run Code Online (Sandbox Code Playgroud)

当我尝试为特殊流媒体运行相同的命令时(只需将 socat 的 IP 成员地址更改为 239.220.220.32),tcpdump 显示来自 239.220.220.32 的传入数据报,但 video.dump 文件为空。

socat没有看到明显即将到来的数据报的原因是什么?

2014 年 3 月 …

multicast tcpdump udp

7
推荐指数
1
解决办法
2万
查看次数

Linux 中的多播

我想在linux中为视频/音频/数据文件传输做多播。

是否有任何实用程序/工具可以这样做?

linux networking multicast

6
推荐指数
1
解决办法
1052
查看次数

net.ipv4.conf.all.mc_forwarding:为什么我的访问被拒绝?

在 Debian 12.04 LTS 上

我正在尝试net.ipv4.conf.all.mc_forwarding通过执行以下操作来访问密钥:

须藤 sysctl -w net.ipv4.conf.all.mc_forwarding=1

但每次我这样做时,我都会收到消息

错误:对密钥“net.ipv4.conf.all.mc_forwarding”的权限被拒绝

为什么我会收到这条消息?如何更改此密钥?

encryption key-authentication multicast linux-kernel

6
推荐指数
1
解决办法
2万
查看次数

firewalld 从临时端口接受对多播 DNS 查询的响应

我正在尝试配置 firewalld(Fedora 21),以便响应从使用临时 UDP 源端口的客户端应用程序发送到多播目标的 MDNS 查询。响应是单播的。序列是这样的(使用wireshark捕获)

  1. UDP:本地地址:45325(临时)-> 224.0.0.251:5353;查询
  2. UDP: some-system:5353 -> 本地地址:45325; 响应
  3. ICMP: local-address -> some-system: Type: 3 (Destination unreachable), Code: 10 (Host管理禁止)

启用了添加端口 5353 UDP 的 firewalld mdns 服务,但这对响应没有帮助。

任何指针将不胜感激。

multicast firewalld

6
推荐指数
2
解决办法
6034
查看次数

Avahi 似乎在一段时间后停止发布/刷新服务

首先,我查阅了几个Q/A,我可以确保以下几点得到满足:

  • IGMP 侦听不会被交换机/路由器过滤。

  • Bonjour 服务 ( mDNSResponder.exe) 在防火墙以及UDP 端口 5353(Windows 端)上被授予并允许。

  • Avahi 配置正确(并且禁用了 ipv6)并且nssitch.conf已完成所需的修改

    hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

  • Avahi-daemon 以及 bonjour 服务正在运行。

  • Windows 端ipv6在活动网络接口上被禁用,avahi-daemon 也配置为不使用 ipv6: use-ipv6=no

Pi 的 mDNS 问题

一段时间后,从 Windows.local发出 a 后,与树莓派对应的主机名不再解析ping pi.local,请注意,启动时它响应完美,并且重新启动 avahi-daemon 将在问题再次出现之前临时修复它。

就在mdns解析失败之后,我在锉刀上执行了以下命令,avahi-resolve -n pi.local它显示了ipv6(fe80::xxaa:yybb:zzde:ee),这很奇怪,因为正如我提到的,我在avahi配置中禁用了ipv6,就在我重新执行相同的命令之后,这次我得到了ipv4作为答案

pi.local 192.168.1.7

ping 似乎也再次响应。

聚苯乙烯

  • 运行 Linux pi 4.4.38-v7+ #938

  • 使用适用于 Windows v2.0.2 的 Bonjour 打印服务:https://support.apple.com/kb/DL999,并且它作为服务运行。

  • avahi-resolve …

networking avahi multicast mdns

6
推荐指数
1
解决办法
1131
查看次数

多播 ICMPv6 返回 conntrack 状态无效

我在玩 IPv6 的多播功能。

$ ping ff02::2%wlp3s0
Run Code Online (Sandbox Code Playgroud)

这通常会导致来自本地网段(维基百科 - IPv6)上的所有路由器的回声回复。所以就我而言,我的家用路由器。

但是,我发现我原来的 nftables 规则阻止了回声回复:

防止回声回复的原始 nftables 规则

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        iifname "lo" accept
        ct state { established, related } accept
        ct state invalid drop
        ip protocol icmp accept
        ip6 nexthdr ipv6-icmp accept        
    }

    chain forward {
        type filter hook forward priority 0; policy drop;
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
} …
Run Code Online (Sandbox Code Playgroud)

ipv6 multicast netfilter ip-conntrack nftables

6
推荐指数
0
解决办法
343
查看次数