Les développeurs de Netfilter distribuent un jeu de patches qu'ils arrangent de telle manière qu'ils peuvent être utilisés par leur script `patch-o-matic' (aussi appelé `p-o-m' ou `pom'). Le script va vous aider a sélectionner les patches que vous voulez appliquer et va les appliquer pour vous.
D'abord, vous devriez downloader la dernière version de netfilter à partir du CVS pour être sûr que vous utilisez les dernières extensions, pour cela lancez à partir du shell :
# cvs -d :pserver:cvs@pserver.netfilter.org:/cvspublic login
(quand on vous demande un mot de passe, tapez `cvs').
# cvs -d :pserver:cvs@pserver.netfilter.org:/cvspublic co netfilter/userspace netfilter/patch-o-matic
Ça va créer le répertoire de base `netfilter/', et va mettre tous les fichiers nécessaires dedans pour vous :
# ls -l netfilter/
total 3
drwxr-xr-x 2 root root 160 Nov 7 14:48 CVS/
drwxr-xr-x 13 root root 488 Nov 7 14:54 patch-o-matic/
drwxr-xr-x 9 root root 864 Nov 7 14:48 userspace/
Faites attention à ce que votre noyau soit dans `/usr/src/linux/'. Si pour quelque raison que ce soit, le noyau que vous voulez patcher ne ce trouve pas dans `/usr/src/linux/', alors vous pouvez faire pointer la variable KERNEL_DIR vers le chemin correct :
# export KERNEL_DIR=/chemin/vers/source/linux
Faites attention à ce que les dépendances soient faites. Pour être sûr, tapez :
# cd /usr/src/linux/
# make dep
Ensuite vous pouvez retourner dans le répertoire de netfilter, dans le sous-répertoire `patch-o-matic/'. Vous pouvez ensuite lancer p-o-m.
En étant dans le répertoire `patch-o-matic/', lancez p-o-m :
# ./runme extra
Welcome to Rusty's Patch-o-matic!
Each patch is a new feature: many have minimal impact, some do not.
Almost every one has bugs, so I don't recommend applying them all!
-------------------------------------------------------
Already applied: 2.4.1 2.4.4
Testing... name_of_the_patch NOT APPLIED ( 2 missing files)
The name_of_the_patch patch:
Here usually is the help text describing what
the patch is for, what you can expect from it,
and what you should not expect from it.
Do you want to apply this patch [N/y/t/f/q/?]
p-o-m va vous présenter la plupart des patches non appliqués un par un. Si un patch est déjà appliqué, il apparaitra sur la ligne `Already Applied'. Si le patch n'est pas encore appliqué, son nom va apparaître, ainsi que un petit texte d'explication détaillant l'utilité du patch. p-o-m vous explique ce qui ce passe : `NOT APPLIED ( n missing files)' signifie que le patch n'a pas encore été appliqué, alors que `NOT APPLIED ( n reject out of n chunks)' signifie en général que :
Finalement, il va vous demander si vous voulez appliquer ce patch ou non.
Une règle de bon sens est de lire attentivement le petit texte d'aide de chaque patch avant de l'appliquer. Comme il y a pour le moment BEAUCOUP de patches officiels (et certainement beaucoup d'autres non officiels), ce n'est pas une bonne idée de tous les appliquer ! Vous devriez vraiment choisir correctement pour appliquer seulement ceux dont vous avez besoin, même si ça veut dire recompiler le tout quand le besoin pour une autre extension arrive.
Patch-o-matic est principalement le script shell `./runme'. Si vous le lancez la commande sans paramètre, le message d'aide suivant s'affichera :
Usage: ./runme [--batch] [--reverse] [--exclude suite/patch-file ...] suite|suite/patch-file
--batch batch mode, automatically applying patches
(mode batch, applique les patches automatiquement).
--reverse back out the selected patches
(`patch -R' les patches sélectionnés).
--exclude excludes the named patches
(exclus les patches nommés).
Les patches sont contenus dans `patch-o-matic/pending/', `patch-o-matic/base', etc.. Ici, `pending' et `base' sont deux nom de suite. Tapez ls dans le répertoire `patch-o-matic' pour voir toutes les suites disponibles. Exemples de commandes `runme' :
./runme --batch pending
./runme --batch userspace/ipt_REJECT-fake-source.patch
La première commande va essayer d'appliquer tous les patches qui sont dans la suite submitted, et ensuite, tous les patches qui sont dans la suite pending (nous expliquons plus loin pourquoi deux suites d'un coup). La seconde commande va seulement appliquer le patch `ipt_REJECT-fake-source.patch' de la suite userspace.
Les suites de patches les plus signifiantes sont (dans l'ordre qu'elles doivent être appliquées) :
Quand vous demandez à `./runme' d'appliquer les patches de la suite `extra/', il va d'abord appliquer ceux des suites `submitted/', `pending/', et `base/'. Chaque suite maintient son propre fichier nommé `SUITE' qui décrit l'ordre dans lequel patch-o-matic doit tenter d'appliquer les patches. Par exemple, ce que j'ai décrit plus haut est très vite expliqué avec le contenu du fichier `SUITE' de la suite `userspace/' :
# cat userspace/SUITE
submitted pending base extra userspace
Une fois que vous avez appliqué tous les patches que vous vouliez, l'étape suivante est de recompiler votre noyau et de l'installer. Ce HOWTO ne va pas expliquer comment faire ça. A la place, vous devriez lire le Linux Kernel HOWTO.
Pendant que vous configurez votre noyau, vous verrez apparaître de nouvelles options dans ``Networking Options -> Netfilter Configuration''. Choisissez les options dont vous avez besoin, recompilez puis installez votre nouveau noyau.
Une fois que votre nouveau noyau est installé, continuez et installez le package ``iptables'', à partir du répertoire `userspace/' comme suit :
# make && make install
Et voilà ! Votre tout nouveau package iptables tout beau est maintenant installé ! Il est temps d'utiliser les nouvelles fonctionnalités offertes.