D'accord, c'est peut-être parce que je suis dense ou que je ne trouve tout simplement pas la bonne source, mais je ne comprends pas pourquoi l'une de ces configurations IPTABLES serait meilleure que l'autre.
Voici ma configuration:
J'ai une boîte qui sert de proxy transparent et un routeur ou trie. Il possède deux interfaces, ETH0 et ETH1, et le schéma d'adresse suivant:
ETH0 = DHCP ETH1 = 192.168.5.1/24 servant DHCP pour le réseau 192.168.5.0/24 aux clients derrière lui dans le LAN
J'ai installé et écouté privoxy sur le port 8080 en tant que proxy transparent. Ce que j'accomplis avec cette configuration est de pouvoir déposer cette boîte dans un réseau existant avec une configuration minimale et des clients attachés au proxy.
Voici mon fichier IPTABLES original
*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT
Cette configuration fonctionne correctement et le trafic circule sans problème. J'obtiens l'adresse IP des clients d'origine dans les fichiers journaux privoxy, et la vie est bonne.
Ma confusion survient lorsque je commence à regarder les configurations des autres et que je vois qu'ils utilisent DNAT au lieu de REDIRECT, et j'essaie de comprendre le véritable avantage de l'un sur l'autre. Voici un exemple de configuration:
*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to 192.168.5.1:8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT
Encore une fois, cette configuration fonctionne aussi et me donne tout ce dont j'ai besoin du point de vue de la journalisation ...
Qu'est-ce qui est juste, ou peut-être PLUS, que l'autre?
Merci d'avoir pris le temps de lire jusqu'ici ...
REDIRECT
ne modifie pas l'adresse IP de destination à envoyer à la machine elle-même, comme l'a répondu Warner @. Mais je dirais que cette réponse n'est pas totalement correcte, ou un peu trompeuse.REDIRECT
n'est pas seulement pour rediriger les paquets locaux. C'est vraimentDNAT
dans lequel l'adresse IP de destination à utiliser est implicite, 127.0.0.1 s'il s'agit d'un paquet local ou l'adresse IP de l'interface machine sinon, 192.168.5.1 dans le cas de l'OP.Donc, dans cette question, quelle que soit la destination finale, les paquets doivent d'abord atteindre le proxy, c'est donc
REDIRECT
parfaitement adapté.Étant donné que
REDIRECT
vous n'avez pas besoin de spécifier l'adresse IP, elle prendra simplement la bonne, elle présente certains avantages par rapport àDNAT
:Si l'adresse IP de la machine change pour une raison quelconque, vous n'avez pas besoin de modifier vos règles, et en particulier
DNAT
ne fonctionnera pas pour les interfaces contrôlées par DHCP.Vous pouvez écrire et maintenir les mêmes règles pour plusieurs systèmes (plusieurs instances de proxy par exemple) sans conserver de versions légèrement différentes en raison des adresses IP spécifiques.
la source