2012-05-23 41 views
7

Ho un sistema Linux Ubuntu che agisce come un sistema gateway con due interfacce su di esso. Un'interfaccia è per la rete locale e un'interfaccia è per Internet. Sono in grado di instradare il traffico attraverso di esso senza alcun problema. Io uso due iptables regole per inoltrare il traffico in uscita dall'interfaccia interna:Come usare iptables in linux per inoltrare il traffico http e https a un proxy trasparente

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

ora ho bisogno di creare un iptables regola che filtra e reindirizza tutte le porte TCP 80 e 443 il traffico lasciando mia rete attraverso l'interfaccia eth1 e inviare a un server proxy che risiede su un'interfaccia loopback sulla porta tcp 9090.

Ho cercato in tutta SO ma non sono riuscito a trovare un esempio che funzioni. C'è un modo efficace per farlo?

+2

Off-topic per SO; appartiene a [sf] –

risposta

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

HTTPS non può essere utilizzato con un proxy trasparente. Ci sono alcuni hack, ma non ha alcun senso ed è inutile.

+0

Hey diegows, penso che questa regola cambierebbe solo la porta del pacchetto e non l'IP di destinazione del pacchetto, vero? – ajt

+0

REDIRECT target reindirizza il pacchetto alla macchina locale, SEMPRE :) –

+0

Proxy trasparente HTTPS: https://www.tectut.com/2015/08/configure-squid-as-http-and-https-transparent-proxy/ –

1
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 

Dove:

  • calamaro-box: il server squid
  • locale-rete: la rete (nel mio caso è 192.168.0.0/24)
  • iptables-box: dove risiede il software iptables (di solito il gateway, nel mio caso 192.168.1.1)

Il primo invia i pacchetti a calamaro da iptables-box. Il secondo si assicura che la risposta venga rispedita attraverso iptables-box, invece che direttamente al client (questo è molto importante!). L'ultimo si assicura che l'iptables-box inoltrerà i pacchetti appropriati a squid-box. Potrebbe non essere necessario. YMMV. Si noti che abbiamo specificato '-i eth0' e quindi '-o eth0', che rappresenta l'interfaccia di input eth0 e l'interfaccia di output eth0. Se i pacchetti stanno entrando e uscendo su interfacce diverse, sarà necessario regolare i comandi di conseguenza.

aggiungere questi comandi per i vostri script di avvio appropriate sotto /etc/rc.d/

DA: http://www.tldp.org/HOWTO/TransparentProxy-6.html

Problemi correlati