我正在尝试将多播流从接口 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 请点击这里。
呼呼!