В свое время когда я купил роутер MikroTik, передо мной кроме базовой настройки инета встала задача обеспечить работу IPTV, до того момента у меня был установленный Ростелекомом D-link. Сама базовая настройка инета на микротике заняла у меня примерно 10 минут, а вот с IPTV пришлось повозиться. Все мануалы прочитанные мной тогда не учитывали многих моментов, до которых я дошел расковыряв настройки многострадального D-link-а и без которых работать в данной схеме ТВ нормально не будет. В этой статье я хочу обозначить полученную мной универсальную инструкцию в данной ситуации.


В первую очередь обновим прошивку до последней. Подключаемся к нашему роутеру через Winbox, идем в [System]->[Packages] -> [Check for updates]. Если вышла более новая версия Routeros чем установлена у вас на девайсе, жмем Download & Install после чего новая версия будет скачана и маршрутизатор уйдет в перезагрузку.

image

После выполнения данных действий идем сюда и выбираем пакеты которые нужно загрузить для вашего устройства, в моем случае это haP series и выбираю я extra packages для текущей версии (6.43.4 на момент написания статьи).

image

Будет скачан архив из которого нужно будет распаковать файл multicast, открыть в winbox пункт files и перетащить распакованный нами файл прямо туда. После чего необходимо перезагрузить наш маршрутизатор ( идем в [System]->[Reboot]).

image

После перезагрузки в разделе Routing должен появиться пункт IGMP Proxy, если этого не произошло проверяем прошлые шаги — нужный ли пакет мы ставили ( для того ли девайса скачали, версии прошивки). В случае успеха идем дальше.

image

В IGMP Proxy на первой вкладке щелкаем знак [+] для создания так называемого Upstream. В пункте interface выбираем порт куда у нас вставлен шнур от провайдера, даже в случае если вы у вас используется PPPoE соединение выбираем именно физический порт, это очень важный момент. Помечаем галочку Upstream и в Alternative Subnets выставляем 0.0.0.0/0 и жмем Ок. Создаем второе правило для Downstream. В interface выбираем All, галочку upstream не ставим, больше никаких действий тут не требуется, просто жмем ок и все.

Следующим шагом будет настройка файрвола. Идем в [IP]->[Firewall] и [+], cоздаем новое правило Chain->forward, protocol->udp, In interface-> ether1 (порт, в который подключен кабель провайдера). Action->accept.

image

Создаем второе правило для IGMP. Цепочка также остается forward, protocol-> igmp, In interface-> ether1, Action->accept. Перетаскиваем созданные правила выше запрещающих.

Далее нужно блокировать прохождение мультикаст — траффика в беспроводную сеть. Идем в [Bridge] ->вкладка Filters -> [+]. Выбираем цепочку Output, out. Interface -> wlan1 то есть нашу нужную беспроводную сеть. На вкладке Advanced в packet type выбираем multicast а на вкладке Action назначаем действие drop, то есть запрет. Не забываем нажать ок чтобы сохранить настройки.

image

image

image

И тут пожалуй настает самый важный момент, если у вас интернет подключение идет через PPPoE, то необходимо на физический интерфейс куда подключен кабель от провайдера добавить айпишник 1.0.0.1 с маской 30 бит. В этом кстати, и заключалась проблема когда я первый раз настраивал микротик, без этого айпишника ничего не работало, а то что именно его нужно вбить я выяснил открыв настройки D-link-а. Идем в [IP]->[Adresses] и [+] и добавляем следующие настройки. В случае если используется прямое подключение без поднятия каких-либо тоннелей ( называют — IPoE), то предыдущих действий будет достаточно и данный пункт пропускаем.

image

Обращаю внимание на очень важный момент, после всех проделанных действий необходимо перезагрузить приставку если она была у вас включена и уже потом проверять результат настроек. В случае возникновения проблем в первую очередь советую проверить правила в файрволе.

У оператора может также быть задействована схема с использованием VLAN, в таком случае нужно на порту в который у вас подключен шнур от провайдера создать саб-интерфейс с vlan-ом передающим iptv, выяснить его номер можно попробовать через техподдержку. Идем в [interfaces]->[VLAN] и нажимаем [+] для создания нового, указываем его имя, оно не принципиально и нужно нам для удобства администрирования, VLAN ID же нужно указывать тот который дает провайдер, к примеру возьмем 234 и в interface порт в который подключен кабель провайдера. Жмем ОК.

image

Затем создаем новый бридж и добавляем туда созданный VLAN и порт в который подключена ваша приставка, предварительно этот порт нужно удалить из другого бриджа если он в каком либо задействован.

image

image

В свойствах самого бриджа рекомендую выставить STP в none при возникновении проблем.

В принципе я описал достаточно подробную инструкцию по данной теме. На этом все. Если есть какие либо вопросы и замечания пишите в комменты, готов ответить.

Комментарии (32)


  1. easty
    27.01.2019 22:07

    На самом деле на физическом интерфейсе надо поставить получение по dhcp без днс и шлюза по умолчанию. Так будет правильнее для верной работы мультикаста.


    1. easty
      27.01.2019 22:19
      +1

      Ну и есть вариант без прокси. Покинуть трафик с физ интерфейса бриджом до приставки. Она уже сама все получит и разберётся.


      1. Henry7
        27.01.2019 22:26
        +2

        Это слишком просто, на статью хабра не хватит.


      1. Chupaka
        28.01.2019 09:50

        А если приставка не на отдельном порту? Или вообще на вайфае?


        1. NickSin
          28.01.2019 11:19

          Зачем вообще передавать мультикаст по вафле на приставку? Он же полностью забьет канал. Ни одно другое устройство не будет иметь нормальной скорость на таком коннекте. Хотя если юзать Multicast Helper, то ситуация будет лучше. Хотя мне не особо помогло. Возможно прямолинейности рукам пока не хватает)


          1. Chupaka
            28.01.2019 11:45

            Не у всех проводов хватает :) Периодически наблюдаю на форуме про одного минского провайдера вопросы о подключении приставки по wi-fi.


          1. trublast
            28.01.2019 14:13

            С чего это мультикаст забьет канал? Допустим, видеопоток ~5-10 Мбит (это FullHD уже). Полоса wifi сейчас позволяет что на 2.4, что на 5ггц выдавать далеко за 100мбит. Конечно от зашумленности и эфира зависит, но тем не менее. Неужели у вас ноутбук, подключенный по wifi выдает меньше 10мбит? Чем приставка хуже?
            В эфир что уникаст, что мультикаст по wifi вещается широковещательно, то есть забивает полосу.


            1. Chupaka
              28.01.2019 15:27

              IP-юникаст в вайфае передаётся wifi-юникастом, с подтверждением получения. IP-мультикаст от от клиента к точке доступа передаётся wifi-юникастом, а вот от точки доступа к wifi-клиенту — wifi-бродкастом, без подтверждения передачи. Для увеличения надёжности передачи без подтверждения канальная скорость wifi при передаче мультикаста снижается до минимума (6 mbps для a/g?).

              Как результат (дальше цифры сравнительные в идеальных условиях, просто иметь представление о порядке масштабов катастрофы) — если у вас поток мультикаста 5 Мбит/с, то он занимает 83% эфирной полосы на скорости 6 Мбит/с. Остаётся 17% эфира, что на канальной скорости в 150 Мбит/с составляет 25 Мбит/с. Вот так от 5 Мбит/с мультикаста на ровном месте теряется 125 Мбит/с «хорошего» канала.

              Как ещё одно следствие — если у wifi-оборудования для беспроводного p2p-моста нет тонких настроек для мультикаста (вроде Multicast Helper у MikroTik RouterOS), то рекомендуется настраивать так, чтобы мультикаст шёл от клиента к точке доступа, а не наоборот. Тогда мультикаст не будет давать таких больших просадок трафика.


              1. trublast
                28.01.2019 15:38

                Чуть ниже в комментариях видел уже ваши выкладки на предмет того, что скорость передачи WiFi понижается для отправки broadcast пакетов. Это для меня стало открытием (мне кажется, скорость передачи никак не связана с типом отправляемого пакета, иначе бы были постоянные «провалы» при отправке тех же arp who has и т.д.), и беглый гуглеж не дал ничего полезного. Вернее встречал аналогичные комментарии в духе «Real multicast is a form of broadcast at layer-2, and Wi-Fi can do that (send to a multicast group instead of individual unicast MAC addresses), but you are limited to the lowest available speed on the WAP», но без объяснения, почему так.
                Не могли бы дать ссылки на источники?


                1. trublast
                  28.01.2019 15:50

                  сам себе отвечу: тут немного разжевано


                1. Chupaka
                  28.01.2019 16:06

                  Не то, чтобы источник, просто первый результат из Гугла: gtacknowledge.extremenetworks.com/articles/How_To/How-to-use-Wireless-Radio-Multicast-Settings-on-the-ExtremeWireless-solution, первый абзац в Additional notes

                  UPD: вот теперь и я обещаю обновлять комментарии перед ответом…


    1. xRay
      27.01.2019 22:36

      Сейчас уже не помню точно, но как я помню Ростелеком не давал по dhcp адрес на WAN пока не поднята PPPoE сессия.


      1. NickSin
        28.01.2019 11:20

        Это если подключение по Docsis. Если PON проведён, то там от коммутатора сразу все идет без PPPoE.


  1. xRay
    27.01.2019 22:34

    Решал эту же задачу на OpenWrt для случая PPPoE от Ростелеком на WAN.

    Для хождения мультикаст-пакетов добавляется маршрут на 224.0.0.0/4 (возможно он отличается в разных регионах).
    И как вы верно подметили на WAN-интерфейсе нужен IP адрес.

    Мне кажется, могу ошибаться, у вас не учтен случай пропадания и появления интернета на WAN-интерфейсе и соответственно тогда произойдет сброс таблицы маршрутов. Что бы это учесть я использовал скрипт на событие поднятия WAN-интерфейса /etc/hotplug.d/iface/40-myroute.
    Содержимое файла 40-myroute

    #!/bin/sh

    [ "$ACTION" = ifup ] && {
    #if [ "${$DEVICE}" = «pppoe-wan» ]; then
    logger -t myroute ADD Device: $DEVICE / Action: $ACTION
    route add -net 224.0.0.0/4 dev eth1 metric 1
    echo «1» > /sys/devices/virtual/net/br-lan/bridge/multicast_snooping
    #fi
    }

    Т.к. для IPTV на WAN-интерфейсе нужно что был IP адрес.
    Я использовал вот такой финт ушами
    config interface 'wan'
    option ifname 'eth0.1'
    option proto 'static'
    option ipaddr '192.168.2.2'
    option netmask '255.255.255.0'
    option bcast '192.168.2.255'

    config interface 'wpppoe'
    option ifname 'eth1'
    option proto 'pppoe'
    option username 'пользователь'
    option password 'пароль'
    option keepalive '5'

    wan — это наш wan с статическим адресом для IPTV, wpppoe — это наше PPPoE соединение.

    igmpproxy — использовал вместе с udpxy. От igmpproxy отказался т.к. udpxy можно и через Wi-Fi смотреть (IPTV плеер должен поддерживать проксироdание через udpxy).


  1. Chupaka
    27.01.2019 23:36

    Вешать на роутер адрес DNS-сервера от CloudFlare? Вы реально не нашли более полезного применения для него?


    1. trublast
      28.01.2019 14:22

      На самом деле на интерфейс можно повесить любой адрес, чтобы "от его имени" отправился ip-igmp пакет и на коммутаторе провайдера засветился. То что выбран 1.0.0.1 — это как я понял копипаста с китайской прошивки длинка(о чем в статье и написано). Не раз видел, что 1.0.0.0/8 сеть используют как приватную, не только китайцы, так что использовать ДНС клаудфларе как раз и будет "так себе решением", непонятно же через что трафик побежит не вами контролируемое. Правильно было бы написать 10.11.12.13 или что-то подобное из 10.0.0.0/8


      1. Chupaka
        28.01.2019 15:11

        Как «на самом деле» — это я отлично понимаю. А вот подавать плохой пример в туториалах — это уже другое. Целенаправленное вредительство, хоть, возможно, и неосознанное.
        Да, можно выбрать любой адрес из 192.168.0.0/16, 172.16.0.0/20, 10.0.0.0/8 или 100.64.0.0/10 — но всё равно автор умудрился промахнуться :)

        По поводу 'использовать ДНС клаудфларе как раз и будет «так себе решением»' — расскажите это всем, кто уже оценил его скорость. Не надо обсуждать, как плохо бывает, когда криворучки используют чужие диапазоны, CloudFlare уже давно писал об осознанности своего выбора. Надо хотя бы сегодня начинать делать по-нормальному.


    1. simplix
      28.01.2019 23:30

      Эта инструкция не идеальна, но автор позаботился о том, чтобы сделать её своими силами. Есть перспективы, поэтому я и выдал приглашение.
      Знаю вас как отличного специалиста по микротикам и хотелось бы видеть ваши статьи здесь, как делать правильно со всеми нюансами. Если вы решитесь переступить барьер, который называется «всё можно нагуглить», статьи будут первоклассными.


  1. Chupaka
    27.01.2019 23:39

    Далее нужно блокировать прохождение мультикаст — траффика в беспроводную сеть

    Я понимаю, что пошаговые инструкции — они такие пошаговые, но это ведь хабр — хотя бы пару слов напишите о том, зачем это делать. А то при наличии IGMP Snooping'а и Multicast Helper'а данный шаг вызывает поднятие брови.


    1. xRay
      28.01.2019 09:17

      Wi-Fi от мультикаст-потока просто падает, если не использовать IGMP Snooping.
      IGMP Snooping поддерживает MicroTik? OpenWrt поддерживает.


      1. Chupaka
        28.01.2019 09:46
        +1

        Просто падает на OpenWRT?
        Под "наличием IGMP Snooping'а", естественно, подразумевалось его наличие в RouterOS, а не в энциклопедиях по сетевым технологиям. Что значит "просто падает"? Для передачи бродкаст-пакетов (коими являются мультикастовые пакеты) вайфай переключается на самую низкую скорость — возможно, вы это и имеете в виду под "просто падает" (удивительно технический термин!). Но тут на сцену выходит RouterOS Multicast Helper — он преобразует мультикастовые пакеты в юникастовые (с подтверждением приёма), поэтому всё продолжает работать на обычных скоростях.


  1. sigmatik
    28.01.2019 00:26

    Омг, как все сложно. Год назад этот вопрос решал простым объединением портов в мост и отключением rstp на нем. Что изменилось сейчас ?)


    1. xRay
      28.01.2019 09:19

      С PPPoE?


    1. Chupaka
      28.01.2019 09:48

      Расскажите поподробнее. Объединение портов в мост и навешивание на мост адреса локалки? Что-нибудь делали для того, чтобы пакеты из локалки не утекали к провайдеру? А то некоторые провайдеры могут за такое и порт заблокировать.


      1. DaemonGloom
        28.01.2019 10:46
        +1

        Объединялся порт WAN с LAN1, в который и подключалась приставка. С локальной сетью эти пакеты никак не смешивались — для неё оставались прочие порты. Впрочем, такая конструкция работала не только на микротиках, но и на бытовых роутерах.


        1. Chupaka
          28.01.2019 10:59

          Ну, это слишком простой случай. В статье более общее решение :)


          1. kolu4iy
            28.01.2019 11:48

            … которое безусловно создаёт нагрузку на процессор, в то время как бридж работает на уровне встроенного свитча. Любопытно было бы посмотреть на загрузку процессора при просмотре HD-канала.
            Кстати, побочкой является «залипание» картинки на приставке при переключении каналов: дело в том, что отписывание от предыдущего потока может и не пройти мгновенно, и через snooping (который делается посредством ЦПУ) пойдут несколько потоков мультикаста. Свитч подобную красоту выдерживает без малейших проблем… В общем надо очень точно знать, зачем включается igmp-snooping и трафик приставки пробрасывается во внутреннюю сеть.


            1. Chupaka
              28.01.2019 13:55

              Ну, про дополнительную нагрузку на процессор — тут не поспоришь. Но насколько она значительная… Вот включил три HD-канала, суммарно 20 Мбит/с. Скриншот сделан в тот редкий момент, когда строчка igmp-proxy изредка появляется — её практически нет в профайлере.

              Скрытый текст


              1. kolu4iy
                28.01.2019 15:19

                Про залипание — это как раз в те моменты, когда не хватает пропускной способности ЦПУ. У вашего устройства с этим всё в порядке, вы ничего и не заметите. На более слабых устройствах при использовании igmp snooping такое бывает, не раз нарывался.
                Кстати, ради интереса: остановите полностью IPTV и оцените нагрузку на процессор — у самого CPU (не igmp-proxy) цифры понизятся? Не сразу после остановки, а примерно через минуту.
                Да, разговор именно про fast leave идёт.


                1. Chupaka
                  28.01.2019 15:37

                  У вашего устройства с этим всё в порядке, вы ничего и не заметите

                  Спасибо. Только это несчастный RB951-2n, который на MUM'ах раздавали всем просто так :) Какие ещё [значительно] более слабые устройства вы хотите делать основным шлюзом к провайдеру и насколько это адекватное решение?


                  Без нагрузки в виде трафика процессор, естественно, простаивает. Но нагрузка в виде пары десятков мегабит обычного интернет-трафика с котиками даёт сравнимую нагрузку на CPU.


      1. sigmatik
        28.01.2019 11:25

        В мост объединяются порт в который смотрит кабель провайдера и порт в который смотрит приставка, на него же вешается пппое, чтобы не блокировался на стороне провайдера, отключается rstp. Мог что то забыть, но вроде это все.


  1. Enchi
    29.01.2019 13:37

    А после обновление прошивки — перезагружаемся еще раз для обновления загрузчика, если в System — Routerboard — Settings стоит Auto Upgrade. Если не стоит — ставим галочку, нажимаем Upgrade и перезагружаем роутер.