2012-05-23 3 views
7

Ich habe ein Ubuntu Linux System, das als Gateway System mit zwei Schnittstellen agiert. Eine Schnittstelle ist für das lokale Netzwerk und eine Schnittstelle ist für das Internet. Ich bin in der Lage, den Verkehr problemlos durch den Verkehr zu leiten. Ich verwende zwei iptables Regeln ausgehenden Datenverkehr von der internen Schnittstelle zu übermitteln:Wie benutze ich iptables in Linux, um http und https Verkehr zu einem transparenten Proxy weiterzuleiten

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

Ich brauche jetzt eine iptables Regel, filtert und leitet alle TCP-Port 80 und 443 Verkehrs verlassen mein Netzwerk durch die eth1 Schnittstelle erstellen und versenden es zu einem Proxy-Server, der sich auf einer Loopback-Schnittstelle auf TCP-Port 9090 befindet.

Ich habe überall in SO gesucht, aber ich konnte kein Beispiel finden, das funktioniert. Gibt es einen effizienten Weg, dies zu tun?

+2

Off-topic; gehört auf [sf] –

Antwort

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

HTTPS kann nicht mit einem transparenten Proxy verwendet werden. Es gibt einige Hacks, aber es macht keinen Sinn und ist nutzlos.

+0

Hey diegows, ich denke, dass diese Regel nur den Port des Pakets und nicht die Ziel-IP des Pakets ändern würde, nicht wahr? – ajt

+0

REDIRECT Ziel leitet das Paket an den lokalen Rechner, IMMER :) –

+0

HTTPS transparenten Proxy: 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 

Wo:

  • Tintenfisch-Box: Ihr Tintenfisch Server
  • local-Netzwerk: Ihr Netzwerk (in meinem Fall ist 192.168.0.0/24)
  • iptables-box: wo sich Ihre iptables Software befindet (normalerweise das Gateway, in meinem Fall 192.168.1.1)

Der erste sendet die Pakete von der iptables-Box zur squid-box. Die zweite sorgt dafür, dass die Antwort über iptables-box zurückgesendet wird, anstatt direkt an den Client (das ist sehr wichtig!). Der letzte stellt sicher, dass die iptables-box die entsprechenden Pakete an die squid-box weiterleitet. Es wird möglicherweise nicht benötigt. YMMV. Beachten Sie, dass wir '-i eth0' und dann '-o eth0' angegeben haben, was für die Eingabeschnittstelle eth0 und die Ausgabeschnittstelle eth0 steht. Wenn Ihre Pakete auf verschiedenen Schnittstellen ein- und ausgehen, müssen Sie die Befehle entsprechend anpassen.

diese Befehle an Ihre entsprechenden Startskripts unter /etc/rc.d/

VON hinzufügen: für SO http://www.tldp.org/HOWTO/TransparentProxy-6.html

Verwandte Themen