А можно ли написать сниффер (на raw sockets или libpcap), который будет не только слушать пакеты но и удалять их из сети?
>А можно ли написать сниффер (на raw sockets или libpcap), который будет
>не только слушать пакеты но и удалять их из сети?Куда удалять? ))
Это будет называться фаервол.
>>А можно ли написать сниффер (на raw sockets или libpcap), который будет
>>не только слушать пакеты но и удалять их из сети?
>Куда удалять? ))
>Это будет называться фаервол.Ну точнее не давать ядру обратать прослушанный пакет. Я пишу своего рода смесь прокси и впн. Мое приложение слушает все входящие пакеты на одном интерфейсе и перправляет их на другой. В кратце схемы выглядит так:
клиент1 - сервер/мое приложение - клиент2
Например клиент1 сможет пинговать клиент2 не видя приложения вообще. Проблемма в том что прослушанные пакеты все рано будут обработаны ядром на сервере - те клиент может получит обратьно совешенно ненужную информацию типа АСК. Пробовал сделать сниффер на iptables/libipq , но с ними невозможно прослушивать DHCP сообщения. А raw сокет сниффер не может ничего говорить ядру после получения пакета. Проблемма в общем.
>[оверквотинг удален]
>так:
>
>клиент1 - сервер/мое приложение - клиент2
>
>Например клиент1 сможет пинговать клиент2 не видя приложения вообще. Проблемма в том
>что прослушанные пакеты все рано будут обработаны ядром на сервере -
>те клиент может получит обратьно совешенно ненужную информацию типа АСК. Пробовал
>сделать сниффер на iptables/libipq , но с ними невозможно прослушивать DHCP
>сообщения. А raw сокет сниффер не может ничего говорить ядру после
>получения пакета. Проблемма в общем.из юзерспейса никак нельзя.
можно написать простейший модуль ядра который это будет делать (в случае Linux/BSD) - за инфой в гугл.
попробуйте посмотреть в сторону Divert-сокетов...
в частности, например, вот сюда:
http://rus-linux.net/MyLDP/MINI-HOWTO-ru/Divert-Sockets-mini...
>попробуйте посмотреть в сторону Divert-сокетов...
>в частности, например, вот сюда:
>http://rus-linux.net/MyLDP/MINI-HOWTO-ru/Divert-Sockets-mini...Можно еще сделать через iptables + приложение (ULOG)