在通过 VPN 连接的客户端上接收特定的多播消息

Receive specific multicast message on a client connected over VPN

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

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

来自子网 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

我正在寻找 receive/forward 那些广播消息的解决方案,这样它们就可以被通过 VPN 连接的主机看到

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

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

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

欢迎任何想法。

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

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

由于我不喜欢留下未解决的问题,这里是目前有效的解决方案

在子网 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 也可以针对多播转发信息的过滤器进行优化。

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

当您在 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