descriptionThe netfilter.org "ipset" project
homepage URLhttp://ipset.netfilter.org/
repository URLhttps://git.netfilter.org/ipset
ownerphil@netfilter.org
last changeSat, 22 Aug 2026 06:54:42 +0000 (22 08:54 +0200)
last refreshThu, 1 Oct 2026 10:54:31 +0000 (1 12:54 +0200)
content tags
README
This is the ipset source tree. Follow the next steps to install ipset.
If you upgrade from an earlier 5.x release, please read the UPGRADE
instructions too.

0. You need the source tree of your kernel (version >= 2.6.32)
   and it have to be configured with ip6tables support enabled,
   modules compiled. For kernel versions < 2.6.39 please apply
   the netlink.patch against your kernel tree, which adds the
   new subsystem identifier for ipset.

   Recompile and install the patched kernel and its modules. Please note,
   you have to run the patched kernel for ipset to work.

   The ipset source code depends on the libmnl library so the library
   must be installed. You can download the libmnl library from

	git://git.netfilter.org/libmnl.git

1. Initialize the compiling environment for ipset. The packages automake,
   autoconf, pkg-config and libtool are required.

   % ./autogen.sh

2. Run `./configure` and then compile the ipset binary and the kernel
   modules.

   Configure parameters can be used to to override the default path
   to the kernel source tree (/lib/modules/`uname -r`/build),
   the maximum number of sets (256), the default hash sizes (1024).
   See `./configure --help`.

   % ./configure
   % make
   % make modules

3. Install the binary and the kernel modules

   # make install
   # make modules_install

   After installing the modules, you can run the testsuite as well.
   Please note, several assumptions must be met for the testsuite:

	- the destination for kernel logs is /var/log/kern.log, OR,
	  if running from a network namespace, iptables -j LOG can
	  write to the kernel ring buffer (dmesg).
	- by default tests run in a extra namespace to avoid
	  conflicts with the networks used by the tests:
	  10.255.255.0/24 and 1002:1002:1002:1002::/64.
	- sendip utility OR scapy is installed

   # make tests

4. Cleanup the source tree

   % make clean
   % make modules_clean

That's it! 

Read the ipset(8) and iptables(8), ip6tables(8) manpages on how to use
ipset and its match and target from iptables.

Compatibilities and incompatibilities:

- The ipset 6.x userspace utility contains a backward compatibility
  interface to support the commandline syntax of ipset 4.x.
  The commandline syntax of ipset 6.x is fully compatible with 5.x.
- The ipset 6.x userspace utility can't talk to the kernel part of ipset 5.x
  or 4.x.
- The ipset 6.x kernel part can't talk to the userspace utility from
  ipset 5.x or 4.x.
- The ipset 6.x kernel part can work together with the set match and SET
  target from iptables 1.4.7 and below, however if you need the IPv6 support
  from ipset 6.x, then you have to use iptables 1.4.9 or above.

The ipset 6.x can interpret the commandline syntax of ipset 4.x, however
some internal changes mean different behaviour:

- The "--matchunset" flag for the macipmap type is ignored and not used
  anymore.
- The "--probes" and "--resize" parameters of the hash types are ignored
  and not used anymore.
- The "--from", "--to" and "--network" parameters of the ipporthash,
  ipportiphash and ipportnethash types are ignored and not used anymore.
- The hash types are not resized when new entries are added by the SET
  target. If you use a set together with the SET target, create it with
  the proper size because it won't be resized automatically.
- The iptree, iptreemap types are not implemented in ipset 6.x. The types
  are automatically substituted with the hash:ip type.
shortlog
2026-08-22 Florian Westphaltests: runtest.sh: do kmemleak scan if availablemaster
2026-07-29 Jozsef Kadlecsiktests: restore using sendip when available
2026-07-29 Florian Westphaltests: match_target.t check for proper cidr matching
2026-07-29 Florian Westphaltests: hash:net,iface.t: add reproducer for UaF
2026-07-29 Florian Westphaltests: prefer diff -u to cmp
2026-07-29 Florian Westphaltests: hash:net.t: prefer tail -n
2026-07-29 Florian Westphaltests: check_extensions: introduce and use IPSET_MACHIN...
2026-07-13 Florian Westphaltests: runtest.sh: add sendip emulation via scapy
2026-07-13 Florian Westphaltests: make setlist_resize.sh more verbose on error
2026-07-13 Florian Westphaltests: setlist_ns.sh: use local ipset binary and don...
2026-07-13 Florian Westphaltests: check_klog.sh: unclutter stderr
2026-07-13 Florian Westphaltests: diff.sh: preserve file name
2026-07-13 Florian Westphaltests: runtest.sh: run inside namespace
2026-07-13 Florian Westphaltests: make runtest.sh work with readonly-cwd
2026-07-13 Jozsef Kadlecsiktests: stress-test delete after add
2026-03-20 Phil Suttertests: Fix for standalone calls to setlist_resize.sh
...
tags
16 months ago v7.24 v7.24
21 months ago v7.23 v7.23
2 years ago v7.22 v7.22
2 years ago v7.21 v7.21
2 years ago v7.20 v7.20
3 years ago v7.19 v7.19
3 years ago v7.18 v7.18
3 years ago v7.17 v7.17
3 years ago v7.16 v7.16
5 years ago v7.15 v7.15
5 years ago v7.14 v7.14
5 years ago v7.13 v7.13
5 years ago v7.12 v7.12
5 years ago v7.11 v7.11
5 years ago v7.10 v7.10
5 years ago v7.9 v7.9
...
heads
5 weeks ago master
6 years ago region_lock