it-swarm.com.de

Wie richte ich einen Client für einen transparenten Squid-Proxy ein?

Serverdetails

Squid Transparent Proxy Version: 3.3.8
OS: Ubuntu Server 14.04
Server IP: 192.168.1.3

Squid-Konfigurationsdatei

(ohne Kommentare mit grep)

[email protected]:~# grep -v '^$\|^\s*\#' /etc/squid3/squid.conf
acl SSL_ports port 443
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # Gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl CONNECT method CONNECT
acl mylocalnetwork src 192.168.1.0/24
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access allow mylocalnetwork
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3128 transparent
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_dir aufs /opt/squid/cache 10000 14 256
maximum_object_size 128000 KB
cache_swap_low 95
cache_swap_high 99
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^Gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern -i \.(gif|png|jp?g|ico|bmp|tiff?)$ 10080 95% 43200
refresh_pattern -i \.(rpm|cab|deb|exe|msi|msu|Zip|tar|xz|bz|bz2|lzma|gz|tgz|rar|bin|7z|doc?|xls?|ppt?|pdf|nth|psd|sis)$ 10080 90% 43200
refresh_pattern -i \.(avi|iso|wav|mid|mp?|mpeg|mov|3gp|wm?|swf|flv|x-flv|axd)$ 43200 95% 432000
refresh_pattern -i \.(html|htm|css|js)$ 1440 75% 40320
refresh_pattern -i \.index.(html|htm)$ 0 75% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 1440 90% 10080
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100
store_avg_object_size 13 KB
visible_hostname localhost

Tintenfischprotokolle

-------------------------------------------------------------
-----------------------------------------------------------
----------------------------------------------------------
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| Loaded Icons.
2014/07/03 22:11:57| HTCP Disabled.
2014/07/03 22:11:57| Pinger socket opened on FD 13
2014/07/03 22:11:57| Squid plugin modules loaded: 0
2014/07/03 22:11:57| Adaptation support is off.
2014/07/03 22:11:57| Accepting NAT intercepted HTTP Socket connections at local=0.0.0.0:3128 remote=[::] FD 11 flags=41
2014/07/03 22:11:57| Done reading /opt/squid/cache swaplog (2 entries)
2014/07/03 22:11:57| Finished rebuilding storage from disk.
2014/07/03 22:11:57|         2 Entries scanned
2014/07/03 22:11:57|         0 Invalid entries.
2014/07/03 22:11:57|         0 With invalid flags.
2014/07/03 22:11:57|         2 Objects loaded.
2014/07/03 22:11:57|         0 Objects expired.
2014/07/03 22:11:57|         0 Objects cancelled.
2014/07/03 22:11:57|         0 Duplicate URLs purged.
2014/07/03 22:11:57|         0 Swapfile clashes avoided.
2014/07/03 22:11:57|   Took 0.08 seconds ( 24.94 objects/sec).
2014/07/03 22:11:57| Beginning Validation Procedure
2014/07/03 22:11:57|   Completed Validation Procedure
2014/07/03 22:11:57|   Validated 2 Entries
2014/07/03 22:11:57|   store_swap_size = 12.00 KB
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| pinger: Initialising ICMP pinger ...
2014/07/03 22:11:57| pinger: ICMP socket opened.
2014/07/03 22:11:57| pinger: ICMPv6 socket opened
2014/07/03 22:11:57| Pinger exiting.
2014/07/03 22:11:58| storeLateRelease: released 0 objects

Iptables Regeln

(vorerst mit Single Interface "eth0")

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.3:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Client-Konfiguration

Das Problem ist ich konnte auf meinen Client-Computern nicht auf das Internet zugreifen mit Squids IP als Gateway und primärem DNS, wie unten gezeigt.

Auf einem Ubuntu-Client

auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.3

dns-nameservers 192.168.1.3

Auf einem Windows-Client

enter image description here

Wenn ich DNS auf dem Ubuntu-Client in dns-nameservers 192.168.1.1 Und Windows-Client auf dieselbe IP-Adresse des Routers 192.168.1.1 Anstelle von Squid-IP (192.168.1.3) ändere, kann ich auf beiden auf das Internet zugreifen. Dies ist möglicherweise nicht der richtige Weg, da die Seite möglicherweise direkt vom Router gerendert wird und möglicherweise nicht vom Squid-Server mithilfe des Cache (natürlich konnte ich sehen, dass die Protokolle in /var/log/squid3/cache.log generiert werden). Ich habe auch festgestellt, dass mein Router für die Seiten, auf die bereits zugegriffen wird, blinkt. Dies kann bedeuten, dass er die Anforderung über das Internet sendet, anstatt sie aus dem Squid-Cache abzurufen.

Ich bin immer noch nicht kompromittiert. Wenn ich weiterhin aus dem Cache, in dem das Internet heruntergefahren wurde, auf die besuchten Seiten auf meinen Client-Computern zugreifen könnte, wäre ich zufrieden.

Wie werden Clients für Squid Transparent Proxy konfiguriert?

Update 1

[email protected]:~# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:192.168.1.3:3128
    0     0 REDIRECT   tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 3128

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      eth0    192.168.1.0/24       0.0.0.0/0

Update 2

Es funktioniert in der vorherigen Ausgabe Ubuntu 10.04(lucid) mit Squid-Version Squid Cache: Version 2.7.STABLE7, Und unten ist die Squid-Konfigurationsdatei funktioniert und ich konnte auf Client-Computern auf das Internet zugreifen, wenn Client-Gateway und DNS sind auf lucids ip eingestellt:

[email protected]:~# grep -v '^$\|^\s*\#' /etc/squid/squid.conf
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl mynet src 192.168.1.0/24    # RFC1918 possible internal network
acl SSL_ports port 443      # https
acl SSL_ports port 563      # snews
acl SSL_ports port 873      # rsync
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # Gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl Safe_ports port 631     # cups
acl Safe_ports port 873     # rsync
acl Safe_ports port 901     # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow mynet
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
cache_dir ufs /var/spool/squid 2000 16 256
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^Gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Package(.gz)*)$    0   20% 2880
refresh_pattern .       0   20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl Apache rep_header Server ^Apache
broken_vary_encoding allow Apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
offline_mode on
coredump_dir /var/spool/squid

Ich bin mir nicht sicher, warum es bei Ubuntu 14.04 Mit der Squid-Version Squid Cache: Version 3.3.8 Nicht funktioniert. Ich vermisse definitiv einige Einstellungen in der neuen Version von Squid oder in New Destro!.

9
user53864

Ich bin mir nicht sicher, aber bitte schauen Sie sich diese Checkliste an:

Bearbeiten Sie die Datei squid.conf und ändern Sie die folgende Zeile, um den transparenten Proxy-Modus zu aktivieren:

http_port 3128

to

http_port 3128 intercept

service Squid Neustart Service Squid Reload

Fügen Sie einen Eintrag zur Tabelle iptables NAT) hinzu, um eingehenden Datenverkehr auf der internen Schnittstelle (LAN-Seite) an den Squid-Server auf Port 3128 weiterzuleiten (vorausgesetzt, eth0 ist die interne Schnittstelle mit der IP-Adresse 192.168). 1.3

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to (Forts.) 192.168.1.3:3128

Jetzt können Sie Ihre iptables, die Standardfiltertabelle und die nat-Tabelle mit den folgenden Befehlen anzeigen

iptables -L -t filter

iptables -L -t nat

Jetzt können Sie die iptable-Filtertabelle mit den folgenden Befehlen hinzufügen (anhängen), um Eingaben an Port 3128 für Squid zu akzeptieren

iptables -t Filter -A INPUT -p tcp --dport 3128 -j ACCEPT

Versuchen Sie dies auch

Sie benötigen in der Konfiguration sowohl einen 'Intercept'- als auch einen' Forward-Proxy'-Port, auch wenn Sie keinen Forward-Proxy verwenden:

http_port 3129

http_port 3128 abfangen

Hinweis: Die Option "transparent" ist seit 2010 durch die Option "abfangen" veraltet.

11
TBI Infotech

Laut Squid WiKi haben Sie die falsche Einstellung in der Option http_port , mit Squid 3.1+ und DNAT sollte es intercept anstelle von transparent.

http_port 3128 intercept

Obwohl die Ausgabe Ihres Squid-Protokolls anscheinend darauf hinweist, dass abgefangene Sockets aktiv sind.

Eine zweite Sache ist, dass der Linux-Server die TCP-IP-Weiterleitung mit sysctl net.ipv4.ip_forward=1 Ermöglichen muss.

1
HBruijn

Error: No forward-proxy ports configure (im /var/log/squid3/cache.log)

Lesen Sie Wiki .

Nach meiner Erfahrung muss ein transparenter Proxy NAT Port in squid.conf (beide)

 http_port 3128
 http_port 8080 intercept
1
user290171

Nachdem ich der Option "http_port" nur "intercept" hinzugefügt habe, treten immer noch Probleme in Kombination mit dem iptables-Umleitungsmodus auf, wenn Clients für die Verwendung eines Proxys konfiguriert sind:

"FEHLER: Keine Forward-Proxy-Ports konfiguriert." und "WARNUNG: Weiterleitungsschleife erkannt für:"

Nachdem ich die obigen Aussagen durchgearbeitet habe, verwende ich dies als das beste Ergebnis jetzt:

a) Verwenden Sie einen doppelten Port-Eintrag in squid.conf wie folgt :

http_port 8080
http_port 3128 intercept

Dadurch wird Port 8080 als normaler Weiterleitungsport für die clientseitige Konfiguration dargestellt und ein zweiter Port zum Weiterleiten von umgeleitetem Datenverkehr bereitgestellt.

b) Verwenden Sie eine iptables-Regel wie diese :

iptables -A PREROUTING -t NAT -i $LAN_IF -p tcp --dport 80 -j REDIRECT --to-port 3128

Auf diese Weise haben Sie einen klassischen Proxy-Port (8080), den Sie auf Ihren Clients konfigurieren können, und einen erzwingenden Port für unverschlüsselten Datenverkehr.

Warum sollten Sie das tun wollen? Nun, wenn Sie nicht möchten, dass HTTPS-Verkehr den Proxy umgeht (die Notwendigkeit, normale Clients zu konfigurieren) und wenn Sie weniger intelligente Geräte oder Programme unterstützen möchten, aber nicht konfigurieren möchten (oder können).

0
BlueStar88