Posted: Sat Jun 23, 2012 20:57 Post subject: [Решено] DD-WRT Russian Dual Access, iptv multicast, R
ВЕРСИЯ 2, более стабильно работающая, ниже!
Инструкция к применению версия 1.
Задача: раздавать через роутер интернет, обеспечить доступ к локальным ресурсам провайдера, раздавать iptv (вещание мультикаст трафика из локальной сети провайдера) всем домашним компьютерам.
1. Ставим DD-WRT, настраиваем интернет PPPoE (веб-морда Setup - Basic Setup), настраиваем DHCP для своей локальной сети, настраиваем Wi-Fi (веб-морда Wireless)
2. В веб-морде Security - SPI Firewall оставляем включенным, и снимаем галку напротив Filter Multicast (Разрешаем широковещательный трафик для iptv)
3. В графе Administrations - Commands вводим следущее:
В графу Startup:
Code:
##### Create WAN Dual Access
### Set WAN-Ethernet interface ip address of ISP's lan network
# First way (dynamic ip from IPS DHCP):
ifconfig vlan2 down # down vlan interface (WAN-Ethernet)
killall -9 udhcpc # kill dhcp client
ln -s /sbin/rc /tmp/udhcpc && udhcpc -i vlan2 -p /var/run/udhcpc.pid -s /tmp/udhcpc # restart dhcp client on vlan2 interface (WAN-Ethernet)
ifconfig vlan2 up # up vlan interface (WAN-Ethernet)
route delete default gw 0.0.0.0 dev vlan2 # delete default gateway, reseived from IPS's lan-network DHCP, because this is gateway in ISP's lan network, but router must have default gateway of PPPoE tunnel
# Second way (static ip):
#ifconfig vlan2 down && ifconfig vlan2 172.21.15.162 netmask 255.252.0.0 && ifconfig vlan2 up
### Set NAT for ISP's lan network
iptables -t nat -A POSTROUTING -o vlan2 -s 192.168.1.0/255.255.255.0 -j MASQUERADE
### Allow traffic of IGMP multicast from WAN-Ethernet ISP's lan network for ip-tv
iptables -I FORWARD -d 224.0.0.0/240.0.0.0 -p udp -j ACCEPT
# iptables -I FORWARD -d 234.5.3.0/255.255.255.0 -p udp -m multiport --destination-port 1234,20000 -j ACCEPT # Example for paranoya
iptables -I INPUT -p igmp -j ACCEPT
4. Перегружаем роутер, заходим в него по внутреннему ip-адресу по телнету, логинимся под именем root с паролем, назначенным в веб-морде для админа. Диагностируем процесс загрузки и выполнения демонов с помощью команды ps, таблицу роутинга route -n, интерфейсы на роутере ifconfig.
Осталось 2 вопроса:
1. Иногда iptv-видео замирает на минуту, как будто роутер выкинуло из группы вещания мультикаст-трафика. Совершенно рандомно, т.е. может проработать 5 минут и замереть, может 2 часа и замереть...Как починить?
2. При разрыве pppoe - соединения, роутер подключается вновь, но при этом запускает igmprt с неправильным конфигом (умолчальным, в котором считается, что мультикаст-трафик шлется по pppoe-соединению). Подскажите скрипт, который, запускаясь раз в 10 минут через cron, будет проверять конфиг запущенного igmprt, и если он неправильный - перепускать его с моим, правленным конфигом.
Мой вариант скрипта не работает, его можно заметить закомментированным в конфиге Startup. Вот его выжимка:
Posted: Tue Jun 26, 2012 9:42 Post subject: Re: DD-WRT Russian Dual Access, iptv multicast на Asus RT-
nikilog wrote:
Осталось 2 вопроса:
1. Иногда iptv-видео замирает на минуту, как будто роутер выкинуло из группы вещания мультикаст-трафика. Совершенно рандомно, т.е. может проработать 5 минут и замереть, может 2 часа и замереть...Как починить?
2. При разрыве pppoe - соединения, роутер подключается вновь, но при этом запускает igmprt с неправильным конфигом (умолчальным, в котором считается, что мультикаст-трафик шлется по pppoe-соединению). Подскажите скрипт, который, запускаясь раз в 10 минут через cron, будет проверять конфиг запущенного igmprt, и если он неправильный - перепускать его с моим, правленным конфигом.
А как вы хотели при разрыве соединения ppp, для этого есть служба которая должна все поднять:
Code:
1076 root 1324 S /tmp/ppp/redial 30
В результате так же отрабатывает скрипт ip-up
Code:
18014 root 1816 S /tmp/ppp/ip-up ppp0 ....
в результате действительно будет выгружен igmprt и запущен по новой со своим скриптом.
У вас же написан скрипт, добавляете в startup создание файл Check_igmp.sh
Code:
....
echo -e "#!/bin/sh
Run_igmprt=\`ps | awk '/igmpproxy.conf/ {print \$6}'\`
if [ \"\$Runigmprt\" = \"/tmp/igmpproxy.conf\" ]; then
# Если такая строчка есть, то выполнить
# выгрузку и загрузить
# sleep такие большие не нужны.
fi
exit;
">/tmp/var/tmp/Check_igmp.sh
chmod 755 /tmp/var/tmp/Check_igmp.sh
...
Posted: Fri Jul 06, 2012 18:31 Post subject: ВЕРСИЯ 2, инструкция к применению
Итак, Инструкция к применению версия 2.
Для начала, отличия от выше изложенного способа:
В веб-морде Security - SPI Firewall оставляем включенным, и НЕ снимаем галку напротив Filter Multicast, галка должна стоять!(Запрещаем широковещательный трафик для iptv)
Если мы НЕ снимаем галку, то при разрыве ppp соединения, всё же выгружается демон igmprt, но после реконнекта демон igmprt не запускается . При этом, в правила фаервола не добавляется правило, разрешающее igmp-трафик.
Следовательно, что мы сделаем: добавим в крон команду запуска igmprt каждые 10 минут (если igmprt уже запущен, второй экземпляр демона просто не запустится, что нам и нужно)
Code:
*/2 * * * * root igmprt /tmp/igmpproxy-1.conf &
, а также сами, ручками, разрешим фаерволу принимать IGMP-трафик.
Code:
iptables -I INPUT -p igmp -j ACCEPT
Итак, полный вариант 2, инструкция к применению:
Задача: раздавать через роутер интернет, обеспечить доступ к локальным ресурсам провайдера, раздавать iptv (вещание мультикаст трафика из локальной сети провайдера) всем домашним компьютерам.
1. Ставим DD-WRT, настраиваем интернет PPPoE (веб-морда Setup - Basic Setup), настраиваем DHCP для своей локальной сети, настраиваем Wi-Fi (веб-морда Wireless)
2. В веб-морде Security - SPI Firewall оставляем включенным, и оставляем (или ставим, если не было) галку напротив Filter Multicast (т.е. здесь мы должны запретить мультикаст-трафик, именно запретить)
3. В графе Administrations - Commands вводим следущее:
В графу Startup:
Code:
##### Create WAN Dual Access
### Set WAN-Ethernet interface ip address of ISP's lan network
# First way (dynamic ip from IPS DHCP):
ifconfig vlan2 down # down vlan interface (WAN-Ethernet)
killall -9 udhcpc # kill dhcp client
ln -s /sbin/rc /tmp/udhcpc && udhcpc -i vlan2 -p /var/run/udhcpc.pid -s /tmp/udhcpc # restart dhcp client on vlan2 interface (WAN-Ethernet)
ifconfig vlan2 up # up vlan interface (WAN-Ethernet)
route delete default gw 0.0.0.0 dev vlan2 # delete default gateway, reseived from IPS's lan-network DHCP, because this is gateway in ISP's lan network, but router must have default gateway of PPPoE tunnel
# Second way (static ip):
# введите свои ip-адреса вместо мной указанных ниже
#ifconfig vlan2 down && ifconfig vlan2 172.21.15.162 netmask 255.252.0.0 && ifconfig vlan2 up
### Set routing for ISP's lan network
# введите свои маршруты вместо мной указанных ниже
route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.20.254.5
route add -net 172.16.0.0 netmask 255.240.0.0 gw 172.20.254.5
route add -net 192.168.0.0 netmask 255.255.0.0 gw 172.20.254.5
##### Config IGMP multicast forwarding from WAN-Ethernet ISP's lan network for ip-tv
### Set NAT for ISP's lan network
# настроить NAT для локальной сети провайдера. необходимо для доступа своих компьютеров до ресурсов сети провайдера
# заменить в строке ниже адрес своей домашней локальной сети (НЕ сети провайдера)
iptables -t nat -A POSTROUTING -o vlan2 -s 192.168.1.0/255.255.255.0 -j MASQUERADE
### Allow traffic of IGMP multicast from WAN-Ethernet ISP's lan network for ip-tv
iptables -I FORWARD -d 224.0.0.0/240.0.0.0 -p udp -j ACCEPT
# iptables -I FORWARD -d 234.5.3.0/255.255.255.0 -p udp -m multiport --destination-port 1234,20000 -j ACCEPT # Example for paranoya
iptables -I INPUT -p igmp -j ACCEPT
4.В разделе Administration - Management разрешить Cron, в графе Additional Cron Jobs прописать команду регулярного запуска демона igmprt
Code:
*/10 * * * * root igmprt /tmp/igmpproxy-1.conf &
Если igmprt уже запущен, его дубликат просто не будет запущен, что нам и нужно. Символ & в конце строки обязателен.
5. Перегружаем роутер, заходим в него по внутреннему ip-адресу по телнету, логинимся под именем root с паролем, назначенным в веб-морде для админа. Диагностируем процесс загрузки и выполнения демонов с помощью команды ps, таблицу роутинга route -n, интерфейсы на роутере ifconfig.
Итог: все работает, вопросы 1 и 2, возникшие при использовании первого способа, отпали сами собой. Видео не прерывается, работает стабильно и теперь реконнект ppp-туннеля отключает телевизор на максимум 10 минут (это время можно и сократить, удачно протестировалась частота запуска задачи кроном каждые 2 минуты)
Сделал как написали. Все работает отлично. Но...
Если нет соединения устройств по WiFi, через некоторое время отваливается WiFi. Андроид ее не видит вообще. Помогает перезагрузка роутера. Думаю это из-за Cron...
Привет!
Настраиваю как написано, но у меня L2TP.
Делаю по аналогии, WAN порту присваивается заданный адрес, мультикаст вроде запустился, а вот L2TP не соединяется. Может что-то для него ещё надо?
Конфиг:
Startup:
Code:
##### Create WAN Dual Access
# (static ip):
ifconfig vlan2 down && ifconfig vlan2 10.60.221.20 netmask 255.255.255.0 && ifconfig vlan2 up
### Set routing for ISP's lan network
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.60.221.254 #локалка
route add -net 46.148.96.0 netmask 255.255.240.0 gw 10.60.221.254 #локалка
route add -net 62.122.96.0 netmask 255.255.248.0 gw 10.60.221.254 #DNS
route add -net 94.231.160.0 netmask 255.255.240.0 gw 10.60.221.254 #локалка
route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.60.221.254 #ХЗ зачем, но похоже для VPN, т.к. его сервер 192.168.21.х
##### Config IGMP multicast forwarding from WAN-Ethernet ISP's lan network for ip-tv
### Set NAT for ISP's lan network
iptables -t nat -A POSTROUTING -o vlan2 -s 192.168.1.0/255.255.255.0 -j MASQUERADE
### Allow traffic of IGMP multicast from WAN-Ethernet ISP's lan network for ip-tv
iptables -I FORWARD -d 234.5.2.0/255.255.255.0 -p udp -m multiport --destination-port 1234,20000 -j ACCEPT
В Cron:
Code:
*/10 * * * * root igmprt /tmp/igmpproxy-1.conf &
Ну, и в Basic указываю настройки L2TP.
Кстати, с мультикастом пару раз запустилось, но при дальнейших ковыряньях испортилось. Пришлось снять галку в Firewall.
Провёл эксперимент:
К провайдерскому кабелю подрубил другой роутер, на нём поставил статический адрес, и включил DHCP. К выходу подрубил роутер с DD-WRT. В таком режиме DD-WRT получило IP, и установило L2TP соединение, инет работал. Поставил на DD-WRT строку ifconfig vlan2 down && ifconfig vlan2 10.60.221.20 netmask 255.255.255.0 && ifconfig vlan2 up, воткнул провайдера, и эффекта 0. Вот этот кусок
Code:
### Set NAT for ISP's lan network
iptables -t nat -A POSTROUTING -o vlan2 -s 192.168.1.0/255.255.255.0 -j MASQUERADE
позволил работать в локальной сети, но на L2TP не повлиял...
Posted: Tue Mar 05, 2013 17:33 Post subject: PPPoE+IGMP
Подскажите плиз господа.
Есть необходимость пользоваться интернетом через PPPOE и IPTV, без локальной сети. Сделал все как написано выше, за исключением некоторых пунктов. Вот что получилось:
Startup:
### Allow traffic of IGMP multicast from WAN-Ethernet ISP's lan network for ip-tv
iptables -I FORWARD -d 224.0.0.0/240.0.0.0 -p udp -j ACCEPT
# iptables -I FORWARD -d 234.5.3.0/255.255.255.0 -p udp -m multiport --destination-port 1234,20000 -j ACCEPT # Example for paranoya
iptables -I INPUT -p igmp -j ACCEPT
И в Кроне(он включен) добавил запуск igmp
*/1 * * * * root igmprt /tmp/igmpproxy-1.conf &
Уже поставил минуту, ничего не изменилось, ИПТВ не работает, а интернет работает.. Хотелось бы выяснить почему так.
Если зайти на роутер по телнету и ввести пс то вылазит следующее:
PID USER VSZ STAT COMMAND
1 root 1628 S /sbin/init noinitrd
2 root 0 SW< [kthreadd]
3 root 0 SW< [ksoftirqd/0]
4 root 0 SW< [events/0]
5 root 0 SW< [khelper]
34 root 0 SW< [kblockd/0]
53 root 0 SW [pdflush]
54 root 0 SW [pdflush]
55 root 0 SW< [kswapd0]
56 root 0 SW< [aio/0]
579 root 0 SW< [mtdblockd]
2162 root 2148 S resetbutton
2317 root 1100 S dnsmasq --conf-file=/tmp/dnsmasq.conf
2364 root 1344 S telnetd
2374 root 976 S cron
2413 root 2408 S pppd file /tmp/ppp/options.pppoe
2423 root 1816 S ttraff
2648 root 3688 S httpd -p 80
2674 root 1884 S process_monitor
2675 root 1336 S syslogd -L
2677 root 1332 S klogd
2809 root 1828 S upnp -D -W ppp0
2883 root 1356 S -sh
3248 root 1340 R ps
Игмп демона я не наблюдаю...даже если руками прописываю команду на его запуск, говорит DONE и так же в процессах ничего не меняется...прошу вашей помощи.заранее благодарен.
оставил в сообщение только то на что пока обратить внимание, если вы используете pppoe то должен быть интерфейс ppp0, а не vlan2, и вы уверены что сетевые интерфейсы у вас имеют те имена что вы написали, проверить можно по ifconfig. И второе главное в http://192.168.1.1/Firewall.asp (Block WAN Requests) снять галку на Filter Multicast
Posted: Wed Mar 06, 2013 8:25 Post subject: Re: PPPoE+IGMP
vasek00 wrote:
оставил в сообщение только то на что пока обратить внимание, если вы используете pppoe то должен быть интерфейс ppp0, а не vlan2, и вы уверены что сетевые интерфейсы у вас имеют те имена что вы написали, проверить можно по ifconfig. И второе главное в http://192.168.1.1/Firewall.asp (Block WAN Requests) снять галку на Filter Multicast
Теперь берем ваши интерфейсы:
br0 - 192.168.1.1 - мост wi-fi+vlan1
eth2 - Link encap:Ethernet
ppp0 - 46.41.127.71 - для интернета
ra0 - Link encap:Ethernet - wi-fi
vlan1 - Link encap:Ethernet - для лок.сети роутера
vlan2 - Link encap:Ethernet - для лок.сети провайдера
и что вы хотите:
Quote:
Есть необходимость пользоваться интернетом через PPPOE и IPTV, без локальной сети.
Найдите ошибки в вашем igmpproxy-1.conf из ходя из ваших условий.
Posted: Wed Mar 06, 2013 12:32 Post subject: Re: PPPoE+IGMP
vasek00 wrote:
Теперь берем ваши интерфейсы:
br0 - 192.168.1.1 - мост wi-fi+vlan1
eth2 - Link encap:Ethernet
ppp0 - 46.41.127.71 - для интернета
ra0 - Link encap:Ethernet - wi-fi
vlan1 - Link encap:Ethernet - для лок.сети роутера
vlan2 - Link encap:Ethernet - для лок.сети провайдера
и что вы хотите:
Quote:
Есть необходимость пользоваться интернетом через PPPOE и IPTV, без локальной сети.
Найдите ошибки в вашем igmpproxy-1.conf из ходя из ваших условий.
И Зачем мне снимать галку на Block Wan Request(ping)?
UPD
Попытался сделать и с ppp0 как написал выше, так же на всякий случай проверил eth2 в апстриме, ничего не помогает, что то делаю не так...подскажите плиз как нужно сделать правильно)