【问题标题】:Receive specific multicast message on a client connected over VPN在通过 VPN 连接的客户端上接收特定的多播消息
【发布时间】:2019-04-09 19:31:48
【问题描述】:

案例: [子网 A,192.168.2.0/24,基于 Padavan 固件的互联网 gw]

[ 子网 B ,192.168.1.0/24,基于 Padavan 固件的互联网 gw ]

子网 A (2.155) 的主机通过 VPN(可能的选项:PPTP、OpenVPN、L2TP w/o ipsec)连接到子网 B,并接收地址为 1.245/32

在子网 B 中存在主机 (1.10/32),它将多播数据报发送到 224.0.0.50:9898;在路由器上,我看到它们

tcpdump -i br0 -c 10 dst host 224.0.0.50 and port 9898 and multicast

13:46:54.345369 IP 192.168.1.10.4321 > 224.0.0.50.9898: UDP, length 135

我正在寻找解决方案来接收/转发这些广播消息,以便主机可以看到它们,通过 VPN 连接

在基于 Padavan 固件的路由器 B 上,如果需要,我有,并且仅限于 udpxy、igmproxy 实用程序。

在客户端主机上,我是基于 debian 的,通常不受工具限制。

数据报是专有协议,即不是 iptv 或视频流。

欢迎任何想法。

[UPD] 附加信息 - 根据 cmets 中的讨论

这是一个非常特殊的硬件设备,在以太网方面不是很健谈(比如 5 秒内最多 1-2 个数据报),因此肯定应该是相当可转发的。不幸的是,它纯粹通过广播发送状态更新。在子网 A 中确实存在类似的设备 + 控制软件。因此,我正在寻找一种数据报广播到子网 B 中的 224.0.0.50:9898 以重新出现在子网 A 中的方式。可能需要一些工具的帮助。可能是 smcroute,可能是 udpxy,也可能是 igmproxy

【问题讨论】:

  • 224.0.0.0/24 块中的任何多播地址都是不允许转发的链路本地多播(“它们不得作为实现中的默认值发送”) .该特定的多播地址224.0.0.50 在一个范围内,224.0.0.37-224.0.0.68 已注册给其他人。您应该使用组织本地范围内的地址239.0.0.0/8。您还需要一个支持多播的隧道,例如GRE,并且您需要启用多播路由(与单播路由非常不同)..
  • IPv4 Multicast Address Space Registry:“224.0.0.0和224.0.0.255之间的地址范围(含)是为路由协议和其他协议的使用而保留的低级拓扑发现或维护协议,例如网关发现和组成员报告。组播路由器不应转发目标地址在此范围内的任何组播数据报,无论其 TTL 是多少。"
  • @RonMaupin 我意识到这个限制 - 这就是为什么我正在寻找解决方法或省略限制/重新广播的方法。更强大的玩家(cisco、mikrotik) - 有一些解决方法。有一些实用程序,例如 udpxy - 将多播转换为 http 客户端的流(主要是视频)我也在寻求建议,我该如何实现一种重新广播隧道,并且希望 - 解决方法确实存在。 troglobit.github.io/howto/multicast
  • 您应该使用实际允许使用的正确多播地址,而不是注册给其他人的地址。当您按设计使用组播时,与其他网络标准一样,组播工作得很好。您正在尝试做的类似于尝试在 UTP 上运行以太网超过 100 米;它在某些情况下可能会起作用,但它是非标准的,如果它不起作用,您不应该抱怨,只需使用标准光纤进行 100 米以上的距离即可。标准的存在是有原因的。
  • @RonMaupin 这是一个特定的硬件设备,在以太网方面不是很健谈(说 5 秒内最多 1-2 个数据报),因此肯定应该是相当可转发的。它通过广播发送状态更新。在子网 A 中确实存在类似的设备 + 控制软件。因此,我正在寻找一种数据报广播到子网 B 中的224.0.0.50:9898 以重新出现在子网 A 中的方式。可能需要一些工具的帮助。可能是github.com/troglobit/smcroute,可能是udpxy,也可能是igmproxy。有些工具确实存在^

标签: networking multicast pptp


【解决方案1】:

对于那些来这里的人,有同样的问题。

当您在 tap0 上进行必要的多播时,

你可以从 eth0 和 tap0 创建网桥

对于所有感兴趣的人的笔记,谁会来这里。

ip link add br0 type bridge
ip link set tap0 master br0
ip link set eth0 master br0

POC - 单个接口上的多播

sudo tcpdump -i br0 dst host 224.0.0.50 and port 9898
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:09:51.823632 IP 192.168.1.10.4321 > 224.0.0.50.9898: UDP, length 135
21:09:55.045138 IP 192.168.2.214.4321 > 224.0.0.50.9898: UDP, length 136

【讨论】:

    【解决方案2】:

    由于我不想让已解决的问题悬而未决,因此这是目前有效的解决方案

    在子网 B 中,我安装了 openVPN 服务器端点,配置为 L2。

    在子网A中,我在控制主机上安装了openvpn客户端,它连接到子网B,分配的接口是tapz

    20: tapz: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
        link/ether 0a:da:be:96:78:d9 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.245/24 brd 192.168.1.255 scope global noprefixroute tapz
           valid_lft forever preferred_lft forever
        inet6 fe80::8da:beff:fe96:78d9/64 scope link 
           valid_lft forever preferred_lft forever
    

    所以现在我有一个控制主机:

    从物理以太网 enp5s0 上的本地设备广播

    sudo tcpdump -i enp5s0 -c 10 dst host 224.0.0.50 and port 9898 and multicast
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on enp5s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:55:05.642963 IP lumi-gateway-v3_miio56591509.4321 > 224.0.0.50.9898: UDP, 
    length 136
    

    现在我还在 tapz 上接收来自远程网络设备的广播

    sudo tcpdump -i tapz -c 10 dst host 224.0.0.50 and port 9898 and multicast
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on tapz, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:53:49.141751 IP 192.168.1.10.4321 > 224.0.0.50.9898: UDP, length 135
    

    到目前为止,我正在寻找我在 VPN 客户端上获得必要的数据报。远程端的 OpenVPN 还可以优化多播转发信息的过滤器。

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 2021-01-15
      • 2020-07-10
      • 2017-02-13
      • 2018-06-26
      相关资源
      最近更新 更多