Optimizar el filtrado de la red del Rendimiento con el Uso de ipset
Si usted escribe un montón de reglas similares se basa en el simple IP, el puerto, o ambos, considere el uso de ipset
para optimizar el filtrado de la red del rendimiento.
Por ejemplo:
iptables -s 192.168.1.11 -j ACCEPT
iptables -s 192.168.1.27 -j ACCEPT
iptables -s 192.168.1.44 -j ACCEPT
... hundreds of similar rules ...
iptables -s 192.168.251.177 -j ACCEPT
Esto significa que un paquete con la dirección de origen de 192.168.251.177 debe recorrer cientos de reglas antes de que pueda llegar a su veredicto de ACEPTAR.
Por supuesto, experimentados administradores de sistemas se divide en las reglas, por subred. Pero que todavía significa cientos de reglas.
ipset
al rescate!
En primer lugar, definir una IP Set de ipmap
tipo de:
ipset -N Allowed_Hosts ipmap --network 192.168.0.0/16
A continuación, rellenar con las direcciones:
for ip in $LIST_OF_ALLOWED_IP; do ipset -A Allowed_Hosts $ip; done
Finalmente, reemplazar los cientos de reglas iptables arriba con una regla:
iptables -m set --match-set Allowed_Hosts src -j ACCEPT
Cuando llega un paquete, netfilter llevará a cabo un muy rápida de mapa de bits de búsqueda para el paquete de la fuente (src) IP en contra de la Allowed_Hosts
IP Set. Todos los paquetes que vienen desde 192.168.0.0/16 experimentará una regla. Y creo yo que la búsqueda de un mapa de bits, al menos, dos orden de magnitud más rápido que realizar cientos de regla iptables-comprobación.
ipset
no está limitado a, las direcciones IP. También puede coincidir con base en los puertos, IP-puerto tupla, red/subred de direcciones IP-MAC tupla, y así sucesivamente y así sucesivamente. Y puede coincidir con los criterios de origen o de destino, o una mezcla de ambos (en el caso de tuplas).
Y, finalmente, ipset
usted puede colocar de forma automática direcciones IP en listas negras/listas blancas. Estas listas negras/listas blancas también puede 'edad', por lo tanto la eliminación automática de la dirección IP después de un período de tiempo configurable ha pasado.
Por favor refiérase a ipset
's página de manual para más detalles.
NOTA MUY IMPORTANTE:
Algunas distribuciones de Linux no tienen "out-of-the-box" apoyo para ipset. Dos distros sé que no admiten ipset fuera-de-la-caja de Ubuntu y Debian. Ejecución aptitude
de ellos tentadoramente muestra que un ipset
paquete está disponible, pero me fuertemente recomendamos no instalar ese paquete por dos razones: (1) Es una versión antigua de ipset, y (2) no funciona de todos modos.
En su lugar, descargue ipset
's de la fuente de su sitio web: http://ipset.netfilter.org/install.html
Alternativamente, si usted usa xtables-addons
, ipset está incluido en su origen: http://xtables-addons.sourceforge.net/
Edit: lo anterior es cierto para Ubuntu 10.04, la última LTS en el momento de la escritura. Ubuntu 12.04 tiene soporte incorporado para ipset
y/o xtables-addons
, en el sentido de que la instalación del paquete en cuestión correctamente permite que las características. No conozco la situación en Debian, a pesar de que, de no haberla utilizado durante bastante tiempo...