多播路由 - CentOS 5

多播路由 - CentOS 5

我正在尝试将多播流从接口 eth1(192.168.20.41)传递到 CentOS 5 上的接口 tun0(192.168.100.40)。

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

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 接口上看不到多播。我做错了什么?配置如下:

/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

iptable 配置:

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

答案1

我认为多播路由是一种黑魔法,但这里只有几张照片......

  • 使用命令检查igmpproxy是否创建多播路由ip mroute

  • 如果确实如此,您的内核可能仍在过滤输入。

  • 最常见的原因是缺少到源的路由。您是否尝试过禁用 iptables?或者使用TRACE目标?

  • 如果没有创建多播路由,我建议使用 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.

答案2

(无法发表评论,因此我留下答案)

如果我理解正确的话,您有一个位于 192.168.20.0/24 上的系统,正在向特定组 224.1.1.1 发送多播流量,并且您想要通过中间 Linux 机箱上的隧道接口路由该流量。

我不熟悉 igmpproxy 的操作,但仅从名称来看,我怀疑它会将 IGMP 数据包回送到远程 LAN。这可能不适用于您的隧道实现,因为 IGMP 仅适用于本地网络,而不适用于隧道。

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

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

快速谷歌一下,你就会发现 Linux多播 HOWTO 请点击这里

呼呼!

相关内容