Задача: Нужно подменять адрес назначения UDP multicast потока приходящего с eth0 и отправлять полученное в eth1.Имеем: Сервер с двумя сетевыми интерфейсами. Один входящий, другой исходящий.
На сервере стоит VLC, который принимает multicast UDP поток
IP 77.94.170.4.20000 > 234.5.2.64.20000: UDP, length 1316Наша задача заменить адрес 234.5.2.64 на что-то другое. Например 235.8.64.21.
Что делал.echo "1" > /proc/sys/net/ipv4/ip_forward
В абсолютно пустой Iptables добавил правило в соответствии с мануалом
iptables -t nat -A PREROUTING -i eth0 -p udp -d 234.5.2.64 -j DNAT --to-destination 235.8.64.21Как результат, правило добавилось, но через него ничего не проходит.
# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 1566K packets, 151M bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT udp -- eth0 * 0.0.0.0/0 234.5.2.64 to:235.8.64.21Chain POSTROUTING (policy ACCEPT 113 packets, 8427 bytes)
pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 113 packets, 8427 bytes)
pkts bytes target prot opt in out source destination
Судя по времени которое прошло с момента добавления правила и трафику, который реально проходит через машину, можно предположить, что в таблицу нат попадает далеко не весь трафик.Вопрос, что делать? :)
>[оверквотинг удален]
> out source
>
> destination
>
>
>Судя по времени которое прошло с момента добавления правила и трафику, который
>реально проходит через машину, можно предположить, что в таблицу нат попадает
>далеко не весь трафик.
>
>Вопрос, что делать? :)Вопрос - а зачем нужен такой извр? если для того чтобы какаято машина в вашей сети видела мультикаст то юзайте igmp прокси всякие (igmpproxy, mroute и т.д.) - а просто завернуть мультикасть трафик натом - не получиться т.к. в обработке мультикаста работают и все промежуточные свичи - если какойто ip "не пройдет регистрации на поток" на промежуточном свиче - то свич просто не пропустит для него этот поток - поэтому когда работает с мультикастом нужно внимателно следить за железом - чтобы оно подерживало igmp иначе не будет бегать мультикаст. Удачи.
>
>Вопрос - а зачем нужен такой извр? если для того чтобы какаято
>машина в вашей сети видела мультикаст то юзайте igmp прокси всякие
>(igmpproxy, mroute и т.д.) - а просто завернуть мультикасть трафик натом
>- не получиться т.к. в обработке мультикаста работают и все промежуточные
>свичи - если какойто ip "не пройдет регистрации на поток" на
>промежуточном свиче - то свич просто не пропустит для него этот
>поток - поэтому когда работает с мультикастом нужно внимателно следить за
>железом - чтобы оно подерживало igmp иначе не будет бегать мультикаст.
>Удачи.Нужно для порядка в сети ...
Уже есть несколько мультикаст потоков на определенной группе.
Сейчас есть возможность брать еще некоторые из других источников, но там другие mcast группы. Вот и хочется переделать :)
>[оверквотинг удален]
>>свичи - если какойто ip "не пройдет регистрации на поток" на
>>промежуточном свиче - то свич просто не пропустит для него этот
>>поток - поэтому когда работает с мультикастом нужно внимателно следить за
>>железом - чтобы оно подерживало igmp иначе не будет бегать мультикаст.
>>Удачи.
>
>Нужно для порядка в сети ...
>Уже есть несколько мультикаст потоков на определенной группе.
>Сейчас есть возможность брать еще некоторые из других источников, но там другие
>mcast группы. Вот и хочется переделать :)Не получиться - только igmp проксирование. После вашей машины с vlc комп который должен ловить мультикаст должен както "зарегиться" на поток на свичах - просто DNAT? это не риализовать. Да и вообще насколько я помню - NAT (SNAT,DNAT,MASQUERADE) - работают только с юникастом, для брадкаста и мультикаста просто не заточены. - Попробуйте юзать VLAN и бриджы (не пробовал но поидеи должно работать) - а nat точно не канает.
>Не получиться - только igmp проксирование. После вашей машины с vlc комп
>который должен ловить мультикаст должен както "зарегиться" на поток на свичах
>- просто DNAT? это не риализовать. Да и вообще насколько я
>помню - NAT (SNAT,DNAT,MASQUERADE) - работают только с юникастом, для брадкаста
>и мультикаста просто не заточены. - Попробуйте юзать VLAN и бриджы
>(не пробовал но поидеи должно работать) - а nat точно не
>канает.Проблемы по подписке другого компа, отсутствуют.
Тут главное пустить поток в сеть под общей нумерацией групп...А вот то что iptables не работает с мультикаст потоками ... это может быть объяснением ...
Хотя какая ему разница ? :)Какого! работает он с мультикастом! Метки в mangle ставит же... Значит работает!
>[оверквотинг удален]
>
>Проблемы по подписке другого компа, отсутствуют.
>Тут главное пустить поток в сеть под общей нумерацией групп...
>
>А вот то что iptables не работает с мультикаст потоками ... это
>может быть объяснением ...
>Хотя какая ему разница ? :)
>
>Какого! работает он с мультикастом! Метки в mangle ставит же... Значит работает!
>Iptables - работает с мультикастом - а NAT работает только с юникастом.
>[оверквотинг удален]
>>
>>А вот то что iptables не работает с мультикаст потоками ... это
>>может быть объяснением ...
>>Хотя какая ему разница ? :)
>>
>>Какого! работает он с мультикастом! Метки в mangle ставит же... Значит работает!
>>
>
>Iptables - работает с мультикастом - а NAT работает только с юникастом.
>Не воспринимайте iptables как монолитную вещь с себе - iptables это вообще не файрвол, а средство управление функционалом ядра и модулей - NAT это один из модулей предоствляющий возможнойть работы с адрисами - вот данный модуль и может работать только с юникаст трафиком, а другие могут работать и с мультикастом и с чем пожелают.
А вот фразы про то что нет проблем "подписаться" на поток с компа который не запрашивал этот поток - можно поподробней? что то слабо себе это предствляеться?
>[оверквотинг удален]
>
>Не воспринимайте iptables как монолитную вещь с себе - iptables это вообще
>не файрвол, а средство управление функционалом ядра и модулей - NAT
>это один из модулей предоствляющий возможнойть работы с адрисами - вот
>данный модуль и может работать только с юникаст трафиком, а другие
>могут работать и с мультикастом и с чем пожелают.
>
>А вот фразы про то что нет проблем "подписаться" на поток с
>компа который не запрашивал этот поток - можно поподробней? что то
>слабо себе это предствляеться?http://www.netfilter.org/documentation/FAQ/netfilter-faq-3.html
Пункты 3.1, 3.2 - NAT модуль не работает с мультикастом потому что "... unable to determine conntrack information" - что в принцепе логично т.к. это мультикасто и он не попадает в conntrack.
Ищите другие способы. Удачи.
>
>http://www.netfilter.org/documentation/FAQ/netfilter-faq-3.html
>
>Пункты 3.1, 3.2 - NAT модуль не работает с мультикастом потому что
>"... unable to determine conntrack information" - что в принцепе логично
>т.к. это мультикасто и он не попадает в conntrack.
>Ищите другие способы. Удачи.А в чем отличие обычного UDP потока от мультикастового ? :)
И там и там без всяких сессий...
> Пункты 3.1, 3.2 - NAT модуль не работает с мультикастом потому что
> "... unable to determine conntrack information" - что в принцепе логично
> т.к. это мультикасто и он не попадает в conntrack.
> Ищите другие способы. Удачи.conntrack решает все? убогое мнение.
>А вот фразы про то что нет проблем "подписаться" на поток с
>компа который не запрашивал этот поток - можно поподробней? что то
>слабо себе это предствляеться?Суть в том что то где присутствует описанная в первом сообщении проблема, происходит в "ядре" головной станции, где до подписок абонентов дело еще не доходит.
Подписки будут потом и дальше ... А пока сбор потоков.
>[оверквотинг удален]
>>Iptables - работает с мультикастом - а NAT работает только с юникастом.
>>
> Не воспринимайте iptables как монолитную вещь с себе - iptables это вообще
> не файрвол, а средство управление функционалом ядра и модулей - NAT
> это один из модулей предоствляющий возможнойть работы с адрисами - вот
> данный модуль и может работать только с юникаст трафиком, а другие
> могут работать и с мультикастом и с чем пожелают.
> А вот фразы про то что нет проблем "подписаться" на поток с
> компа который не запрашивал этот поток - можно поподробней? что то
> слабо себе это предствляеться?+1000
>[оверквотинг удален]
> Имеем: Сервер с двумя сетевыми интерфейсами. Один входящий, другой исходящий.
> На сервере стоит VLC, который принимает multicast UDP поток
> IP 77.94.170.4.20000 > 234.5.2.64.20000: UDP, length 1316
> Наша задача заменить адрес 234.5.2.64 на что-то другое. Например 235.8.64.21.
> Что делал.
> echo "1" > /proc/sys/net/ipv4/ip_forward
> В абсолютно пустой Iptables добавил правило в соответствии с мануалом
> iptables -t nat -A PREROUTING -i eth0 -p udp -d 234.5.2.64 -j
> DNAT --to-destination 235.8.64.21
> Как результат, правило добавилось, но через него ничего не проходит.для начала форвард трафика разрешить, который по умолчанию вовсех нормальных дистрах запрещен.
>[оверквотинг удален]
> destination
> Chain OUTPUT (policy ACCEPT 113 packets, 8427 bytes)
> pkts bytes target prot opt in
> out source
>
> destination
> Судя по времени которое прошло с момента добавления правила и трафику, который
> реально проходит через машину, можно предположить, что в таблицу нат попадает
> далеко не весь трафик.
> Вопрос, что делать? :)
UP!
Не подскажете чем закончилось?
У нас что-то похожее, только благодаря route и smcroute трафик нормально попадает в PREROUTING (быстро растут счетчики), а вот в POSTROUTING никак.
Multicat не пробовали покрутить?
> Multicat не пробовали покрутить?Не успел дописать.
Мы с помощью multicat задачу на ура решаем, но про subj в любом случае интересно (естественно: http://lists.netfilter.org/pipermail/netfilter-devel/2005-Fe... и прочее уже давно прочитано)