Я создаю персональное приложение для фильтрации сети с использованием C. Я уже знаю, что вы можете войти и анализировать информацию скачанного пакета, используя этот код:Как сбросить пакет до полной загрузки
tcpPacket = recvfrom(raw_socket , buffer , 65536 , 0 , &serverAddress , &serverAddressSize);
, но это требует сначала загрузите пакет tcp. Мне нужно, чтобы фильтр выполнялся даже до его загрузки, скажем, он исследует исходный IP-адрес и на основании этого он либо принимает, либо отклоняет его.
Примечание: Да, я знаю iptables, но я не хочу использовать его, потому что хочу узнать, как это сделать, используя сырые сокеты.
То, что я пытаюсь достичь, - это «мини-брандмауэр». На самом деле точнее сказать «брандмауэр первого поколения». Из Википедии: «Если пакет соответствует набору фильтрующих правил фильтра пакетов, фильтр пакетов будет отбрасывать (отбрасывать) пакет или отклонять его (отбрасывать его и отправлять« ответы об ошибках »на источник)». - http://en.wikipedia.org/wiki/Firewall_%28computing%29#First_generation:_packet_filters Ergo Я уверен, что кто-то уже делал это раньше. – chelem7
@ chelem7 - Обычно это делается, помещая фильтр в сетевой стек, чтобы пакет (полный) мог быть проверен перед опциональной пересылкой его в остальную часть сетевого стека. Найдите 'iptables' и' netfilter'. – DoxyLover