Linux
多播路由 - 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
我認為多播路由是一種黑魔法,但這裡有幾個鏡頭……
- 檢查 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.