В локальной сети провайдер ввел IPTV (мультикастом). У меня же собран роутер на базе FreeBSD 6.2-RELEASE. Фильтрация трафика осуществляется ipfw, функции nat возложены на pf.Сетевые карты fxp0 - в локалку, fxp1 - к провайдеру (
fxp0: flags=8a43<UP,BROADCAST,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
options=48<VLAN_MTU,POLLING>fxp1: flags=9a43<UP,BROADCAST,RUNNING,ALLMULTI,SIMPLEX,LINK0,MULTICAST> mtu 1500
options=48<VLAN_MTU,POLLING>
).Ядро собрано с options MROUTING и options PIM
В конфиге pf прописано:nat pass on fxp1 from fxp0/16 to any -> (fxp1)
pass in quick on fxp1 all allow-opts
pass in quick on fxp0 all allow-optsВ ipfw указаны только пара запретов (не касающихся мультикаста вообще, да и отключал я ipfw, без результатов)
У провайдера CISCO общается на PIMv2, следовательно mrouted не работает. Пробовался igmpproxy (брал отсюда http://homenet.corbina.net/index.php?s=178a67519e0d477b6f4b0... )
с таким конфигом :
quickleave
phyint fxp1 upstream ratelimit 0 threshold 1
phyint fxp0 downstream ratelimit 0 threshold 1
- не заработало, на внутреннем интерфейсе запрос igmp виден, на внешнем - его уже нет. Да и pid 1747 (igmpproxy), uid 0: exited on signal 11 (core dumped) постоянно он.Попробовал pimd - ноль реакции, все теже грабли и тоже core dumped.
224.0.0.0.4 маршрутизируется естественно через fxp1Соответственно вопрос, почему роутер кудато проглатывает igmp?
в общем уже сам разобрался, надо было ещё и out указать.
Теперь другая проблема, при смене каналов/остановке igmpproxy мертво вешает машину, успев сообщить, что отрубается от группы
1. Проследи, чтобы в файрволле была открыта сеть 224.0.0.0/4 - это все адреса для мультикастов.
2. Для маршрутизации используй XORP. Этот мультипротокольный роутер поддерживает и IGMPv1-3 и PIMv1-2.
>1. Проследи, чтобы в файрволле была открыта сеть 224.0.0.0/4 - это все
>адреса для мультикастов.
>2. Для маршрутизации используй XORP. Этот мультипротокольный роутер поддерживает и IGMPv1-3 и
>PIMv1-2.Увы, XORP для PIM хочет, чтобы его в провайдерский домен включили, провайдер ессесно настроил cisco стоящую выше меня на фильтрацию половины PIM-SM сообщений
Поднимаем старую тему господа.После нескольких часов Гугла, читания множества форумов - результат один - IPTV - неработает
Работаем с FreeBSD 7.0-RELEASE
Имеем nfe0 - смотрящего напрямую в Инет (с внешним IP)
fxp0 - смотрящего во внутреннюю сеть 172.19.14.0/24Опции в ядре
====== my =========
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPDIVERT
options IPFIREWALL_NAT
options DUMMYNET
options LIBALIAS
options MROUTING
====== my =========Настройки IPFW
====== /etc/ip.firewall =========
fwcmd="/sbin/ipfw -q"ext_if="nfe0"
${fwcmd} -f flush
${fwcmd} add pass all from any to any via lo0
${fwcmd} add deny all from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any${fwcmd} add divert natd ip4 from any to any via $ext_if
${fwcmd} add pass ip from any to any
${fwcmd} add pass igmp from any to any
====== /etc/ip.firewall =========Запущен igmpproxy
====== /usr/local/etc/igmpproxy.conf =========
quickleave
phyint nfe0 upstream ratelimit 0 threshold 1
phyint fxp0 downstream ratelimit 0 threshold 1
====== /usr/local/etc/igmpproxy.conf =========
По совету извращенцев добавлен роутинг
route add -net 224.0.0.0 77.41.80.1 240.0.0.0
Пробовал mrouted
Пробовал pimdd из портов, т.к. опция PIM в ядре - не работает, пишет что неизвестная
Пробовал всё во всех порядках и позах
Всё работает - КРОМЕ IPTV
Помогите!
>${fwcmd} add pass ip from any to anyмноговато :)
для IPTV достаточно:
${fwcmd} add pass ip from any to 224.0.0.0/4
>====== /usr/local/etc/igmpproxy.conf =========
>quickleave
>phyint nfe0 upstream ratelimit 0 threshold 1
>phyint fxp0 downstream ratelimit 0 threshold 1
>====== /usr/local/etc/igmpproxy.conf =========а igmpproxy под фрю адаптирован?
в конфиг ещё надо добавить опцию altnet, где прописать все подсети, используемые провайдером для вещания, например:altnet 224.0.0.0/4
altnet 77.41.80.0/24(эти данные должен выдать провайдер)
и, говорят, желательно запретить остальные интерфейсы, какие есть, например:
phyint lo0 disabled
phyint fxp1 disabled>По совету извращенцев добавлен роутинг
>route add -net 224.0.0.0 77.41.80.1 240.0.0.0извращенский роутинг не нужен, если у тебя один шлюз для всего.
>Всё работает - КРОМЕ IPTV
свои данные для altnet я подобрал, глядя в лог igmpproxy и tcpdump (мой провайдер их пока не выдал) - тем не менее, через мой шлюз (FreeBSD 7.1) с этими настройками IPTV побежало-таки.
Сам этим вопросом давно озадачен. Не работает ничего, кроме igmpproxy. Но при частом переключении каналов выпадаю в дамп на Freebsd 7.0 , 7.1. У меня правда 3 сетевухи в бридже на которые мыльтикасты должны транслировацца, возможно можно достичь стабильности с минимумом железок..
Пробовал еще делать бридж с фильтрацией между своей и провайдерской сеткой, мультикасты бегают, но сами понимаете, это как-то некузяво..
>Сам этим вопросом давно озадачен. Не работает ничего, кроме igmpproxy. Но при
>частом переключении каналов выпадаю в дамп на Freebsd 7.0 , 7.1.
>У меня правда 3 сетевухи в бридже на которые мыльтикасты должны
>транслировацца, возможно можно достичь стабильности с минимумом железок..
>Пробовал еще делать бридж с фильтрацией между своей и провайдерской сеткой, мультикасты
>бегают, но сами понимаете, это как-то некузяво..А на 7.2 кто-нибудь пробовал? Мож, 7.2 не падает уже?
Кстати, вроде как в 7.2 улучшен механизм jail, мож попробовать igmpproxy в клетке запускать?
>А на 7.2 кто-нибудь пробовал? Мож, 7.2 не падает уже?Чего-то у меня вообще не работает. Правда пока не копал глубоко. У меня 7.2 и bridge на внутренние компы. Кто-нибудь сумел таки нормально запустить это дело?
>А на 7.2 кто-нибудь пробовал? Мож, 7.2 не падает уже?Да, настроил всё на 7.2. Работает. Но таки падает при переключении каналов. Нечасто, но регулярно. Будем ждать обновления igmpproxy? Может есть альтернативные методы? У провайдеров же как-то работает.
>>А на 7.2 кто-нибудь пробовал? Мож, 7.2 не падает уже?
>
>Да, настроил всё на 7.2. Работает. Но таки падает при переключении каналов.
>Нечасто, но регулярно. Будем ждать обновления igmpproxy? Может есть альтернативные методы?
>У провайдеров же как-то работает.Помагите кто нибудь настроить..............
>>>А на 7.2 кто-нибудь пробовал? Мож, 7.2 не падает уже?
>>
>>Да, настроил всё на 7.2. Работает. Но таки падает при переключении каналов.
>>Нечасто, но регулярно. Будем ждать обновления igmpproxy? Может есть альтернативные методы?
>>У провайдеров же как-то работает.
>
> Помагите кто нибудь настроить..............debug.mpsafenet=0 в /boot/loader.conf попробуйте добавить.
igmpproxy, Version 0.1 beta3 for FreeBSD, Build 090906
Copyright 2005 by Johnny Egeland <johnny@rlo.org>
Copyright 2007 by Pavel Korshunov, www.korshunov.com
Copyright 2008 by gygenot, www.gygenot.com
Distributed under the GNU GENERAL PUBLIC LICENSE, Version 2 - check GPL.txt
Debu: Searching for config file at '/usr/local/etc/igmpproxy.conf'
Debu: Config: Got a phyint token.
Debu: Config: IF: Config for interface rl0.
Debu: Config: IF: Got upstream token.
Debu: Config: IF: Got ratelimit token '0'.
Debu: Config: IF: Got threshold token '1'.
Debu: Config: IF: Got altnet token 10.5.200.1.
Debu: Config: IF: Altnet: Parsed altnet to 10.5.200.1/32.
Debu: Config: IF: Got altnet token 239.0.0.0/12.
Debu: Config: IF: Altnet: Parsed altnet to 239.0/12.
Debu: IF name : rl0
Debu: Next ptr : 0
Debu: Ratelimit : 0
Debu: Threshold : 1
Debu: State : 1
Debu: Allowednet ptr : 2820c030
Debu: Config: Got a phyint token.
Debu: Config: IF: Config for interface rl2.
Debu: Config: IF: Got downstream token.
Debu: Config: IF: Got ratelimit token '0'.
Debu: Config: IF: Got threshold token '1'.
Debu: IF name : rl2
Debu: Next ptr : 0
Debu: Ratelimit : 0
Debu: Threshold : 1
Debu: State : 2
Debu: Allowednet ptr : 0
Debu: Config: Got a phyint token.
Debu: Config: IF: Config for interface lo0.
Debu: Config: IF: Got disabled token.
Debu: IF name : lo0
Debu: Next ptr : 0
Debu: Ratelimit : 0
Debu: Threshold : 1
Debu: State : 0
Debu: Allowednet ptr : 0
Debu: Config: Got a phyint token.
Debu: Config: IF: Config for interface rl1.
Debu: Config: IF: Got disabled token.
Debu: IF name : rl1
Debu: Next ptr : 0
Debu: Ratelimit : 0
Debu: Threshold : 1
Debu: State : 0
Debu: Allowednet ptr : 0
Debu: Config: Got a phyint token.
Debu: Config: IF: Config for interface ng0.
Debu: Config: IF: Got disabled token.
Debu: IF name : ng0
Debu: Next ptr : 0
Debu: Ratelimit : 0
Debu: Threshold : 1
Debu: State : 0
Debu: Allowednet ptr : 0
Debu: get if vector
Debu: Searching for config file at 'rl0':70200:18:2
Debu: Searching for config file at 'rl0':528:2:2
Debu: Physical Index value of IF 'rl0' is 1
Debu: buildIfVc: Interface rl0 Addr: 109.86.174.3, Flags: 0xffff8843, Network: 109.86.174/24
Debu: Searching for config file at 'rl1':135736:18:2
Debu: Searching for config file at 'rl1':528:2:2
Debu: Physical Index value of IF 'rl1' is 2
Debu: buildIfVc: Interface rl1 Addr: 10.11.6.45, Flags: 0xffff8843, Network: 10.11.6/23
Debu: Searching for config file at 'rl2':201272:18:2
Debu: Searching for config file at 'rl2':528:2:2
Debu: Physical Index value of IF 'rl2' is 3
Debu: buildIfVc: Interface rl2 Addr: 192.168.100.1, Flags: 0xffff8843, Network: 192.168.100/24
Debu: Searching for config file at 'pflog0':266808:18:2
Debu: Searching for config file at 'lo0':332344:18:2
Debu: Searching for config file at 'lo0':528:2:2
Debu: Physical Index value of IF 'lo0' is 5
Debu: buildIfVc: Interface lo0 Addr: 127.0.0.1, Flags: 0xffff8049, Network: 127/8
Debu: Searching for config file at 'pfsync0':397880:18:2
Debu: Searching for config file at 'ng0':463416:18:2
Debu: Searching for config file at 'ng0':528:2:2
Debu: Physical Index value of IF 'ng0' is 7
Debu: buildIfVc: Interface ng0 Addr: 192.168.32.1, Flags: 0xffff88d1, Network: 192.168.32.1/32
Debu: Found config for rl0
Debu: Found config for rl1
Debu: Found config for rl2
Debu: Found config for ng0
Note: adding VIF, Ix 0 Fl 0x0 IP 0x03ae566d rl0, Threshold: 1, Ratelimit: 0
Debu: Network for [rl0] : 109.86.174/24
Debu: Network for [rl0] : 10.5.200.1/32
Debu: Network for [rl0] : 239.0/12
Note: adding VIF, Ix 1 Fl 0x0 IP 0x2d060b0a rl1, Threshold: 1, Ratelimit: 0
Debu: Network for [rl1] : 10.11.6/23
Note: adding VIF, Ix 2 Fl 0x0 IP 0x0164a8c0 rl2, Threshold: 1, Ratelimit: 0
Debu: Network for [rl2] : 192.168.100/24
Note: adding VIF, Ix 3 Fl 0x0 IP 0x0120a8c0 ng0, Threshold: 1, Ratelimit: 0
Debu: Network for [ng0] : 192.168.32.1/32
Debu: Got 232448 byte buffer size in 8 iterations
Debu: Joining all-routers group 224.0.0.2 on vif 192.168.100.1
Debu: SENT Membership query from 192.168.100.1 to 224.0.0.1
Debu: Sent membership query from 192.168.100.1 to 224.0.0.1. Delay: 10
Debu: All Created timeout 1 (#0) - delay 10 secs 134532704
Debu: (Id:1, Time:10)
Debu: All Created timeout 2 (#1) - delay 21 secs 134529376
Debu: (Id:1, Time:10)
Debu: (Id:2, Time:21)
Note: Timeout 10
Note: RECV V2 member report from 192.168.100.1 to 224.0.0.2
Note: The IGMP message was from myself. Ignoring.
Note: Timeout 10
Note: RECV Membership query from 192.168.100.1 to 224.0.0.1
Info: ignoring unknown IGMP message type 11 from 192.168.100.1 to 224.0.0.1
Note: Timeout 10
Note: RECV V2 member report from 192.168.100.6 to 239.255.255.250
Debu: Should insert group 239.255.255.250 (from: 192.168.100.6) to route table. Vif Ix : 2
Debu: No existing route for 239.255.255.250. Create new.
Debu: No routes in table. Insert at beginning.
Info: Inserted route table entry for 239.255.255.250 on VIF #2
Debu: Joining group 239.255.255.250 upstream on IF address 109.86.174.3
Debu:
Current routing table (Insert Route);Вот кусок лога.Но работать не хочет помагить разобраться!!!!!!!!!!!!!!!!!