среда, 27 мая 2015 г.

Проброс DLNA в удаленную сеть

Предистория:

Итак, появилась необходимость дать возможность просматривать фильмы с моего сервера на телевизоре. Ну казалось бы, поднимаем DLNA, например miniDLNA и проблема решена. Так и было, пока не появилась нужда дать такую же возможность родителям, которые живут в другом месте, и ставить им там сервер или простенький nas не совсем правильный путь. Было принято решение объединить наши сети путем туннелирования траффика и дать доступ к моей фильмотеке.

Подготовка:

У родителей я уже давно поставил отличный роутер, с которым я давно работаю, и доверяю - Mikrotik 951Ui 12HnD. Кто не знаком с этим великолепным маршрутизатором, советую познакомиться. Ценовая политика позволяет подобрать решения как  для дома, так и для офиса. При этом получаем функционал, как у дорогих enterprise решений.
У меня в квартире так же стоял Mikrotik, лишь с одним отличием, у меня были все порты гигабитные. Я не долго думая поднял pptp туннель и тут началось...

Первые проблемы:

В отличии от классического способа передачи потокового аудио и видео сегмента данных DLNA несколько отличается. И это сразу стало понятно, после того как я посниффил траффик. Через PPTP некоторые запросы пробегали, некоторые нет. После того как я изучил дамп траффика, пришел к следующим выводам:
  1. Со стороны сервера мы должны увеличить ttl траффика от DLNA сервера, я увеличил на 100.
  2. Установить пакет multicast на микротики, и включить PIM на интерфейсы туннеля.
  3. Не забываем прописать маршруты до локальных сетей за туннелями.
  4. Со стороны сервера DLNA прописываем маршрут 239.255.255.250 в качестве шлюза указываем туннельный интерфейс.
Казалось бы, все предусмотрел, я на телевизоре родителей увидел свой DLNA сервер, подключился к нему, открыл фильм, и тут я успел увидеть 2 кадра и все. Он просто отключился от сервера. Я начал заново, пробежался по всей конфигурации на обоих маршрутизаторах, грешил на фаервол, на все. Потом опять взглянул на дамп траффика и увидел то самое.."don't fragment". И тут меня осенило! Размер пакета превышает MTU, который нам предоставляет PPTP, а фрагментировать нельзя! К сожалению в настройках miniDLNA сервера я не смог найти возможность ограничить длину пакета.

Победное решение:

В итоге самый простой IP-IP туннель, но сталкиваемся с проблемой динамической адресации от провайдера, если у вас на обоих концах статика, вам повезло!

Еще можно попробовать ограничить mtu на интерфейсе, к которому подключен NAS. В таком случае пакеты будут заведомо с небольшим MTU, который пролезет в любой туннель.


Дополнение:

Не стоит забывать что просмотр фильмов - это нехилая нагрузка на сеть в плане ширины канала. Когда в пределах локальной сети, не страшно, а вот между сетями, когда ширину канала контролирует провайдер...В общем всем советую включить QoS, отдать приоритет своему серверу, и любым подключениям к нему, а мы можем и подождать дополнительных 10 мс для открытия странички =)
Если кого интересуют подробности, пишите, помогу с настройкой, поделюсь конфигами.

14 комментариев:

  1. Перерыл уже почти весь гугл на русском языке и наткнулся на эту статью.У меня задача попроще,но знаний не хватает.Постараюсь описать проблему как можно понятнее.Итак,к делу.
    Идея в том,чтобы телевизор,подключенный к роутеру-мосту,видел встроенный DLNA-сервер основного роутера RT-AC68U и мог через него воспроизводить видео и т.д и т.п.
    Есть два роутера:ASUS RT-AC68U(основной) с DLNA и USB HDD 500Гб с прошивкой от Merlina 378.55 и DLINK DIR-620.A1(мост) с прошивкой 2.5.0,и два телевизора LG:первый со SmartTV подключен по wi-fi к RT-AC68U и ,естественно,видит его DLNA-сервер и воспроизводит всё без проблем.А второй просто со входом для витой пары для воспроизведения медиа контента из домашней сети.Он стоит в другой комнате от основного роутера.Чтобы к телевизору не тянуть провод через две комнаты и не сверлить стены,он подключен к домашней сети по витой паре через роутер DIR-620,работающий в режиме моста (w-fi клиент,если быть точным).
    На основном поднят VPN PPTP-сервер и мост подключен в качестве VPN PPTP-клиента+статический IP.
    Провайдер Билайн с динамическим L2TP и есть привязка к DNS-серверу.(Если это важно).
    Сейчас телевизор подключен с автоматическими параметрами подключения к роутеру-мосту и видит 1 DLNA от винды с ошибкой при входе в него,но мне он даром не нужен хоть с ошибкой,хоть без.
    Возможно надо прописать какие-либо маршруты на роутерах,но я не знаю какие.
    Когда шаманил с вариантами пробросов маршрутов и ручной настройкой подключения ТВ к роутеру,то на каком-то варианте(уже не помню что и где я там понавыставлял) телевизор УВИДЕЛ!!! 2 DLNA-сервера:первый-ОТ ОСНОВНОГО РОУТЕРА и второй-штатный виндосовский(Windows 10)от домашней группы ,но при входе в любой из них пишет «неизвестная ошибка.нет файла.»,хотя в обоих лежит как минимум фильм 1.4гб avi.
    ASUS RT-AC68U: IP-192.168.1.1 Маска подсети-255.255.255.0
    DLINK DIR-620: IP-192.168.0.1 Маска подсети-255.255.255.0
    Прилагаю скриншоты настроек для наглядности:https://yadi.sk/i/g4ZC_UzYiD28W
    Если нужны ещё какие-то данные,то уточните какие.
    Если автор статьи найдёт время на ответ,то пожалуйста помогите развёрнуто,а то 4 пункта в вышеизложенной статье помогут наверно только тем,у кого база знаний больше,чем у обычного пользователя.
    P.S. почта:kron1249@yandex.ru

    ОтветитьУдалить
    Ответы
    1. Ну давайте решим вашу проблему. Для начала скажите, правильно ли я понимаю, что у вас дома между роутерами поднят PPTP ? Если да, то зачем?

      Удалить
    2. Да,ВЫ правильно поняли - два роутера в одной квартире. Да,PPTP VPN поднят.Но это один из кучи вариантов с подключениями,котороые я перепробовал пытаясь решить свою проблему,тыкая пальцем в небо..Если не нужен PPTP между роутерами,то уберём.Можно конечно просто оставить как wi-fi клиент и всё,Я для этого к Вам и обратился,чтобы подсказали как надо правильно настроить,а не спрашивали почему настроено так а не иначе.Ответ:потому что я сам не знаю зачем он(PPTP) мне нужен внутри домашней сети(а вдруг поможет-на русское авось).
      Я по профессии плотник-уровень знаний о настройке роутеров как у среднестатистического плотника.Могу профессионально по нему кувалдой шандарахнуть,когда мозг совсем закипит от этих настроек(шучу).В моих силах начальная настройка роутера-чтобы комп подключался к интернету.
      Давайте начнём сначала,как будто второй роутер никак не настроен вообще.(Сейчас он настроен просто как wi-fi клиент).

      Удалить
  2. Может Вам будет проще и быстрее посмотреть все настройки роутеров через Team veiwer и Skype(Kron352) и решить вопрос за несколько минут?

    ОтветитьУдалить
    Ответы
    1. Для плотника весьма недурные познания...Я вас добавил в скайп. Но пообщаться удастся я думаю только завтра.

      Удалить
    2. Здравствуйте! Тоже наткнулся на Вашу статью, как практически единственный "оазис" в моем вопросе по DLNA в разных сетях в "пустынях" рунета )) Жалко только непосредственно Ваше решение мне не подходит, ибо другие роутеры, но чувствую Ваша высокая квалификация в данном вопросе может явно помочь, если окажете честь! )
      В общем есть 2 роутера D-link DIR-825/AC в разных географических локациях. Они умеют организовывать туннели, но только в IPSec виде (да и с настройками там не особо развернешься). В итоге можем получить 2 подсети типа 192.168.10.0-24 и 192.168.20.0-24 которые будут видеть друг друга. В одной из них DLNA-сервер на базе NAS, в другой Телевизор, который из-за ограничений DLNA (как выяснилось) не способен увидеть его в другой подсети. Можно ли в моем случае их все-таки как-то заставить "прозреть" друг на друга или моя мечта на выброс?

      Удалить
    3. Помогу, чем смогу с радостью. Учитывая что у вас IPSec, вполне может получиться. Просто читая мою статью заменяйте IPIP на IPSec. Правда тут конечно есть ряд нюансов..можно ли у вас увеличить TTL на роутерах, я к сожалению не знаю. С одной стороны там тот же линукс, с другой стороны там все зарезано веб интерфейсом. Так что либо в вашем случае ставить какую нибудь кастомную прошивку, вроде от Олега раньше были. Либо менять роутеры на более профессиональные - типа микротик. Вопрос стоит ли оно тех денег. =)

      Удалить
    4. эмм.. давайте пошагово все будем решать - я открою настройки своего роутера и будем с Вами, если Вы не против, уточнять имеющиеся параметры на обоих устройствах, чтобы достичь желаемого, но для этого нам лучше переместиться в какой-нибудь мессенджер типа скайпа, что скажете?

      Удалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. День добрый, помогите пробросить DLNA в даленную сеть через mikrotik

    ОтветитьУдалить
  5. Есть два роутера Mikrotik, один поднят на ESXi (это ближний) интернет видит по протоколу PPPoE с динамическим IP.
    Другой (дальний) RB-750 работает по DHSP, но подключена услуга белый IP со статикой. Оба роута завязаны в одну сеть по L2TP соединению обе сети видят друг друга. Также на ESXi поднят DLNA сервер, который вещает в локальную сеть, в ближней сети все работает превосходно, но устройства на дальнем Роуте его не видят.Помогите пожалуйста.

    ОтветитьУдалить
    Ответы
    1. Здравствуйте, можете привести экспорт настроек с обоих микротиков на pastebin.com, 2-мя ссылками. Я посмотрю.

      Удалить
  6. Добрый день статья отличная. Но я так и не понял что вы сделали чтобы увас завелось. У меня задача в данный момент практически такая же, только с 3я точками. Все на микротах, RB951 гигабитный и сотка + Hap mini, за гигабиткой DLNA. В данный момент поднят GRE over IPSec.

    ОтветитьУдалить
  7. Сергей, такаде задача ровно, итоде микроты. Dlna в удаленной сети не видит, тока smb. Помогите настроить, не смог справиться по вашей инструкции. Спасибо. Мой скайп alex_petr911

    ОтветитьУдалить