Description du problème
ip_conntrack
est une fonctionnalité du noyau permettant le suivi des
connexions, ce qui est utile pour faire du NAT, un firewall stateful, etc.
En revanche, pour un routeur, c'est généralement inutile, et ça consomme
potentiellement beaucoup ressources pour rien. On peut assez vite se
retrouver avec des tas de messages du genre dans dmesg
:
nf_conntrack: table full, dropping packet
La taille de la table de suivi peut être consultée (taille maximale et taille courante) :
$ cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
65536
$ cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count
65536
Désactiver le connection tracking
Il faut blacklister le module nf_conntrack
, ainsi que les quelques
modules qui en dépendent directement (gestion du NAT, etc).
$ cat /etc/modprobe.d/nf_conntrack-blacklist.conf
blacklist nf_conntrack
blacklist nf_conntrack_ipv4
blacklist nf_nat
blacklist iptable_nat
En revanche, iptables
a la mauvaise habitude de recharger ces modules
quand on lui demande d'afficher les règles de firewall... Pour éviter
cela, il faut forcer iptables
à respecter la blacklist lorsqu'il appelle
modprobe
:
# echo '/sbin/modprobe -b' > /proc/sys/kernel/modprobe
Pour tester :
$ sudo iptables -L -v -t nat
iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)