Помогите, пожалуйста, разобраться со следующим:
Есть рутер под FreeBSD 5.3 c пятью интерфейсами:fxp0: ip:10.10.1.1 - локалка №1
em0: ip:84.242.252.1 - смотрит в Инет
fxp1: ip:10.10.2.1 - локалка №2
xl0: ip:10.10.3.1 - локалка №3
xl1: ip:10.10.4.1 - локалка №4
К локалке №1 (10.10.1.1) подключен виндовый комп, который вещает с помощью NetStreamVision через мультикаст каналы с DVB на адрес 235.10.10.10 Задача - с других локалок и с интерфейса инета смотреть DVB. Сама проблема заключается в том, что mroute как бы не работает, хотя пишет, что всё окей, в core не вываливается, в режиме debuga всё окей - alias'ит всё, что надо и всё правильно. Только вот не прёт мультикаст за его пределы и всё тут.
Ядро сконфигурено со следующими опциями:
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE_LIMIT
options NETGRAPH
options NETGRAPH_PPP
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options BRIDGE
options DUMMYNET
options HZ=1000
options MROUTING
Кроме того, в sysctl'e имеется следующее:
sysctl -w net.link.ether.inet.proxyall=1
sysctl -w net.inet.tcp.blackhole=2
sysctl -w net.inet.udp.blackhole=1
sysctl -w kern.ipc.somaxconn=1024
sysctl -w net.inet.icmp.drop_redirect=1
sysctl -w net.inet.icmp.log_redirect=1
sysctl -w net.inet.ip.redirect=0
sysctl -w net.link.ether.inet.max_age=1200
sysctl -w net.inet.ip.sourceroute=0
sysctl -w net.inet.ip.accept_sourceroute=0
sysctl -w net.inet.icmp.bmcastecho=0
sysctl -w net.inet.icmp.maskrepl=0
Сам mroute сконфигурен так:
phyint 10.10.1.1
phyint 10.10.2.1
phyint 10.10.3.1
phyint 10.10.4.1
phyint 84.242.252.1
Файрвол пробовал ставить в allow all from any to any - не помогло. Пробовал и без директив в sysctl'е - не помогло. Добавлял в ipfw правила типа:
allow ip from any to 224.0.0.0:240.0.0.0 out recv fxp0 xmit и т.д. - не помогло.
Сервер с multicast'ом точно работает - проверено! На fxp0 всё приходит:
tcpdump -i fxp0
listening on fxp0, link-type EN10MB (Ethernet), capture size 96 bytes
15:17:14.429019 IP 10.10.1.2 > 235.10.10.10: udp
15:17:14.438759 IP 10.10.1.2 > 235.10.10.10: udp
15:17:14.438838 IP 10.10.1.2.33033 > 235.10.10.10.33033: UDP, length: 940
15:17:14.450545 IP 10.10.1.2 > 235.10.10.10: udp
Кроме того, выход с mrinfo:
mrinfo 84.242.252.1
84.242.252.1 (84.242.252.1) [DVMRPv3 compliant]:
10.10.1.1 -> 0.0.0.0 (local) [1/1/querier]
84.242.252.1 -> 0.0.0.0 (local) [1/1/querier]
10.10.2.1 -> 0.0.0.0 (local) [1/1/querier]
10.10.3.1 -> 0.0.0.0 (local) [1/1/querier]
10.10.4.1 -> 0.0.0.0 (local) [1/1/querier]
Кроме того, выход с netstat -g:
Virtual Interface Table
Vif Thresh Rate Local-Address Remote-Address Pkts-In Pkts-Out
0 1 0 10.10.1.1 0 0
1 1 0 84.242.252.1 0 0
2 1 0 10.10.2.1 0 0
3 1 0 10.10.3.1 0 0
4 1 0 10.10.4.1 0 0
IPv4 Multicast Forwarding Cache
Origin Group Packets In-Vif Out-Vifs:Ttls
169.254.50.112 239.255.255.250 0 32
Интересует здесь вот что: очень похоже, что 169.254.50.112 - это мой сервак под windows, подцепленный на fxp0. Но как он может быть им я не понимаю - на нём нет DHCP - это раз, а во-вторых если верить tcpdump'у, то пакеты летят с 10.10.1.2 - оттуда, откуда нужно. Однако IPv4 Multicast Forwarding Cache пустой с начала старта mrouted. А эта запись в нём появлется только тогда, когда arp засечёт 10.10.1.2
Помогите пожалуйста, кто чем может! Уже неделю не могу ничего с этим поделать.
P.S.: файрволов на виндовых машинах нет.