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?
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.
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ù:
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/