Rlx linux user warn igmpproxy

diablero’s homepage

Через тернии к звездам

Как я iptv за nat пробрасывал…igmpproxy

Получил задание пробросить iptv в локальную сеть за шлюз. Раньше я это делал дома, просто обновив прошивку роутера и установив галочку multicast в положение enable.

На этот раз условия были иными, а именно:

  • Шлюз на debian 6.0.4 squeeze 2.6.32-5-686;
    • isc-dhcp-server, bind9, iptables…
  • 3 интерфейса;
    • eth0 смотрит на провайдера интернет, там же идет вещание iptv 172.31.242.0/24;
    • eth1 смотрит в локальную сеть пользователя 192.168.0.1/24;
    • eth2 смотрит в другую локальную сеть, там тоже есть интернет =) 192.168.0.0/24;
  • Iptv приставка MAG250, пока одна, но положение изменится, внесу поправки в конфиг;
  • И маловажный факт, приставка со шлюзом соединена с помощью двух адаптеров D’link DHP-501AV, он конечно подпортил жизнь, но об этом в другой раз;

Прежде чем приступить к настройке нужно понять, что за зверь такой multicast, и так, маленький “ликбез”.

Существует несколько вариантов передачи пакетов в сетях tcp/ip

  • unicast, пакеты передаются одному определенному адресату;
  • broadcast, пакеты передаются всем;
  • multicast, пакеты передаются некому подмножеству адресов, входящих в определенную группу;
  • anycast, появился в tcp/ip v6, пакет передается до первого принявшего узла из некого подмножества.

Подробнее можно почитать в википедии, пока ее не закрыли =) *привет реестр сайтов

Для работы iptv использует протокол igmp, по этому нам нужно разрешить его на шлюзе и научить транслировать все это добро в локальную сеть. Будем использовать программу igmpproxy. Её нет в репозитории debian и нам придется ее собирать. Для сборки понадобится gcc и make со всеми зависимостями.

Качаем igmpproxy:

На сегодня 0.1 последняя версия, распаковываем и переходим в папку с программой:

Собираем и устанавливаем, не забываем выполнять действия от имени администратора (sudo):

Отредактируем конфигурационный файл igmpproxy

У вас он может оказаться в другом месте, например в /usr/local/etc/igmpproxy.conf

Важно выяснить с каких адресов идет вещание, для этого вооружимся программой tcpdump, она входит в стандартные репозитории debian, и если еще не установлена, то:

  • -i eth0 интерфейс который собираемся анализировать
  • -n заменяет хост ip адресом
  • -t не выводим метку времени, для удобства
  • port 1234 отображаем информацию переданную исключительно на порт 1234, порт на котором сидит igmpproxy

Посыпется информация из которой нужно выудить адреса вещания, точнее диапазон который будет переправляться к нам за nat.

Вывод будет примерно следующий:

Соответственно диапазон вещания 172.31.242.0

С полученной информацией идем редактировать конфиг, повторюсь:

Он должен иметь примерно такой вид:

В iptables нужно добавить следующие строки (все исходя из вашего плейлиста, тут описаны сугубо мои настройки)

Так же проверьте что бы были разрешены multicast, igmp и порты udp с 5242 по 5352, и порт 1235 для получения списка каналов.

Далее необходимо добавить igmpproxy в автозагрузку, напоминаю, что у меня debian. Создаем файл /etc/init.d/igmpproxy

В него записываем следующее содержание, не помню у кого украдено:

Теперь нужно проверить, включена ли поддержка multicast в ядре, для этого выполните команду :

sudo ifconfig eth0

И найдите слово MULTICAST, если есть, значит все нормально, в ином случае надо пересобрать ядро с поддержкой multicast

Все должно работать, всех благ.

6 thoughts on “ Как я iptv за nat пробрасывал…igmpproxy ”

Спасибо, а можно такой вопрос: Можно ли на дебиане IceCast посылать в сеть по IGMP – Учитывая, что кодируется в AAC CBR – пара десятков слушателей легко потянется на дохлом аплоаде ADSL… кажется.

> D’link DHP-501AV, он конечно подпортил жизнь, но об этом в другой раз
Можно уточнить, чем D’link DHP-501AV подпортил жизнь? 🙂

Добрый день.
Отличная статья.
Подскажите такая проблема при
tcpdump -i eth0 -n -t port 1234
пусто … что это может быть?

Читайте также:  Logitech webcam c905 драйвера windows 10

Источник

Помогите пожалуйста с настройкой igmpproxy

Доброго! Ребят, маюсь уже месяц с просмотром iptv через линукс сервер. Ничего не получается, уже отчаялся просто. Прощу помощи.

Схема подключения такая: провайдер — ubuntu 12.04 server (dhcp И пр.) — приставка DUNE — телевизор.

Использую igmpproxy, настройки стандартные. Вообще, все делаю как по учебнику — все маны перепробовал. В итоге телевизор видит каналы, но при включении любого из каналов пишет «подключение. » и потом просто черный экран без звука.

При запуске sudo igmpproxy -d /etc/igmpproxy/igmpproxy.conf

Готов предоставить всю необходимую информацию если нужно.

Как можно целый месяц мучать igmpproxy конфиг которого состоит из 3-х строчек? =)

А на компе,на котором убунта стоит, iptv работает? Может в самой убунте мультикаст выключен?

Лично у меня с таким конфигом работает

Где enp4s1 интерфейс со стороны провайдера.

P.S. Покажи выхлоп ip r s или route -n с убунты и еще sysctl —system

Сам не знаю как можно! Redmine настроил за пол дня со всеми пирогами, а тут — полный затуп 🙁 Хотел понять все сам: смотрел логи, запускал под -d, ловил tcpdump’ом трафик и пр. читал интернеты и искал в поисковике все что находил.. Не помогло)

Вот, пожалуйста, надеюсь поможет разобраться в чем причина:

ip r s звездочками закрыл одинаковые числа.

Далее я может чего-то не то делаю, но команда «sysctl —system» выдает ошибку error: Unknown parameter «—system»

Спасибо за внимание к моей проблеме.

Есть смысл попробовать выключить rp_filter, в /etc/sysctl.conf

Да и в altnet обычно указывается диапазон адресов провайдера.

Было добавлено, в altnet диапазон добавлен. Выхлоп не изменился:

Странно, sudo tcpdump -i eth0 -n -t port 1234 молчит как рыба.

Привет похожая проблема с igmpproxy подскажи как ты ее решил

у меня на опенвртшной прошивки решилась проблема тем что в альтнет добавил диапазон 192.168.0.0/16

Столкнулся с такой же проблемой на роутере с OpenWRT. Ошибка такая же была. Но проблему решил. Суть была в том, что телевидение у провайдера вещается по UDP на порту 1234. Так вот а у меня за роутером стоит веб/прокси/впн/etc. сервер с кучей сервисов в общем. И все порты были проброшены до него. Убрал проброс порта 1234 до этого хоста в локалке и телевидение заработало. К стати меня только с таким конфигом igmpproxy работает:

Источник

Rlx linux user warn igmpproxy

Prometey home — Интернет бизнес-класса в домашних условиях

man: IPTV через igmpproxy Debian/Ubuntu

Модератор: Rt.

man: IPTV через igmpproxy Debian/Ubuntu

Rt. » 29 ноя 2012, 12:38

Настройка igmpproxy на примере ос Debian/Ubuntu, который работает в режиме шлюза.
Необходимо иметь права суперпользователя. Используем терминал.

Интерфейсы:
eth0 — внешний интерфейс, выход в мир
eth1 — смотрит с локалку, домашнюю сеть

Во вложении:
Конфигурационный файл — igmpproxy.conf
Демон для запуска через /etc/init.d — igmpproxy

Для Ubuntu выполним авторизацию суперпользователя
Код: Выделить всё sudo su
выполним вход, введя пароль

Переходим во временный каталог, скачиваем последнюю версию igmpproxy, распаковываем:
Код: Выделить всё cd /usr/src
wget http://downloads.sourceforge.net/project/igmpproxy/igmpproxy/0.1/igmpproxy-0.1.tar.gz
tar xzf igmpproxy-0.1.tar.gz
cd igmpproxy-0.1

Кофигурируем, собираем и устанавливаем:
Код: Выделить всё ./configure && make && make install

После установки пакета, Создаем конфигурационный файл igmpproxy, открываем любым редактором (vim, nano . ):
Код: Выделить всё mkdir /etc/igmpproxy
touch /etc/igmpproxy/igmpproxy.conf
nano /etc/igmpproxy/igmpproxy.conf

Содержимое файла должно иметь следующий вид:
Код: Выделить всё quickleave

phyint eth0 upstream ratelimit 0 threshold 1
altnet 93.0.0.0/8

phyint eth1 downstream ratelimit 0 threshold 1

phyint eth2 disabled

Сообщаем ядру, что IP — форвардинг разрешен
Код: Выделить всё echo 1 >/proc/sys/net/ipv4/ip_forward

Правила для iptables
Код: Выделить всё iptables -A INPUT -d 224.0.0.0/240.0.0.0 -i eth0 -j ACCEPT
iptables -A FORWARD -p udp -d 224.0.0.0/240.0.0.0 -j ACCEPT

Теперь о способах запуска:
1) Через rc.local:
Открываем /etc/rc.local,
Перед exit 0 прописываем:
Код: Выделить всё /usr/local/sbin/igmpproxy -d /etc/igmpproxy/igmpproxy.conf 2>/dev/null &

2) Через init.d:
Создаем файл /etc/init.d/igmpproxy, выдаем права на выполнение
Код: Выделить всё touch /etc/init.d/igmpproxy
chmod +x /etc/init.d/igmpproxy

Вставляем содержимое:
Код: Выделить всё #! /bin/sh

### BEGIN INIT INFO
# Provides: igmpproxy
# Required-Start: $network $remote_fs $local_fs
# Required-Stop: $network $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Stop/start igmpproxy
### END INIT INFO

[ -x «$DAEMON» ] || exit 0

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

do_start()
<
start-stop-daemon —start —quiet —background —pidfile $PIDFILE —exec $DAEMON — \
$DAEMON_ARGS
RETVAL=»$?»
return «$RETVAL»
>

Читайте также:  Полностью свободные дистрибутивы linux

do_stop()
<
start-stop-daemon —stop —quiet —retry=TERM/30/KILL/5 —pidfile $PIDFILE —name $NAME
RETVAL=»$?»
rm -f $PIDFILE
return «$RETVAL»
>

do_reload() <
start-stop-daemon —stop —signal HUP —quiet —pidfile $PIDFILE —name $NAME
RETVAL=»$?»
return «$RETVAL»
>

case «$1» in
start)

[ «$VERBOSE» != no ] && log_daemon_msg «Stopping $DESC» «$NAME»
do_stop
case «$?» in
0|1) [ «$VERBOSE» != no ] && log_end_msg 0 ;;
2) [ «$VERBOSE» != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc «$DAEMON» «$NAME» && exit 0 || exit $?
;;
restart)
log_daemon_msg «Restarting $DESC» «$NAME»
do_stop
case «$?» in
0|1)
do_start
case «$?» in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo «Usage: $SCRIPTNAME » $
exit 3
;;
esac

прописываем в автозапуск:
Код: Выделить всё update-rc.d igmpproxy defaults

Re: man: IPTV через igmpproxy Debian/Ubuntu

Vasil » 29 ноя 2012, 17:52

На некоторых системах путь до igmproxy.conf может быть /usr/local/etc/igmproxy.conf, этот путь пишется в консоли в процессе выполнения команды make install.
Выглядит это так:

Код: Выделить всё .
test -z «/usr/local/etc» || /bin/mkdir -p «/usr/local/etc»
/usr/bin/install -c -m 644 igmpproxy.conf ‘/usr/local/etc’
.

Далее для теста
Код: Выделить всё root@gw1:/usr/local/sbin/igmpproxy -d /usr/local/etc/igmpproxy.conf
if #1 was already upstream. Cannot set VIF #3 as upstream as well.

. меняю домашнюю сетку на downstream .
Код: Выделить всё phyint eth1 downstream ratelimit 0 threshold 1
Код: Выделить всё /usr/local/sbin/igmpproxy -d /usr/local/etc/igmpproxy.conf
MRT_ADD_MEMBERSHIP failed; Errno(98): Address already in use
The source address 192.168.111.240 for group 239.255.255.250, is not in any valid net for upstream VIF.
The source address 192.168.111.102 for group 239.255.255.250, is not in any valid net for upstream VIF.
The source address 192.168.111.188 for group 239.255.255.250, is not in any valid net for upstream VIF.
The source address 192.168.111.240 for group 239.255.255.250, is not in any valid net for upstream VIF.
.

Самое интересное то, что лично у меня стартовый пакет теперь работает.

Re: man: IPTV через igmpproxy Debian/Ubuntu

Rt. » 29 ноя 2012, 19:54

Именно по этому мы создавали новый файл в /etc/igmpproxy
Возможно кому-то так удобнее, когда все в одном месте.

Re: man: IPTV через igmpproxy Debian/Ubuntu

Vasil » 29 ноя 2012, 20:01

Он создается автоматически во время установки, проще уж симлинк на него кидать, или просто внимательнее читать последние строки консоли. Лично меня очень сильно смутило, что я в mc 5 минут в каталоге /etc не смог найти папку igmpproxy, хотя помнил igmpproxy.conf что сам файл где-то существовал, пересобрал и внес корректировки постом выше.
Код: Выделить всё touch /etc/igmpproxy/igmpproxy.conf
ОС Вам скажет скорее всего «не могу создать файл, каталога то не существует».

эм? там всего 1 файл в /etc/igmpproxy
или имелось ввиду, что удобнее, что все конфиги в /etc? тогда почему не в корень /etc?

а еще пользователи скорее всего помнят, что сборные пакеты конфиги пишут в /usr/local, а rpm/deb.. в /etc — тут зависит лишь от политики партии дистрибутива вроде

в айпитейблы команда пишется или в /etc/iptables (ну в каждой ОС своя специфика) [затем сохранение и коммит] или напрямую из консоли (до первого ребута), как у Вас, только напрямую надо делать тогда опять же в /etc/rc.local до вызова igmpproxy

Re: man: IPTV через igmpproxy Debian/Ubuntu

Rt. » 29 ноя 2012, 20:11

Источник

IPTV / UDP multicast

Основные положения

Когда хост хочет начать получать широковещательный UDP трафик, то он должен принадлежать к группе «UDP multicast group». Контроль для широковещательных групп базируется на протоколе IGMP. Как только хост подписан, весь трафик для этой группы посылается ей используя broadcast L2 frames. Это важно, потому как многие роутеры направляют весь широковещательный трафик на все порты. В домашних сетях вы обычно используете Linux для управления проводными и беспроводными сетями, и если вы получаете широковещательный трафик по проводному каналу, то вы будете забивать им и беспроводные каналы тоже. К счастью в версии ядра Linux 2.6.34 есть возможность «IMGP snooping», которая отслеживает подобные ситуации и по умолчанию присутствует в OpenWrt. Таким образом у вас не будет нежелательного трафика на портах, который не были вами заданы для получения.

Ещё одним важным фактором является так же то, что из-за использования низкого уровня скорости (чтобы все клиенты могли «слушать»), а так же хитрых режимов энергосбережения – широковещание в беспроводных сетях работает не так, как этого от него ожидаешь. Зачастую широковещание бесполезно для IPTV .

Читайте также:  Mac os альтернатива dock

Решение

Благодаря «IGMP snooping», утилита igmpproxy больше не должна создавать проблемы в беспроводных сетях. Теперь вы можете одновременно запускать обе утилиты igmpproxy и udpxy.

Проверьте, что поддержка «IGMP snooping» присутствует в вашей прошивке OpenWrt и включена!

Если команда выдаст сообщение содержащие « No such file or directory », то прошивка скомпилирована без поддержки «IGMP snooping» и просмотр IPTV затормозит вашу беспроводную сеть.

Если файл существует, то вывод команды выдаст либо « 1 », либо « 0 ». Если выдается « 1 », то ничего делать не надо, а если « 0 », то для включения «IGMP snooping» в файл /etc/config/network , в конфигурации интерфейса «lan», необходимо добавить строку:

Примечание: В версии OpenWrt Attitude Adjustment 12.09, «IGMP snooping» по умолчанию включен, поэтому никакие изменения в /etc/config/network для OpenWrt AA 12.09 не нужны! Однако начиная с ревизии r36463, «IGMP snooping» по умолчанию отключен и для его включения требуются вышеупомянутые действия.

IGMP proxy

Установка igmpproxy

Выполните команды устанавливающие igmpproxy:

После установки пакета, необходимо отредактировать файл конфигурации /etc/config/igmpproxy :

Настройки Firewall

Запуск igmpproxy

После добавления правил, необходимо перезапустить фаервол, добавить igmpproxy в автостарт и естественно запустить сам igmpproxy. Выполните следующие команды:

В дальнейшем igmpproxy будет сразу стартовать автоматически в процессе загрузки роутера.

Проверка сервиса igmpproxy

При отсутствии строки “/usr/sbin/igmpproxy /var/etc/igmpproxy.conf”, отладка сервиса из командной строки

В случае падений сервиса, можно добавить в cron команду

Подсети провайдера из которых идет вещание

Если вы не уверены, что надо написать в строках list altnet файла конфигурации /etc/config/igmpproxy , то закомментируйте эти строки и посмотрите на вывод igmpproxy в логе роутера. Пытайтесь после запуска igmpproxy подписываться на какие-либо каналы с помощью VLC или каким-нибудь другим клиентом (проигрывателем). Если в файле конфигурации не будет хватать сетей, то вы увидите в логе, что-то типа: « Warn: The source address 10.254.16.66 for group 233.32.240.222, is not in any valid net for upstream VIF ». Адрес, указанный после source address необходимо прописать в list altnet файла конфигурации /etc/config/igmpproxy . В случае нескольких адресов, прописать соответсвующую маску.

Для универсальности можно разрешить igmpproxy слушать все возможные адреса, прописав

Однако в этом случае возможна нестабильность.

Также следует учитывать, что значение 0.0.0.0/0 поддерживается начиная с ревизии r40729. На старых ревизиях igmpproxy откажется запускаться с данным значением, выдав ошибку: « The bits part of the address is invalid : 4286488 ».

udpxy

Альтернативным путем, который позволяет получить доступ к широковещательным UDP потокам, является утилита udpxy. Работает довольно хорошо, как на проводных, так и на беспроводных соединениях.

Установка udpxy

Выполните команды устанавливающие udpxy:

После установки пакета, возможно вам понадобится отредактировать стартовый скрипт /etc/init.d/udpxy в соответствии с вашими требованиями. Вас должна интересовать только строка OPTIONS=“-T -S -p 4022” . Вы можете ее оставить так, как она есть, но если вас что-то будет не устраивать в работе udpxy, то вы можете изменить ключи для запуска udpxy в соответствии с руководством по использованию данной утилиты.

Пример изменения стартового скрипта /etc/init.d/udpxy

Настройки Firewall

Для того, чтобы udpxy мог работать с IGMP, вы должные добавить соответствующие правила в файл /etc/config/firewall :

Запуск udpxy

После добавления правил, необходимо перезапустить фаервол, добавить udpxy в автостарт и естественно запустить сам udpxy. Выполните следующие команды:

В дальнейшем udpxy будет сразу стартовать автоматически в процессе загрузки роутера.

Теперь когда вы захотите получить доступ, скажем, к udp://@239.64.64.58:1234 , то вы должны указать своему проигрывателю соединиться с адресом http://192.168.1.1:4022/udp/239.64.64.58:1234 . В данном примере, IP -адрес 192.168.1.1 является адресом вашего роутера в локальной сети.

Примечание по совместному использованию igmpproxy и udpxy

Если вы планируете использовать одновременно igmpproxy и udpxy, то в файле конфигурации фаервола – /etc/config/firewall у вас в итоге должно быть два правила:

  • Last modified: 2017/10/30 04:09
  • by spb

Self-registration in the wiki has been disabled.
If you want to contribute to the OpenWrt wiki, please post HERE in the forum or ask on IRC for access.

Except where otherwise noted, content on this wiki is licensed under the following license:
CC Attribution-Share Alike 4.0 International

Источник

Оцените статью