Sponsored Content
Operating Systems Linux C, LKM, netfilter, PF_PACKET and ARP. Post 302494683 by Zykl0n-B on Tuesday 8th of February 2011 04:36:17 AM
Old 02-08-2011
Hello,
This is what i was afraid of.
Code:
This user-defined filter decides whether a packet
is to be accepted and how many bytes of each packet should
be saved. For each filter that accepts the packet, BPF copies
the requested amount of data to the buffer associated with that
filter. The device driver then regains control. If the packet
was not addressed to the local host, the driver returns from the
interrupt. Otherwise, normal protocol processing proceeds.

LSF and BPF are just a filter for deceiding what packets to show and what packet not to. If the frame doesn't pass the filter, then it's returned to the device driver and it will process it normally (so, in my example, the ARP frame will take effect on the host's cache).

It seems i'll have to keep looking for arp support on netfilter.

By the way, i tried to make a module for blocking all ARP frames with netfilter, and it seems it's not possible. Does anyone know why?

Code:
static unsigned int hook_func(unsigned int hooknum,
                        struct sk_buff *skb,
                                const struct net_device *in,
                                const struct net_device *out,
                                int (*okfn)(struct sk_buff *)){

printk(KERN_INFO "ARP Dropped\n");
return NF_DROP;
}

static int __init init_main(void)
{
nfho.hook = hook_func;
nfho.hooknum = NF_ARP_IN;
nfho.pf = NF_ARP;

nf_register_hook(&nfho);

printk(KERN_INFO "Inserted protocool module!\n");
return(0);
}

This is the normal netfilter_hook_ops structure, i fill it with the funcion name (hook_func), the hook type NF_ARP_IN (0) and the protocol family (NF_ARP) and then register the hook. Since hook_func is "return NF_DROP" it should drop every single ARP frame it receives, but it doesn't. Could some one give me a clue about this?
Zykl0n-B
 

9 More Discussions You Might Find Interesting

1. Programming

Help in extending netfilter

Hi everybody, I have to write a module for matching in netfilter , extending the netfilter but I'm facing some problems can somebody guide me in that. I know that I need to write matching module working in kernel space and a program in userspace. I went through the HOWTO on netfilter-hacking but... (0 Replies)
Discussion started by: Trusted Penguin
0 Replies

2. Programming

Problem in registering new netfilter target module

Friends I'm facing a big problem trying to extend the netfilter. Somone please help me with your quick reply (any hint) as I've to meet a deadline. My problem is that I've written a new netfilter target module and its corresponding userspace program for iptables to change the packet type of a... (0 Replies)
Discussion started by: Rakesh Ranjan
0 Replies

3. Programming

extending netfilter...plz help

Hello friends i'm trying to extend iptables to include a target by which we can change the packet type field of a packet. For this i created a kernel module and a userspace extension. Now i face the problem that when i try to invoke iptable with the target i created i get an error message saying... (1 Reply)
Discussion started by: Rakesh Ranjan
1 Replies

4. IP Networking

netfilter connection tracking

hi, i'm using tcpreplay to send a traffic trace to my wireless interface (the trace is been captured by the same interface). It seems as netfilter can't trace connections. Is it possible? (0 Replies)
Discussion started by: littleboyblu
0 Replies

5. Cybersecurity

Netfilter conntracking for P2P protocols (edonkey, bittorent...)

Hi everyone, I would like to allow multi users to access P2P networks, so I wonder if there's a way to tracking these kind of protocols with netfilter, and also compatibility with nat, like the module conntrack_ftp seems to do with the FTP protocol. Thanks guys. (0 Replies)
Discussion started by: nekkro-kvlt
0 Replies

6. Linux

netfilter / iptables

HI, Is the Netfilter and IPtables same? Thanks & Regards Arun (1 Reply)
Discussion started by: Arun.Kakarla
1 Replies

7. UNIX for Advanced & Expert Users

problem with netfilter hook function struct skbuff *sock is null..

iam trying to built a firewall.so i have used netfilter for it. in function main_hook sock_buff is returning null and in my log file continuously "sock buff null" is printed plse help to solve this problem.. (using print_string iam printing strings on current terminal (terminal we ping)) ... (1 Reply)
Discussion started by: pavan6754
1 Replies

8. Cybersecurity

Experience with libvirt netfilter API

Hi all, I would like to get some ideas and opinions on matter of libvirt netfilter application in KVM environment. I am looking for some easy way to control it with an API and possible experience with that and its performance in real life application. Thanks for all ideas (0 Replies)
Discussion started by: smoofy
0 Replies

9. Cybersecurity

How to use Netfilter properly with IPv6?

Hello, on a PC with Debian 8 I try to use a Bash script with Netfilter rules so that only traffic goes in and out that is wanted. For that I set all 3 default policies to "drop". The machine uses DHCP to get its IP, gateway and DNS. And I never checked so I was quite surprised that my... (1 Reply)
Discussion started by: SInt
1 Replies
pfconfig(8c)															      pfconfig(8c)

Name
       pfconfig - configure packet filter parameters

Syntax
       /usr/etc/pfconfig [ +/-p[romisc] ] [ +/-c[opyall] ] [ -b[acklog] nnn ] [ -a[ll] ] [interface-name ...]

Description
       The command allows the system manager to configure certain parameters of the packet filter driver (see These parameters are configured sep-
       arately for each interface; the interfaces are specified by name on the command line (for example, and If more than one interface is speci-
       fied,  they are all given the same settings.  Alternatively, you can specify -all to configure all the packet-filter interfaces on the sys-
       tem.

       You can set the following parameters with

       +promisc  Allows packet filter users to set the interface into promiscuous mode (receives all packets).	Whenever there	is  at	least  one
		 packet filter descriptor open with the ENPROMISC mode bit set, the interface is put into promiscuous mode.  When no such descrip-
		 tors are in use, the interface is returned to normal mode.

       -promisc  The interface is no longer put into promiscuous mode on behalf of packet filter users; if the interface is  in  promiscuous  mode
		 when  this  command  is given, it is returned to normal mode.	(The superuser may use to control promiscuous mode, overriding the
		 mode set by non-superusers.  This is the default setting.)

       +copyall  Allows packet filter users to set the interface into copy-all mode (receives packets sent/received by the kernel-resident  proto-
		 col  software	[for  example,	IP, ARP, DECnet, LAT] on this host).  Whenever there is at least one packet filter descriptor open
		 with the ENCOPYALL mode bit set, the interface is put into copy-all mode.  When no such descriptors are in use, the interface	is
		 returned to normal mode.

       -copyall  The  interface  is  no  longer put into copy-all mode on behalf of packet filter users; if the interface is in copy-all mode when
		 this command is given, it is returned to normal mode.	(The superuser may use to control copy-all mode, overriding the  mode  set
		 by non-superusers.  This is the default setting.)

       -backlog nnn
		 Sets  the  maximum  backlog  (packet  filter  input  queue length) for non-superuser descriptors to the specified number.  When a
		 descriptor is opened, it is given a queue length limit of two. An application can increase this backlog using the EIOCSETW  ioctl
		 request.   Superusers	are  allowed to increase their backlog up to a system-wide maximum; non-superusers are allowed to increase
		 their backlog only up to the maximum set by this program.  Note that allowing too large a backlog may result in vast  amounts	of
		 kernel memory being tied up in the packet filter driver queues.

       If no configuration parameters are specified, the command displays the current packet filter configuration for the network interface(s).

       Only the superuser may use this command to change the configuration.

Examples
       On a system used for network monitoring, one might put this line into
       /usr/etc/pfconfig -a +promisc -backlog 64
       This  allows  users to run promiscuous network monitoring applications, with a maximum input queue length per application of 64 packets, on
       any interface in the system.
       /usr/etc/pfconfig -a +promisc +copyall -backlog 64
       This allows promiscuous network monitoring applications to monitor communications to or from the local host, as well as	the  rest  of  the
       local network.

Diagnostics
       Messages  indicating  the specified interface do not exist; an attempt to set a maximum backlog less than 1 or greater than the system-wide
       maximum; the user tried to alter an interface's configuration but is not privileged.

See Also
       netstat(1), intro(4n), packetfilter(4), ifconfig(8c), rc(8)

																      pfconfig(8c)
All times are GMT -4. The time now is 07:31 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy