Linux

多播路由 - CentOS 5

  • December 24, 2011

我正在嘗試將多播流從介面 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

我認為多播路由是一種黑魔法,但這裡有幾個鏡頭……

  • 檢查 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.

引用自:https://serverfault.com/questions/343858