web-dev-qa-db-fra.com

Comment utiliser Iptables sous Linux pour transmettre le trafic HTTP et HTTPS sur un proxy transparent

J'ai un système Ubuntu Linux en agissant comme un système de passerelle avec deux interfaces dessus. Une interface est destinée au réseau local et une interface est pour Internet. Je suis capable de parcourir la circulation à travers elle sans problème. J'utilise deux règles iptables pour transmettre le trafic sortant de l'interface interne:

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT

J'ai maintenant besoin de créer une règle iptables qui filtre et redirige tous les Port TCP 80 et 443 Trafic, laissant mon réseau à travers la eth1 Interface et envoyez-la à un serveur proxy qui réside sur une interface de bouclage sur le port TCP 9090.

J'ai cherché partout SO mais je n'ai pas été en mesure de trouver un exemple qui fonctionne. Y a-t-il un moyen efficace de le faire?

11
ajt
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 9090

HTTPS ne peut pas être utilisé avec un proxy transparent. Il y a des hacks, mais cela n'a aucun sens et est inutile.

16
Diego Woitasen
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box
iptables -A FORWARD -s local-network -d squid-box -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT

Où:

  • Squid-box : votre serveur Squid
  • local-réseau : Votre réseau (dans mon cas est de 192.168.0.0.0/24)
  • iptables-box : où votre logiciel iptables réside (généralement la passerelle, dans mon cas 192.168.1.1)

Le premier envoie les paquets à la boîte à calmars à partir d'iptables-box. La seconde veille à ce que la réponse soit renvoyée dans une boîte iptables, au lieu de directement au client (c'est très important!). Le dernier s'assure que la boîte IPTABLE transmettra les paquets appropriés à la casse-croûte. Cela peut ne pas être nécessaire. Ymmv. Notez que nous avons spécifié '-i Eth0', puis '-o Eth0', qui signifie interface d'entrée Eth0 et interface de sortie Eth0. Si vos paquets entrent et laissent sur différentes interfaces, vous devrez régler les commandes en conséquence.

Ajoutez ces commandes à vos scripts de démarrage appropriés sous /etc/rc.d/

De: - http://www.tldp.org/howto/transparentproxy-6.html

1
Fabrizio