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)
root@ubuntu:~# 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, dass ich auf meinen Client-Computern mit Squids IP als Gateway und primärem DNS nicht auf das Internet zugreifen konnte , 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
Wenn ich DNS auf dem Ubuntu-Client in dns-nameservers 192.168.1.1
& Windows-Client auf dieselbe IP-Adresse des Routers 192.168.1.1
anstelle der 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 über den 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
root@ubuntu:~# 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 der Squid-Version Squid Cache: Version 2.7.STABLE7
, und unten ist die Squid-Konfigurationsdatei, die funktioniert, und ich konnte auf Client-Computern auf das Internet zugreifen, wenn das Client-Gateway und der DNS auf die IP-Adresse von lucid eingestellt sind:
root@lucid:~# 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 Ubuntu 14.04
mit der Squid-Version nicht funktioniert Squid Cache: Version 3.3.8
. Ich vermisse definitiv einige Einstellungen in der neuen Version von Squid oder in New Destro!.
quelle
squid3 -k parse
, es ist alles sauber.Antworten:
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:
Service Squid Neustart Service Squid Reload
Fügen Sie einen Eintrag zur NAT-Tabelle von iptables 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
Jetzt können Sie Ihre iptables, die Standardfiltertabelle und die nat-Tabelle mit den folgenden Befehlen anzeigen
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
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:
Hinweis : Die Option "transparent" ist seit 2010 durch die Option "abfangen" veraltet.
quelle
intercept
wie von HBruijn vorgeschlagen. Iptables nat-Regeln sind bereits vorhanden und INPUT to Proxy Server ist für keinen Port / keine Quelle blockiert. Alle eingehenden Pakete sind vorerst zulässig.Laut Squid WiKi haben Sie die falsche Einstellung in der Option http_port , bei Squid 3.1+ und DNAT sollte es
intercept
stattdessen seintransparent
.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 zulassen muss
sysctl net.ipv4.ip_forward=1
quelle
intercept
. Das Ergebnis ist dasselbe, dass ich auf Clients mit192.168.1.3
Gateway und primärem DNS nicht auf das Internet zugreifen konnte . Ja, die TCP-IP-Weiterleitung ist in der Datei sysctl.conf aktiviert.Fehler:
No forward-proxy ports configure
(in/var/log/squid3/cache.log
)Wiki lesen .
Nach meiner Erfahrung benötigt ein transparenter Proxy einen NAT-Port in
squid.conf
(beide)quelle
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:
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 folgt:
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).
quelle
In Ubuntu 14.04 Squid Transparent Proxy Version: 3.3.8 müssen Sie transparent aus der Konfiguration entfernen http_port 3128 Ich meine, lassen Sie einfach
nicht
aus irgendeinem Grund funktioniert jetzt nicht.
quelle
mit:
Es klappt
(Fehler: In /var/log/squid3/cache.log sind keine Forward-Proxy-Ports konfiguriert.)
quelle