
Ich habe einen Server mit einer statischen IP-Adresse zu vermieten und möchte nun einen transparenten Proxy auf diesem Server einrichten.
nachdem ich Squid testweise mit dem Listener „http_access allow all“ konfiguriert hatte, wollte ich die iptables einrichten. Dabei stellte ich fest, dass ich nur eine Ethernet-Verbindung mit meiner statischen IP-Adresse habe. Ich konnte aber keine Dokumentation finden, die mir zeigte, wie ich das konfigurieren kann. (Ich habe viel darüber gefunden, wie man Squid mit zwei physisch getrennten Netzwerkkarten konfiguriert, aber nicht mit einer)
Ausgabe:
root@1:~# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:49 errors:0 dropped:0 overruns:0 frame:0
TX packets:49 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3536 (3.5 KB) TX bytes:3536 (3.5 KB)
venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: ::2/128 Scope:Compat
inet6 addr: 2a01:[....]external-ipv6[...]/128 Scope:Global
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:551353 errors:0 dropped:0 overruns:0 frame:0
TX packets:455717 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:351211942 (351.2 MB) TX bytes:267054641 (267.0 MB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:[...]external-ipv4[...] P-t-P:[...]external-ipv4[...] Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
ich habe viel über iptables und einiges über ebtables gelesen. und jetzt stecke ich fest. ich weiß nicht, welcher Schritt als nächstes ansteht.
meine iptables sind im Moment völlig leer.
benötige ich ebtables für einen korrekt funktionierenden transparenten Proxy? reichen die richtigen iptables aus, um dies ohne ebtables zu erledigen? Wenn ja, wäre ich Ihnen sehr dankbar, wenn Sie mir eine Zeichenfolge zum Festlegen geben könnten.
#
Quellen: wiki[.]ubuntuusers[.]de/Squid http://freecode.com/articles/configuring-a-transparent-proxywebcache-in-a-bridge-using-squid-and-ebtables http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html
#
insbesondere dieses Zitat sollte mir erklären, wie das geht, aber ich verstehe es nicht ...
Als nächstes habe ich folgende Regeln hinzugefügt, um alle HTTP-Anfragen (die an Port 80 eingehen) an den Squid-Server-Port 3128 weiterzuleiten:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
mit
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128
iptables -t nat -A PREROUTING -i venet0:0 -p tcp --dport 80 -j REDIRECT --to-port 3128
das sollte funktionieren, tut es aber nicht ...
Antwort1
In diesem Szenario können Sie keinen transparenten Proxy verwenden.
Ein transparenter Proxy muss in der Netzwerkroute des Datenverkehrs enthalten sein, damit er den gesamten Datenverkehr abfangen und umschreiben kann, um ihn an Squid umzuleiten. Da sich Ihr Server jedoch außerhalb Ihres Netzwerkpfads befindet, haben Sie dazu keine Möglichkeit.
Wenn Sie diesen Server als Proxy verwenden möchten, muss es sich um einen normalen Forward-Proxy handeln.