组播路由 – CentOS 5

我试图将来自接口eth1(192.168.20.41)的多路广播stream传送到CentOS 5上的接口tun0(192.168.100.40)。

我可以在eth1上看到传入的多播stream:

tcpdump -n -i eth1

type=1700 audit(1324681169.542:52): dev=eth1 prom=256 old_prom=0 auid=4294967295 ses=4294967295 Dec 23 17:59:29 localhost kernel: device eth1 entered promiscuous mode Dec 23 17:59:29 localhost kernel: type=1700 audit(1324681169.542:52): dev=eth1 prom=256 old_prom=0 auid=4294967295 ses=4294967295 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 17:59:29.576192 IP 192.168.20.20.52194 > 224.1.1.1.search-agent: UDP, length 1328 17:59:29.576277 IP 192.168.20.20.52194 > 224.1.1.1.search-agent: UDP, length 1328 17:59:29.576801 IP 192.168.20.20.52194 > 224.1.1.1.search-agent: UDP, length 1328 

但是在tun0接口上看不到组播。 我做错了什么? configuration如下所示:

/etc/igmpproxy.conf文件:

 phyint eth1 upstream ratelimit 0 threshold 1 altnet 192.168.100.0/24 phyint tun0 downstream ratelimit 0 threshold 1 phyint eth0 disabled phyint eth5 disabled 

iptableconfiguration:

 iptables -A INPUT -p igmp -j ACCEPT iptables -A INPUT -d 224.0.0.0/240.0.0.0 -p udp -m udp -j ACCEPT iptables -A FORWARD -d 224.0.0.0/240.0.0.0 -p udp -j ACCEPT modprobe ipt_TTL iptables -t mangle -A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 1 

tun0适配器是通过eth0的GRE隧道:cat / etc / sysconfig / network-scripts / ifcfg-tun0

 DEVICE=tun0 TYPE=GRE ONBOOT=yes MY_INNER_IPADDR=192.168.100.40 PEER_INNER_IPADDR=192.168.100.30 PEER_OUTER_IPADDR=192.168.20.30 

我认为组播路由是一种黑魔法,但这里有几个镜头… … –

  • 检查igmpproxy是否使用ip mroute命令创build组播路由。

  • 如果是这样,你的内核可能仍然在过滤input。

  • 最常见的原因是缺less到源的路由。 你尝试禁用iptables吗? 还是使用TRACE目标?

  • 如果没有创build多播路由,我build议使用pimd(这是我用于路由我的IPTV多播)。

  • 而且,你似乎使用altnet错误。 根据mrouted文件,这意味着

Specifies an additional subnet (network) attached to the physical interface described in the phyint entry. mask_len is the length of the network mask.

(不能发表评论,所以我会留下一个答案)

如果我理解正确的话,你有一个192.168.20.0/24上的系统将组播stream量发送到一个特定的组224.1.1.1,并且你想通过一个中间的Linux盒子上的一个通道接口路由这个stream量。

我不熟悉igmpproxy的操作,但是从名字上来说,我怀疑它会把IGMP数据包回传给远端的局域网。 这可能不适用于您的隧道实施,因为IGMP仅用于本地networking,而不是隧道。

PIM将成为你的朋友 – 它将使你的Linux机器能够与其他路由器共享有关多播源和组的信息。

什么样的系统正在终止GRE隧道? 它能够在密集模式或稀疏模式下运行PIM吗? 如果需要的话,本地Linux机器可以运行PIM吗?

一个快速的Google在这里展示了Linux 多播HOWTO 。

HTH!