通过隧道另一端的服务器加入 UDP 多播

通过隧道另一端的服务器加入 UDP 多播

我在下面绘制了一张图表来帮助解决这个问题!

因此,一家公司发布了多播 UDP 源(公司 A),另一家公司连接到它(公司 B)。我有一个到公司 B 的点对点隧道。

我怎样才能让我们的机器加入 A 公司通过 B 公司机器发布的多播组?

如果我们这样做,我们可以从终端顺利 ping 公司 B 的机器

ping 192.168.255.1

但是,根据下面的 Python 脚本,我们没有得到任何数据。我猜是因为我们没有将数据包从 192.168.255.2(我们的机器)路由到 192.168.255.1(公司 B 的机器)

关于如何以最佳方式做到这一点,您有什么想法吗?

如果可以,我们该如何实现呢?

提前致谢!

图表: 图 UDP

这是我正在使用的套接字代码(Python):

import socket
import struct

MCAST_GRP = '233.xxx.xxx.xxx'
MCAST_PORT = 18000
host = '192.168.255.2'
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((MCAST_GRP, MCAST_PORT))
sock.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP,
                     socket.inet_aton(MCAST_GRP) + socket.inet_aton(host))

while True:
    print sock.recv(1024)

配置如下:

tunnel    Link encap:UNSPEC  HWaddr xx-xx-xx-xx-xx-xx-xx-xx-00-00-00-00-00-00-00-00
          inet addr:192.168.255.2  P-t-P:192.168.255.2  Mask:255.255.255.252
          inet6 addr: xxxx::xxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1476  Metric:1
          RX packets:53 errors:0 dropped:0 overruns:0 frame:0
          TX packets:167 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6872 (6.8 KB)  TX bytes:17522 (17.5 KB)

相关内容