Normalement, les paquets sur un réseau voyagent de leur source
(par exemple ton ordinateur de bureau) à leur destination (par
exemple www.gnumonks.org) à travers différents liens : environ 19
d'où je suis en Australie. Aucun de ces liens n'altèrent vraiment
ton paquet : ils le renvoient juste plus loin.
Si un de ces liens effectuait du NAT, alors il altèrerait la
source ou la destination du paquet pendant qu'il passe. Comme on
peut l'imaginer, ce n'est pas comme ca que le système a été
construit pour fonctionner, et le NAT est toujours quelque chose de
foireux. Générallement le lien qui effectue du NAT va se rappeler
comment il a modifié le paquet, et quand une réponse passera dans
l'autre sens, il effectuera la modification inverse sur ce paquet
de réponse, pour que tout fonctionne bien.
Dans un monde parfait, tu ne devrais pas. Autrement les raisons
principales sont :
Les Connections par Modem à Internet
La pluspart des FAI te donnent une seule addresse quand tu te
connecte chez eux. Tu peux envoyer des paquets avec l'adresse
source que tu veux, mais seules les réponses avec ta propre
addresse IP te seront envoyées. Si tu veux utiliser plusieurs
machines différentes (comme un réseau personnel) pour te connecter
à internet à travers cette seule connection, tu as besoin du
NAT.
C'est de loin l'utilisation la plus fréquente du NAT de nos
jours, généralement connue sous le nom de 'masquerading' dans le
monde Linux. J'appelles ca SNAT, parce que tu changes l'addresse
source du premier paquet.
Serveurs Multiples
Parfois tu veux changer l'endroit où des paquets dirigés vers
ton réseau doivent aller. Fréquemment c'est parce que (comme
ci-dessus), tu as seulement une seule addresse IP, mais tu veux
qu'on puisse accèder aux machines qui se trouvent derrière celle
avec l'adresse IP `réelle'. Si tu réécrit la destination des
paquets entrants, tu peux le faire.
Une variation commune de ceci est le load-sharing (partage de
saturation), où le paquet est distribué à une machine parmis un
ensemble. Ce type de NAT etait appelé port-forwarding sous les
versions précédentes de Linux.
Proxy Transparent
Parfois tu veux prétendre que chaque paquet qui passe à travers
ta machine Linux est destiné à un programme sur cette machine même.
Ceci est utilisé pour réaliser des proxy transparents : un proxy
est un programme qui se trouve entre ton réseau et le monde
extérieur, établissant la communication entre les deux. La partie
transparente c'est le fait que ton réseau ne sache mème pas qu'il
est en train de parler à un proxy, à moins évidemment que le proxy
ne fonctionne pas.
Squid peut être configuré pour fonctionner de cette manière, et
c'est appelé redirection ou proxy transparent dans les versions
précédentes de Linux.