Optimizacion de nf_conntrack

0
1441

En este artículo, daré un ejemplo de optimización de los parámetros nf_conntrack para un servidor NAT con carga alta.

Primero, veamos el número máximo y actual de conexiones monitoreadas (el máximo suele ser 524288):

/sbin/sysctl net.netfilter.nf_conntrack_count
/sbin/sysctl net.netfilter.nf_conntrack_max

Aumentemos el valor máximo y el tamaño de hash (normalmente tengo hashsize = nf_conntrack_max / 8):

/sbin/sysctl -w net.netfilter.nf_conntrack_max=4194304
echo "524288" > /sys/module/nf_conntrack/parameters/hashsize

Para evitar que el cambio se restablezca después de reiniciar el sistema, especifique en /etc/sysctl.conf:

net.netfilter.nf_conntrack_max = 4194304

Y también hashsize en /etc/rc.local:
echo “524288” > /sys/module/nf_conntrack/parameters/hashsize

Ahora veamos los valores de tiempo de espera actuales:
sysctl -a | grep conntrack | grep timeout

Los valores predeterminados suelen ser:

net.netfilter.nf_conntrack_generic_timeout = 600
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000 # 5days
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 180

En servidores muy cargados, es aconsejable reducir ligeramente los valores de tiempo de espera, especialmente durante ataques DDOS, o deshabilitar nf_conntrack si no es necesario y el servidor no se usa para NAT, por ejemplo, cambie algunos valores de tiempo de espera a tales valores (dejé las líneas comentadas sin cambios):

net.netfilter.nf_conntrack_generic_timeout=60
net.netfilter.nf_conntrack_icmp_timeout=10
#net.netfilter.nf_conntrack_tcp_timeout_close=10
net.netfilter.nf_conntrack_tcp_timeout_close_wait=20
net.netfilter.nf_conntrack_tcp_timeout_established=1800
net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30
#net.netfilter.nf_conntrack_tcp_timeout_last_ack=30
#net.netfilter.nf_conntrack_tcp_timeout_max_retrans=300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv=30
net.netfilter.nf_conntrack_tcp_timeout_syn_sent=60
net.netfilter.nf_conntrack_tcp_timeout_time_wait=60
#net.netfilter.nf_conntrack_tcp_timeout_unacknowledged=300
#net.netfilter.nf_conntrack_udp_timeout=30
net.netfilter.nf_conntrack_udp_timeout_stream=60

 

Saludos