Я пытаюсь передать поток многоадресной передачи с интерфейса eth1 (192.168.20.41) на интерфейс tun0 (192.168.100.40) на CentOS 5.
Я вижу входящий многоадресный поток на 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 - это туннель GRE через eth0: 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. Согласно составленной документации, это означает
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, отправляющая многоадресный трафик в определенную группу 224.1.1.1, и вы хотите маршрутизировать этот трафик через туннельный интерфейс на промежуточном Linux-сервере.
Я не знаком с работой igmpproxy, но, судя по названию, подозреваю, что он отправляет эхом пакеты IGMP в удаленную локальную сеть. Это может не сработать для вашей реализации туннеля, потому что IGMP предназначен для работы только в локальной сети, а не в туннеле.
PIM будет вашим другом здесь - он позволит вашему Linux-устройству обмениваться информацией об источниках и группах многоадресной рассылки с другими маршрутизаторами.
Какая система завершает туннель GRE? Может ли он работать с PIM в плотном или разреженном режиме? Может ли локальный Linux-сервер запускать PIM, если вам нужно?
Быстрый Google раскрывает Linux Multicast HOWTO здесь.
HTH!