Здравствуйте!
Скажите:
1. как можно из программы на C сделать snat/dnat ? (т.е. вместо вызова iptables ... -j snat/dnat)
2. libipq может изменять содержимое пакета ?спасибо!
>Здравствуйте!
>Скажите:
>1. как можно из программы на C сделать snat/dnat ? (т.е. вместо
>вызова iptables ... -j snat/dnat)
>2. libipq может изменять содержимое пакета ?
>
>спасибо!
libiptc и исходники модулей iptables
>>Здравствуйте!
>>Скажите:
>>1. как можно из программы на C сделать snat/dnat ? (т.е. вместо
>>вызова iptables ... -j snat/dnat)
>>2. libipq может изменять содержимое пакета ?
>>
>>спасибо!
>
>
>libiptc и исходники модулей iptablesна сколько я понял, то разработчики netfilter не советуют использовать libiptc для этих целей =\
если не добавлять правила "не лету", как можно из программы изменять содержимое пакетов ?
>>>Здравствуйте!
>>>Скажите:
>>>1. как можно из программы на C сделать snat/dnat ? (т.е. вместо
>>>вызова iptables ... -j snat/dnat)
>>>2. libipq может изменять содержимое пакета ?
>>>
>>>спасибо!
>>
>>
>>libiptc и исходники модулей iptables
>
>на сколько я понял, то разработчики netfilter не советуют использовать libiptc для
>этих целей =\
>
>если не добавлять правила "не лету", как можно из программы изменять содержимое
>пакетов ?
Из user-space программы можно использовать (отображаемые) PF_PACKET сокеты, но отправить пакет после получения и изменения далее по стеку нельзя.
Для этого нужно писать модуль ядра который будет делать это сам либо предоставит интерфейс (аналогичный например BPF) некоей юзеровой программе
>>>>Здравствуйте!
>>>>Скажите:
>>>>1. как можно из программы на C сделать snat/dnat ? (т.е. вместо
>>>>вызова iptables ... -j snat/dnat)
>>>>2. libipq может изменять содержимое пакета ?
>>>>
>>>>спасибо!
>>>
>>>
>>>libiptc и исходники модулей iptables
>>
>>на сколько я понял, то разработчики netfilter не советуют использовать libiptc для
>>этих целей =\
>>
>>если не добавлять правила "не лету", как можно из программы изменять содержимое
>>пакетов ?
>Из user-space программы можно использовать (отображаемые) PF_PACKET сокеты, но отправить пакет после
>получения и изменения далее по стеку нельзя.
>Для этого нужно писать модуль ядра который будет делать это сам либо
>предоставит интерфейс (аналогичный например BPF) некоей юзеровой программеДАААААААААААА!
При использовании nfqueue - механизма, нормально работающего в ядрах после 2.6.18, что ли, это можно делать. Уж переписывали-переписывали, переписали наконец.
KdF
>>>>>Здравствуйте!
>>>>>Скажите:
>>>>>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.
>Я имею в виду либу от netfilter и NFQUEUE.а ты уверен? =\ откуда такая инфа?
>>Я имею в виду либу от netfilter и NFQUEUE.
>
>а ты уверен? =\ откуда такая инфа?
Kernel-часть своего биллинга на этом пишу.
На крайняк, если тебе нужны разные правила ната для разных критериев, ты можешь просто из обработчика nfqueue устанавливать MARK, а потом в правилах iptables установить действия согласно этому MARK-у
>Из user-space программы можно использовать (отображаемые) PF_PACKET сокеты, но отправить пакет после
>получения и изменения далее по стеку нельзя.
>Для этого нужно писать модуль ядра который будет делать это сам либо
>предоставит интерфейс (аналогичный например BPF) некоей юзеровой программехм, а причем тут BPF? насколько я понял, это просто фильтр.. или нет?
>>Из user-space программы можно использовать (отображаемые) PF_PACKET сокеты, но отправить пакет после
>>получения и изменения далее по стеку нельзя.
>>Для этого нужно писать модуль ядра который будет делать это сам либо
>>предоставит интерфейс (аналогичный например BPF) некоей юзеровой программе
>
>хм, а причем тут BPF? насколько я понял, это просто фильтр.. или
>нет?
при том что из него (/dev/bpf) можно читать пакеты, изменять из и писать обратно :). При этом они пойдут вверх по стеку/вниз по стеку - в зависимости от режима