Перейти к содержимому
Калькуляторы

Трансляция мультикаст адресов(multicast NAT)

Беру мультикаст у нескольких поставщиков iptv. Их адресация пересекается, соответственно нужно сделать трансляцию одного мультикаст ip в другой.

Пока есть две мысли как это сделать:

- Сервер, который делает подобие NAT. Не знаю умеют ли традиционные iptables или pf такое делать?

- Сервер на котором стоит vlc и тупо принимает один мультикаст, а вещает другой.

 

Может быть есть более элегантные решения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуйте в PF:

pass in quick on ng1 dup-to (em0 172.16.0.3) from any to 255.255.255.255

 

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

Вообще, для мультикаста в ядре свои функции, я особо в это не вдавался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуйте в PF:

pass in quick on ng1 dup-to (em0 172.16.0.3) from any to 255.255.255.255

 

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

Вообще, для мультикаста в ядре свои функции, я особо в это не вдавался.

А где в вашей строчке указывать destination ip мультикаст группы и ip в который их nat-ить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

255.255.255.255 - куда предназначался пакет

172.16.0.3 - куда его переслали

 

если не поможет так, то ещё можно ng_path раскурить, на предмет замены IP адреса в пакете.

И rdr из Pf тоже попробовать стоит.

В моём случае в пакете адрес 255.255.255.255 не изменялся, но приходилось указывать валидный адрес назначения.

Что происходило с маком я не знаю.

 

Для мультикаста IP мапится в мак назначения, потому возможно что придётся всё таки править пакет, если ни dup ни rdr из PF не помогут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

C pf все ясно. А может быть у кого-нибудь найдется более элегантное решение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Коллеги из тв отдела, говорят что такого оборудования как грязи, по русски это стриммер. Вам нужен из IP в IP, это относительно дешево.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну можете за пару вечеров написать свою ng ноду, которая и будет менять в пакете ip и мак.

Там кода строчек на 20, остальное готовый шаблон ноды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Коллеги из тв отдела, говорят что такого оборудования как грязи, по русски это стриммер. Вам нужен из IP в IP, это относительно дешево.

Интересный вариант. Может быть ваши коллеги посоветуют хотя бы одну модель? Чтоб я мог по образу и подобию найти нужное мне. Самосотоятельное гугление дает мало результатов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Из дешевого dektec, - pci карта в компьютер, из дорогого prostream.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

можно попробовать iptables netmap - вроде бы не ругается при попытке заставить его кушать -p udp -j NETMAP для мультикастовых адресов, но проверить правда нечем.

iptables -t mangle -A PREROUTING -p udp -s 234.5.2.0/24 -j NETMAP --to 234.5.3.0/24

 

.. хотя что то мне подсказывает что затея с натом изначально обречена на провал - кто то ж должен igmp запросы обрабатывать

Изменено пользователем darkagent

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iptables -t mangle -A PREROUTING -p udp -s 234.5.2.0/24 -j NETMAP --to 234.5.3.0/24
И через какой интерфейс по вашему это уйдёт?

полагаю полетит в дефаулт гейтвей.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я напишу ноду для замены ip вы готовы её протестировать?

 

И что с pf - не получилось dup-to или не пробовали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iptables -t mangle -A PREROUTING -p udp -s 234.5.2.0/24 -j NETMAP --to 234.5.3.0/24
И через какой интерфейс по вашему это уйдёт?

полагаю полетит в дефаулт гейтвей.

задать интерфейс не проблема:

-i eth0

-o eth1

если пожелаете принять на eth0 и отдать в eth1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я напишу ноду для замены ip вы готовы её протестировать?

 

И что с pf - не получилось dup-to или не пробовали?

Я пока еще ничего не пробовал. Я лишь рассматриваю возможные варианты решения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По iptables не подскажу, а вот решение с vlc поругаю =) так делать однозначно не стоит. Мы тестировали транскодинг

мультикаст каналов через него, работает нестабильно, как под Win так и под Linux. Наверное, лучше будет поискать

аппаратное решение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ничего не получиться при простом изменении мультикаст адресов в заголовках , т.к. join пакеты в теле имеет поле к какой группе джониться.

Но в потоке не только UDP пакеты бегают - mschedrin я давал захват на форуме.

 

ИХМО надо состыковаться с автором IGMPPROXY на счет возможности допилки под ваши задачи.

Изменено пользователем Tsvetkov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

eyewing

Ну на самом деле vlc как пример приводился. У меня есть софтина, которая может первещать мультикаст и не падать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ничего не получиться при простом изменении мультикаст адресов в заголовках , т.к. join пакеты в теле имеет поле к какой группе джониться.

Но в потоке не только UDP пакеты бегают - mschedrin я давал захват на форуме.

 

ИХМО надо состыковаться с автором IGMPPROXY на счет возможности допилки под ваши задачи.

igmp тут нипричем. Я вылью весь мультикаст серверу в одну сетевуху, хочу в другой получить этот же мультикаст на другой адрес. Дальше дело техники - передать это мультикаст роутеру и отмаршрутизировать в сети.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Апну тему, есть новости по нату мультикаста?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Легко. 7750 и MS-ISA в режиме video. работает у многих больших операторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а как быть с igmp запросами? их проксировать ведь надо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А причем здесь igmp и прочий pim в вашей сети - решение эффективно заменяет S,G пары в потоках. В вашей сети оригинальные адреса не видны совсем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

но ведь чтобы получить группу нужно отправить на неё репорт к роутеру, но он долетит только до первого IP интерфейса - а им будет являться выходной интерфейс нат-устройства

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В худшем случае можно сочинить приложение, которое будет проксировать через себя.

Лучше попробовать ng_bpf + ng_path чтобы менял по маске IP в пакетах и join/leave запросах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На самом деле всё заработало с igmpproxy+dnat.

На приеме две группы с разными адресами, а устройство за натом подписывается вообще на третий адрес в который одна из входящих групп натится и всё работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.