Jump to content
Калькуляторы

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

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

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

Share this post


Link to post
Share on other sites
Попробуйте в PF:

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

можно попробовать 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 запросы обрабатывать

Edited by darkagent

Share this post


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

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

 

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Если я напишу ноду для замены ip вы готовы её протестировать?

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

Edited by Tsvetkov

Share this post


Link to post
Share on other sites

eyewing

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

Share this post


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

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

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this