udhcpc -i vlan2 -S -b -s dhcpc-event -H unknown --vendorclass sml7105-rt
iptables -A FORWARD -i vlan2 -j wanin
if [ -f /etc/igmp.conf ]; then
grep ppp0 /etc/igmp.conf
if [ $? -eq 0 ]; then
sed -i 's/ppp0/vlan2/' /etc/igmp.conf
killall igmpproxy
igmpproxy /etc/igmp.conf
fi
fi
В результате роутер получает айпишник от DHCP домового роутера, присваивает его интерфесу vlan2.
Ключ "-s dhcpc-event" заставляет выполниться какой-то внутренний скрипт (я его в роутере не нашёл), который прописывает правильные маршруты.
Команда iptables прописывает в файерволле роутера правило, разрешающее прохождение любого входящего трафика от vlan2.
Последняя команда не совсем команда, а скрипт, переписывающий конфиг-файл для IGMPProxy, расположенный у меня в /etc/igmp.conf
До выполнения этого скрипта файл имеет вид:
quickleave
phyint ppp0 upstream
altnet 0.0.0.0/0
phyint br0 downstream ratelimit 0
После выполнения файл имеет вид:
quickleave
phyint vlan2 upstream
altnet 0.0.0.0/0
phyint br0 downstream ratelimit 0
Запуск udhcpc настроен на событие подъёма интерфеса WAN (установка PPPoE соединения), скрипт подмены igmp.conf настроен в планировщике на выполнение раз в минуту, ибо при обрыве и реконнекте PPPoE конфиг перезаписывается. А так всё автоматически восстанавливается и при перезагрузке роутера.
Если какой-либо пункт не выполнить, то мультикаст в локалку не идёт. Если "udhcpc" выполнять без указания роутерного скрипта, то маршруты не будут прописаны и мультикаст ровно так же не пойдёт.
Сильно подозреваю, что всё дело во втором default gateway для мультикаст-подсети провайдера.
Команда route показывает такое:
default 10.27.0.144 0.0.0.0 UG 0 0 0 ppp0
default 10.202.179.1 0.0.0.0 UG 1 0 0 vlan2
vlan2 - это соединение, которому присвоен адрес от DHCP домового роутера из диапазона 10.202.179.*
Оно почему-то появляется после подъёма pppoe, хотя на самом деле это бридж между wan и lan4, в который включена провайдерская приставка sml-282. Но приставка работает сама по себе и никак не мешает остальным. На её работу состояние pppoe никак не влияет.
ИТОГО:
1. Надо найти файл igmp.conf и посмотреть его содержимое при поднятом pppoe.
2. Надо внимательно проанализировать вывод команды ifconfig, какие ещё интерфейсы поднимаются при подъёме pppoe.
3. Выставить в настройках роутера вместо pppoe получение адреса от DHCP, а в консоли через telnet/ssh подсмотреть командой "ps", с какими ключами запущен процесс udhcpc. Именно так я узнал, что надо запускать с ключом "-s dhcpc-event".
Ну а дальше можно мараковать, как всё это приспособить к зухелю, чтоб работало автоматически.
А дюну лучше не мучать, она не обязана уметь работать с несколькими сетями-подсетями и манипулировать адресами так же виртуозно, как роутер.
ЗЫ. Ещё проще вариант - меняй роутер на такой, который работает под помидорной прошивкой, тогда все поблемы решишь разом