LINUX.ORG.RU

Фильтр пакетов


0

2

Здравствуйте. Я пытаюсь реализовать фильтр, обрабатывающий сетевые пакеты. Нужно выполнить фильтрацию пакетов по IP отправителя. Для этого мне, как я понял, необходимо сравнить нужный ip c входящем адресом в структуре iphdr. Я не знаю, как это сделать. Есть предположение, что это можно сделать так: if (skbf->nh.iph->saddr != htonl(***)), где вместо *** необходимо написать ip в виде HEX, но я не уверен, что это правильно... Подскажите пожалуйста, как это сделать



Последнее исправление: newcomer (всего исправлений: 1)
Ответ на: комментарий от mky

А что делает in_aton? Что ей в качестве аргумента передавать?

newcomer
() автор топика
Ответ на: комментарий от mky

Еще вопрос: как мне изменить ip отправителя, после этой проверки? Можно ли это сделать простым присваиванием skbf->nh.iph->saddr = in_aton(192.168.159.255) ?

newcomer
() автор топика
Ответ на: комментарий от newcomer

Не знаю. Вобще, делать для каждого пакета in_aton(«192.168.159.255») это не правильно — каждый раз преобразовывать строку в число, лучше какую-то статическую переменную, устанавливаемую при инициализации модуля или через /proc/...

Но, можно ли вобще менять содержимое skbf, нужно смотреть отдельно. Так ведь пакеты меняются с помощью таблицы conntrack и что будет с таким пакетом, у которого в произвольном месте поменяли src-addr я не знаю.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.