netl - customizable network logger and sniffer
netl [options] ['config rule'] [...]
netl is a customizable low level network logger.
netl can be configured to look for particular TCP, UDP or ICMP
packets, or can be setup to look for generic IP packets or even raw
ethernet frames.
netl's TCP filters allow individual SYNs and ACKs (or any combination
of flags) to be logged, or dumped into a file for later perusal. the
companion program neta (1) is used to disassemble those packets in a
human readable form. typically, when a packet is dumped, it is sent into
/usr/local/lib/netl/dump, which should be readable only to root.
netl is customizable and extendable. version 1.02 introduces a highly
modular design, which allows you to write your own low level filters and
action modules in c. for more information see the netl_module (1) man
page.
netl deals with low level packets and is not concerned with source or
destination addresses. by default, these fields in a IP packet are not
checked, so netl can be used as a sniffer, in order to examine packets
which are caught by the interface, but not necessarily intended for your
machine. sniffers are legitimate software, so long as you don't misuse
them. DO NOT MISUSE netl , IT IS FORBIDDEN BY THE AUTHOR.
netl can be configured in one of three possible ways. the first, and
most common is through a configuration file. see netl.conf (5) for
specific details on the format of that file. the second is by specifying
a rule on the command line. in this case, the configuration file will
not be read, and only rules specified on the command line will be used.
this is typically useful for debugging netl and constructing new rules
for testing. the -z option is suggested in this case. the final method
of configuring netl is to write a filter or output module your self.
this is by far the most efficient, but also the most time consuming, as
such modules must be written in C. see the netl_module (1) man page
for details.
all boolean options can be followed by a + or - to turn the value on or
off (respectively). the default is to turn the option on, even if the
default value is also on.
-f filename , --file filename
use an alternative config file. if this option is not specified,
then /etc/netl.conf shall be used.
-z , --foreground , --background
run netl in the foreground, and send output to stdout.
-o filename , --tee filename
when used with -z, this option sends output to filename as well
as stdout.
-r , --resolve , --dont-resolve
resolve IP numbers into fully qualified internet addresses, when
logging packets. by default this is on.
-d , --debug
print out configuration and quit.
-h , --help
print out usage and quit.
-i module , --input module
use module as the input module. by default, the module
default is used (which should be a symbolic link to the appropriate
module on your architecture).
-L dir , --lib-dir dir
specify an alternate module directory. by default,
/usr/local/lib/netl is used.
--generate-c
generate a netl module in c format which can then be compiled by
gcc. typically, this is done through the netl compiler, netlcc (1) .
--output-name filename
when generating a c file (via that --generate-c option), this
option specifies the c file name. this is generally invoked by
netlcc (1) .
--stdout
combination of --generate-c and --output-name which sends the C
code to stdout.
--dump-dir directory
specify a directory to put dumped datagrams into. this is by
default /usr/local/lib/netl/dump
-6
use experimental IPv6 filters. netl has special IPv6 filters
which it uses when this option is invoked. netl will still filter IPv4
packets correctly. see netl.conf (5) for more information.
an older version of netl reportedly dumps core on sparc linux. i do
not have access to this platform so i have no idea why. if someone could
help me out in this area i would appreciate it.
netl should work on any linux platform. however i've only been
able to test it on intel and alpha linux. i have made consideration of
the possibility that the platform netl is compiled on may not in fact
be little endian. the big endian code is actually simpler and leads me
to think big endian hardware is better for networking--but i have no bid
endian hardware to test this on.
netl probably will not work on any other unix platform with out a lot
of work. if you are successful in porting netl to other platforms,
please let me know what you did and i can add the appropriate code to my
netl source. what you will need to do, is create an input module for
your platform. take a look at in/stub.c for a stub module. the rest of
the code is pretty good portable ANSI C code.
i have attempted porting netl to Windows 32, but have failed
miserably. i have never in my life encountered an operating system which
was more programmer hostile in my life. i have experience with VMS mind
you.
tyler parsons
i couldn't have done this program without the networking knowledge of
tyler parsons. even after that, his alpha/beta testing has been
extremely useful in making netl what it is today.
gordon lyon
fellow computer science student, and handy dandy beta tester.
jeff thompson
early versions of netl were heavily derived from a program by jeff
thompson which didn't even quite work right. i had to debug and correct
it. when i got deeper in to the problem i discovered that his
`synlogger' (as it was called) was highly specialized and didn't have to
be. netl was thus born.
graham the ollis
my name is graham the ollis, i'm a computer science/math major at the
university of arizona. or private contractor working as CORE software.
if you have anything relevant or non-relevant to say about netl then i
would certainly like to hear from you. especially if you have
improvements for netl.
netl (8) , netl.conf (5) , netlcc (1) , netl_install (1) ,
netl_module (1) , neta (1) , hwpassive (8) , hwlookup (1) ,
dcp (1) and xd (1)
there are almost certainly bugs, please report them to me. send bugs and
bug fixes to netl@netl.org. the netl home page is at
http://www.netl.org,which should contain up to date information on
netl .
i have attempted to write pretty readable documentation, however, i'm not
really the best technically writer. if you are, maybe we could
colaborate?
Copyright 1996, 1997, 1999 Graham THE Ollis
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
675 Mass Ave, Cambridge, MA 02139, USA.
Graham THE Ollis You can contact the netl team at netl@netl.org.
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
PORTABILITY
CREDITS
SEE ALSO
BUGS
COPYING
AUTHOR
Contact Information
1999 CORE software international