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

Исходное сообщение
"Программный snat/dnat"

Отправлено des , 12-Июл-07 15:53 
Здравствуйте!
Скажите:
1. как можно из программы на C сделать snat/dnat ? (т.е. вместо вызова iptables ... -j snat/dnat)
2. libipq может изменять содержимое пакета ?

спасибо!


Содержание

Сообщения в этом обсуждении
"Программный snat/dnat"
Отправлено ppiitt123 , 12-Июл-07 16:26 
>Здравствуйте!
>Скажите:
>1. как можно из программы на C сделать snat/dnat ? (т.е. вместо
>вызова iptables ... -j snat/dnat)
>2. libipq может изменять содержимое пакета ?
>
>спасибо!


libiptc и исходники модулей iptables


"Программный snat/dnat"
Отправлено des , 12-Июл-07 17:53 
>>Здравствуйте!
>>Скажите:
>>1. как можно из программы на C сделать snat/dnat ? (т.е. вместо
>>вызова iptables ... -j snat/dnat)
>>2. libipq может изменять содержимое пакета ?
>>
>>спасибо!
>
>
>libiptc и исходники модулей iptables

на сколько я понял, то разработчики netfilter не советуют использовать libiptc для этих целей =\

если не добавлять правила "не лету", как можно из программы изменять содержимое пакетов ?


"Программный snat/dnat"
Отправлено int _0dh , 12-Июл-07 18:23 
>>>Здравствуйте!
>>>Скажите:
>>>1. как можно из программы на C сделать snat/dnat ? (т.е. вместо
>>>вызова iptables ... -j snat/dnat)
>>>2. libipq может изменять содержимое пакета ?
>>>
>>>спасибо!
>>
>>
>>libiptc и исходники модулей iptables
>
>на сколько я понял, то разработчики netfilter не советуют использовать libiptc для
>этих целей =\
>
>если не добавлять правила "не лету", как можно из программы изменять содержимое
>пакетов ?
Из user-space программы можно использовать (отображаемые) PF_PACKET сокеты, но отправить пакет после получения и изменения далее по стеку нельзя.
Для этого нужно писать модуль ядра который будет делать это сам либо предоставит интерфейс (аналогичный например BPF) некоей юзеровой программе

"Программный snat/dnat"
Отправлено KdF , 13-Июл-07 00:47 
>>>>Здравствуйте!
>>>>Скажите:
>>>>1. как можно из программы на C сделать snat/dnat ? (т.е. вместо
>>>>вызова iptables ... -j snat/dnat)
>>>>2. libipq может изменять содержимое пакета ?
>>>>
>>>>спасибо!
>>>
>>>
>>>libiptc и исходники модулей iptables
>>
>>на сколько я понял, то разработчики netfilter не советуют использовать libiptc для
>>этих целей =\
>>
>>если не добавлять правила "не лету", как можно из программы изменять содержимое
>>пакетов ?
>Из user-space программы можно использовать (отображаемые) PF_PACKET сокеты, но отправить пакет после
>получения и изменения далее по стеку нельзя.
>Для этого нужно писать модуль ядра который будет делать это сам либо
>предоставит интерфейс (аналогичный например BPF) некоей юзеровой программе

ДАААААААААААА!

При использовании nfqueue - механизма, нормально работающего в ядрах после 2.6.18, что ли, это можно делать. Уж переписывали-переписывали, переписали наконец.

KdF


"Программный snat/dnat"
Отправлено KdF , 13-Июл-07 00:48 
>>>>>Здравствуйте!
>>>>>Скажите:
>>>>>1. как можно из программы на C сделать snat/dnat ? (т.е. вместо
>>>>>вызова iptables ... -j snat/dnat)
>>>>>2. libipq может изменять содержимое пакета ?
>>>>>
>>>>>спасибо!
>>>>
>>>>
>>>>libiptc и исходники модулей iptables
>>>
>>>на сколько я понял, то разработчики netfilter не советуют использовать libiptc для
>>>этих целей =\
>>>
>>>если не добавлять правила "не лету", как можно из программы изменять содержимое
>>>пакетов ?
>>Из user-space программы можно использовать (отображаемые) PF_PACKET сокеты, но отправить пакет после
>>получения и изменения далее по стеку нельзя.
>>Для этого нужно писать модуль ядра который будет делать это сам либо
>>предоставит интерфейс (аналогичный например BPF) некоей юзеровой программе
>
>
>
>ДАААААААААААА!
>
>При использовании nfqueue - механизма, нормально работающего в ядрах после 2.6.18, что
>ли, это можно делать. Уж переписывали-переписывали, переписали наконец.
>
>KdF


Я имею в виду либу от netfilter и NFQUEUE.


"Программный snat/dnat"
Отправлено des , 13-Июл-07 10:24 
>Я имею в виду либу от netfilter и NFQUEUE.

а ты уверен? =\ откуда такая инфа?



"Программный snat/dnat"
Отправлено KdF , 13-Июл-07 17:58 
>>Я имею в виду либу от netfilter и NFQUEUE.
>
>а ты уверен? =\ откуда такая инфа?


Kernel-часть своего биллинга на этом пишу.
На крайняк, если тебе нужны разные правила ната для разных критериев, ты можешь просто из обработчика nfqueue устанавливать MARK, а потом в правилах iptables установить действия согласно этому MARK-у


"Программный snat/dnat"
Отправлено des , 13-Июл-07 10:49 
>Из user-space программы можно использовать (отображаемые) PF_PACKET сокеты, но отправить пакет после
>получения и изменения далее по стеку нельзя.
>Для этого нужно писать модуль ядра который будет делать это сам либо
>предоставит интерфейс (аналогичный например BPF) некоей юзеровой программе

хм, а причем тут BPF? насколько я понял, это просто фильтр.. или нет?


"Программный snat/dnat"
Отправлено int _0dh , 13-Июл-07 12:46 
>>Из user-space программы можно использовать (отображаемые) PF_PACKET сокеты, но отправить пакет после
>>получения и изменения далее по стеку нельзя.
>>Для этого нужно писать модуль ядра который будет делать это сам либо
>>предоставит интерфейс (аналогичный например BPF) некоей юзеровой программе
>
>хм, а причем тут BPF? насколько я понял, это просто фильтр.. или
>нет?
при том что из него (/dev/bpf) можно читать пакеты, изменять из и писать обратно :). При этом они пойдут вверх по стеку/вниз по стеку - в зависимости от режима