Crochet Netfilter
Crochet Netfilter (en anglais netfilter hook) : point d'interception placé par Netfilter sur le chemin des paquets dans le noyau Linux, auquel se rattachent les règles de filtrage et de traduction d'adresses.
Il y en a cinq pour IPv4 et IPv6. prerouting voit tout ce qui arrive, avant la décision de routage (traduction d'adresse de destination). input voit les paquets destinés à un processus local : le crochet principal d'un pare-feu d'hôte. forward voit ce qui traverse une machine qui route. output voit ce qu'émettent les processus locaux : c'est là que se fait le filtrage en sortie. postrouting voit tout ce qui sort (traduction d'adresse source). Avec nftables, une chaîne de base se rattache explicitement à un crochet : type filter hook input priority filter; policy drop;. nftables offre aussi un crochet ingress propre à une interface (famille netdev), avant même prerouting.
Plusieurs chaînes peuvent partager un crochet ; le noyau les parcourt par priorité croissante, et un accept n'est pas définitif (le paquet passe à la chaîne suivante) alors qu'un drop l'est. C'est ce qui explique les surprises entre ufw, Docker et une table nftables écrite à la main. Exemple classique : Docker réécrit la destination d'un port publié au crochet prerouting ; le paquet n'est alors plus destiné à la machine, prend forward, et les règles d'ufw, posées sur input, ne le voient jamais.
Dans les cours
- Linux : administration système, leçon 8 : Le pare-feu de l'hôte
- Kubernetes : réseau et exposition, leçon 3 : Le chemin d'un paquet