Avec la queue netfilter, nous sommes plus souvent limités par notre imagination que par la technique. Il faut dire que l'idée de « faire des règles iptables » était peu attrayante et nous bridait un peu. Dans les numéros précédents, nous avons vu comment, à l'aide de bindings, nous pouvions accéder à cette queue et émettre un verdict. Ici, nous allons utiliser une autre fonctionnalité : le marquage de paquet.
1. Introduction
La libnetfilter_queue a considérablement changé le principe de décision qui, délégué en userspace, nous permet d'envisager des scénarios qu'il était difficile de mettre en œuvre auparavant. Nous allons utiliser la libnetfilter_queue pour construire un répartiteur de charge et de haute disponibilité relativement sommaire, mais qui nous permettra par l'exemple d'appréhender le marquage de paquet.
Pour connaître la charge des serveurs, nous utiliserons SNMP, mais bien des scénarios sont envisageables, du ping au programme dédié sur les serveurs, d'où l'intérêt d'utiliser un langage de haut niveau et pour changer un peu, nous utiliserons Vala [1], parce que, entre autres : Vala, c'est sympa !
2. Le marquage
Par défaut, un paquet n'est pas marqué ou plutôt sa mark (un uint32) est à 0. Le marquage de paquet se fait à l'aide de la cible MARK et son utilisation est limitée à la table mangle :
$iptables -t mangle -A PREROUTING -j...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première