URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 89778
[ Назад ]

Исходное сообщение
"Iptables + DNAT"

Отправлено Kompik , 09-Сен-10 15:19 
Задача: Нужно подменять адрес назначения 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.21

Chain POSTROUTING (policy ACCEPT 113 packets, 8427 bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 113 packets, 8427 bytes)
pkts bytes target     prot opt in     out     source               destination


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

Вопрос, что делать? :)


Содержание

Сообщения в этом обсуждении
"Iptables + DNAT"
Отправлено KobaLTD , 09-Сен-10 15:48 
>[оверквотинг удален]
>   out     source  
>          
> destination
>
>
>Судя по времени которое прошло с момента добавления правила и трафику, который
>реально проходит через машину, можно предположить, что в таблицу нат попадает
>далеко не весь трафик.
>
>Вопрос, что делать? :)

Вопрос - а зачем нужен такой извр? если для того чтобы какаято машина в вашей сети видела мультикаст то юзайте igmp прокси всякие (igmpproxy, mroute и т.д.) - а просто завернуть мультикасть трафик натом - не получиться т.к. в обработке мультикаста работают и все промежуточные свичи - если какойто ip "не пройдет регистрации на поток" на промежуточном свиче - то свич просто не пропустит для него этот поток - поэтому когда работает с мультикастом нужно внимателно следить за железом - чтобы оно подерживало igmp иначе не будет бегать мультикаст. Удачи.


"Iptables + DNAT"
Отправлено Kompik , 09-Сен-10 15:55 

>
>Вопрос - а зачем нужен такой извр? если для того чтобы какаято
>машина в вашей сети видела мультикаст то юзайте igmp прокси всякие
>(igmpproxy, mroute и т.д.) - а просто завернуть мультикасть трафик натом
>- не получиться т.к. в обработке мультикаста работают и все промежуточные
>свичи - если какойто ip "не пройдет регистрации на поток" на
>промежуточном свиче - то свич просто не пропустит для него этот
>поток - поэтому когда работает с мультикастом нужно внимателно следить за
>железом - чтобы оно подерживало igmp иначе не будет бегать мультикаст.
>Удачи.

Нужно для порядка в сети ...
Уже есть несколько мультикаст потоков на определенной группе.
Сейчас есть возможность брать еще некоторые из других источников, но там другие mcast группы. Вот и хочется переделать :)


"Iptables + DNAT"
Отправлено KobaLTD , 09-Сен-10 16:03 
>[оверквотинг удален]
>>свичи - если какойто ip "не пройдет регистрации на поток" на
>>промежуточном свиче - то свич просто не пропустит для него этот
>>поток - поэтому когда работает с мультикастом нужно внимателно следить за
>>железом - чтобы оно подерживало igmp иначе не будет бегать мультикаст.
>>Удачи.
>
>Нужно для порядка в сети ...
>Уже есть несколько мультикаст потоков на определенной группе.
>Сейчас есть возможность брать еще некоторые из других источников, но там другие
>mcast группы. Вот и хочется переделать :)

Не получиться - только igmp проксирование. После вашей машины с vlc комп который должен ловить мультикаст должен както "зарегиться" на поток на свичах - просто DNAT? это не риализовать. Да и вообще насколько я помню - NAT (SNAT,DNAT,MASQUERADE) - работают только с юникастом, для брадкаста и мультикаста просто не заточены. - Попробуйте юзать VLAN и бриджы (не пробовал но поидеи должно работать) - а nat точно не канает.


"Iptables + DNAT"
Отправлено Kompik , 09-Сен-10 16:09 
>Не получиться - только igmp проксирование. После вашей машины с vlc комп
>который должен ловить мультикаст должен както "зарегиться" на поток на свичах
>- просто DNAT? это не риализовать. Да и вообще насколько я
>помню - NAT (SNAT,DNAT,MASQUERADE) - работают только с юникастом, для брадкаста
>и мультикаста просто не заточены. - Попробуйте юзать VLAN и бриджы
>(не пробовал но поидеи должно работать) - а nat точно не
>канает.

Проблемы по подписке другого компа, отсутствуют.
Тут главное пустить поток в сеть под общей нумерацией групп...

А вот то что iptables не работает с мультикаст потоками ... это может быть объяснением ...
Хотя какая ему разница ? :)

Какого! работает он с мультикастом! Метки в mangle ставит же... Значит работает!


"Iptables + DNAT"
Отправлено KobaLTD , 09-Сен-10 16:31 
>[оверквотинг удален]
>
>Проблемы по подписке другого компа, отсутствуют.
>Тут главное пустить поток в сеть под общей нумерацией групп...
>
>А вот то что iptables не работает с мультикаст потоками ... это
>может быть объяснением ...
>Хотя какая ему разница ? :)
>
>Какого! работает он с мультикастом! Метки в mangle ставит же... Значит работает!
>

Iptables - работает с мультикастом - а NAT работает только с юникастом.


"Iptables + DNAT"
Отправлено KobaLTD , 09-Сен-10 16:36 
>[оверквотинг удален]
>>
>>А вот то что iptables не работает с мультикаст потоками ... это
>>может быть объяснением ...
>>Хотя какая ему разница ? :)
>>
>>Какого! работает он с мультикастом! Метки в mangle ставит же... Значит работает!
>>
>
>Iptables - работает с мультикастом - а NAT работает только с юникастом.
>

Не воспринимайте iptables как монолитную вещь с себе - iptables это вообще не файрвол, а средство управление функционалом ядра и модулей - NAT это один из модулей предоствляющий возможнойть работы с адрисами - вот данный модуль и может работать только с юникаст трафиком, а другие могут работать и с мультикастом и с чем пожелают.

А вот фразы про то что нет проблем "подписаться" на поток с компа который не запрашивал этот поток - можно поподробней? что то слабо себе это предствляеться?


"Iptables + DNAT"
Отправлено KobaLTD , 09-Сен-10 16:53 
>[оверквотинг удален]
>
>Не воспринимайте iptables как монолитную вещь с себе - iptables это вообще
>не файрвол, а средство управление функционалом ядра и модулей - NAT
>это один из модулей предоствляющий возможнойть работы с адрисами - вот
>данный модуль и может работать только с юникаст трафиком, а другие
>могут работать и с мультикастом и с чем пожелают.
>
>А вот фразы про то что нет проблем "подписаться" на поток с
>компа который не запрашивал этот поток - можно поподробней? что то
>слабо себе это предствляеться?

http://www.netfilter.org/documentation/FAQ/netfilter-faq-3.html

Пункты 3.1, 3.2 - NAT модуль не работает с мультикастом потому что "... unable to determine conntrack information" - что в принцепе логично т.к. это мультикасто и он не попадает в conntrack.
Ищите другие способы. Удачи.


"Iptables + DNAT"
Отправлено Kompik , 10-Сен-10 12:05 
>
>http://www.netfilter.org/documentation/FAQ/netfilter-faq-3.html
>
>Пункты 3.1, 3.2 - NAT модуль не работает с мультикастом потому что
>"... unable to determine conntrack information" - что в принцепе логично
>т.к. это мультикасто и он не попадает в conntrack.
>Ищите другие способы. Удачи.

А в чем отличие обычного UDP потока от мультикастового ? :)
И там и там без всяких сессий...


"Iptables + DNAT"
Отправлено LSTemp , 28-Сен-10 05:37 

> Пункты 3.1, 3.2 - NAT модуль не работает с мультикастом потому что
> "... unable to determine conntrack information" - что в принцепе логично
> т.к. это мультикасто и он не попадает в conntrack.
> Ищите другие способы. Удачи.

conntrack решает все? убогое мнение.


"Iptables + DNAT"
Отправлено Kompik , 10-Сен-10 11:17 

>А вот фразы про то что нет проблем "подписаться" на поток с
>компа который не запрашивал этот поток - можно поподробней? что то
>слабо себе это предствляеться?

Суть в том что то где присутствует описанная в первом сообщении проблема, происходит в "ядре" головной станции, где до подписок абонентов дело еще не доходит.
Подписки будут потом и дальше ... А пока сбор потоков.


"Iptables + DNAT"
Отправлено LSTemp , 28-Сен-10 05:39 
>[оверквотинг удален]
>>Iptables - работает с мультикастом - а NAT работает только с юникастом.
>>
> Не воспринимайте iptables как монолитную вещь с себе - iptables это вообще
> не файрвол, а средство управление функционалом ядра и модулей - NAT
> это один из модулей предоствляющий возможнойть работы с адрисами - вот
> данный модуль и может работать только с юникаст трафиком, а другие
> могут работать и с мультикастом и с чем пожелают.
> А вот фразы про то что нет проблем "подписаться" на поток с
> компа который не запрашивал этот поток - можно поподробней? что то
> слабо себе это предствляеться?

+1000


"Iptables + DNAT"
Отправлено LSTemp , 28-Сен-10 05:32 
>[оверквотинг удален]
> Имеем: Сервер с двумя сетевыми интерфейсами. Один входящий, другой исходящий.
> На сервере стоит 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
> Судя по времени которое прошло с момента добавления правила и трафику, который
> реально проходит через машину, можно предположить, что в таблицу нат попадает
> далеко не весь трафик.
> Вопрос, что делать? :)


"Iptables + DNAT"
Отправлено Аноним , 12-Июл-11 09:05 
UP!
Не подскажете чем закончилось?
У нас что-то похожее, только благодаря route и smcroute трафик нормально попадает в  PREROUTING (быстро растут счетчики), а вот в POSTROUTING никак.
Multicat не пробовали покрутить?

"Iptables + DNAT"
Отправлено Аноним , 12-Июл-11 11:14 
> Multicat не пробовали покрутить?

Не успел дописать.
Мы с помощью multicat задачу на ура решаем, но про subj в любом случае интересно (естественно: http://lists.netfilter.org/pipermail/netfilter-devel/2005-Fe... и прочее уже давно прочитано)