2.8.9.5. IPTables and IP Sets
The ipset utility is used to administer IP sets in the Linux kernel. An IP set is a framework for storing IP addresses, port numbers, IP and MAC address pairs, or IP address and port number pairs. The sets are indexed in such a way that very fast matching can be made against a set even when the sets are very large. IP sets enable simpler and more manageable configurations as well as providing performance advantages when using iptables. The iptables matches and targets referring to sets create references which protect the given sets in the kernel. A set cannot be destroyed while there is a single reference pointing to it.
The use of ipset enables iptables commands, such as those below, to be replaced by a set:
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
The set is created as follows:
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
The set is then referenced in an iptables command as follows:
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
If the set is used more than once a saving in configuration time is made. If the set contains many entries a saving in processing time is made.
~]# iptables -A INPUT -s 10.0.0.0/8 -j DROP ~]# iptables -A INPUT -s 172.16.0.0/12 -j DROP ~]# iptables -A INPUT -s 192.168.0.0/16 -j DROP
~]# iptables -A INPUT -s 10.0.0.0/8 -j DROP
~]# iptables -A INPUT -s 172.16.0.0/12 -j DROP
~]# iptables -A INPUT -s 192.168.0.0/16 -j DROP
~]# ipset create my-block-set hash:net ~]# ipset add my-block-set 10.0.0.0/8 ~]# ipset add my-block-set 172.16.0.0/12 ~]# ipset add my-block-set 192.168.0.0/16
~]# ipset create my-block-set hash:net
~]# ipset add my-block-set 10.0.0.0/8
~]# ipset add my-block-set 172.16.0.0/12
~]# ipset add my-block-set 192.168.0.0/16
~]# iptables -A INPUT -m set --set my-block-set src -j DROP
~]# iptables -A INPUT -m set --set my-block-set src -j DROP
2.8.9.5.1. Installing ipset
To install the ipset utility, issue the following command as
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
To see the usage message:
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
root
:
~]# yum install ipset
~]# yum install ipset
~]$ ipset -h ipset v6.11 Usage: ipset [options] COMMAND
~]$ ipset -h
ipset v6.11
Usage: ipset [options] COMMAND