Les noyaux officiels sont incapables d'utiliser le marquage de paquets conjointement avec ip_queue. Il est donc nécessaire de modifier le noyau (version antérieures à 2.6.14), ce qui est possible grâce au correctif ip_queue_vwmark intégré dans patch-o-matic-ng de Netfilter. Cette opération va à la fois fournir une version modifiée du module ip_queue et du fichier libipq.a.
Une fois libipq.a installé, vous pouvez alors compiler nufw :
./configure --with-user-mark ${EXTRA_OPTIONS_YOU_LIKE}
make
make install
nufw peut alors être exécuter avec l'option -m pour activer le support du marquage utilisateur.
Cette option est compatible avec l'option -M vue au-dessus.
Dans la mesure où NuFW n'utilise que les premiers paquets de chaque connexion, il ne peut effectuer le marquage des autres. Il est donc nécessaire d'utiliser la cible CONNMARK[1]. Cette cible mémorise et rétabli automatiquement le marquage sur tous les paquets concernés d'une connexion. Exemple de paramétrage simple :
iptables -A PREROUTING -t mangle -j CONNMARK --restore-mark iptables -A POSTROUTING -t mangle -j CONNMARK --save-markLa première règle récupère le marquage existant à l'arrivée d'un paquet et la seconde sauvegarde le marquage appliqué afin de pouvoir le restaurer plus tard.
La variable de nuauth.conf nuauth_finalize_packet_module liste les modules qui s'attache à
un hook appelé juste avant l'envoi de la réponse relative à un paquet de nufw.
Cela est généralement utilisé pour marquer le paquet suivant la stratégie désirée.
En découpant la marque (de 32 bits) en plusieurs champs de bits, il est possible
de définir une politique de marquage complexe qui peut ensuite être utilisée
Une documentation complète est disponible dans le fichier suivant README.mark
Le marquage Netfilter peut être utilisé pour la qualité de service et le routage.
Il devient donc possible de préciser des routes spécifiques à tel ou tel utilisateur grâce, par exemple, à la commande :
ip rule add fwmark XXX lookup TABLE
Il en va de même pour les opération de QoS: en utilisant la commande tc filter on peut alors répartir le trafic dans des classes spécifiques en fonction de l'identifiant utilisateur :
tc filter add dev IFACE prio 5 protocol ip handle 102 fw flowid FLOWID
Pour plus d'information sur le routage avancé et la qualité de service, on se référera utilement au guide lartc.
| [1] | CONNMARK est disponible dans patch-o-matic version antérieure à 2.6.11, et est inclu dans le noyau depuis la version 2.6.12 |