Technique de masquage et de traduction d'adresse

Le terme anglais "address translation" a été souvent repris sous la forme "translation d'adresse". Les documentations en Français tendent aujourd'hui à utiliser plutôt le terme de "traduction d'adresse" dont la signification est plus proche de ce que fait réellement le noyau (et de la traduction littérale du terme anglais "translation" ). Une adresse est ainsi "traduite en une autre".

Cette technique est principalement utilisée pour partager une ou plusieurs adresses publiques pour un réseau privé (pénurie d'adresses publiques).Elle permet également de sécuriser un réseau en entrée, de limiter les sorties.

Dans la traduction d'adresse encore appelé masquage ou camouflage (ip masquerade), le routeur modifie dans le paquet l'adresse source (SNAT ou ip masquerade) ou l'adresse de destination (DNAT). La modification est réalisée lors de l'envoi et du retour du paquet.

Il y a bien deux fonctions différentes : le routage et le filtrage. Le filtrage va consister à appliquer des règles supplémentaires aux paquets qui sont routés.

Ces deux fonctions sont prises en charge par le noyau Linux. Elles sont prises en charges par "ipchains" pour les noyaux 2.2.x et par "netfilter" pour les noyaux 2.4.

Le filtrage consiste à mettre en place des règles qui seront appliquées aux paquets. Pour netfilter, on utilise la commande "iptables" qui permet de mettre en place ou modifier des chaînes de règles. Les chaînes sont des ensemble de règles qui sont appliquées séquentiellement aux paquets jusqu'à ce que l'une d'entre elles soit applicable. Il y a toujours au moins une chaîne par défaut. Ces chaînes, sont placées dans des tables.

Il y a 3 tables principales pour netfilter (filter, nat et mangle).

La table "filter" est la table par défaut qui contient les règles de filtrage.

La table "nat" contient les règles pour faire de la traduction d'adresse.

La table "mangle" contient les règles qui permettent de modifier les paquets ip, par exemple le champ TOS.

Dans la table filter, il y a 3 principales chaînes : (INPUT, OUTPUT, FORWARD).

La chaîne "INPUT" contient les règles appliquées aux paquets entrants qui sont généralement destinées aux processus locaux.

La chaîne "OUTPUT" contient les règles appliquées aux paquets sortants qui sont généralement émis par les processus locaux.

La chaîne "FORWARD" contient les règles appliquées aux paquets qui traversent.

Figure 59.3. Routage pris en charge par le noyau

Routage pris en charge par le noyau

Le routeur est une "boîte noire". Chaque paquet entrant, quelque soit l'interface d'entrée est "routé" par le noyau. Les paquets qui ne font que traverser le routeur Linux, sont concernés par la chaîne FORWARD. Ceux qui sont destinés aux processus internes, c'est à dire qui entrent, sont concernés par la chaîne INPUT, ceux émis par les processus internes, c'est à dire qui sortent, par la chaîne OUTPUT.