Come configurare il client per il proxy trasparente di calamari?


9

Dettagli del server

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

File di configurazione di calamari

(esclusi i commenti usando 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

Tronchi di calamari

-------------------------------------------------------------
-----------------------------------------------------------
----------------------------------------------------------
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

Regole Iptables

(usando l'interfaccia singola "eth0" per il momento)

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

Configurazione client

Il problema è che non sono riuscito ad accedere a Internet sui miei computer client con IP di Squid come gateway e DNS primario, come mostrato di seguito.

Su un client Ubuntu

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

Su un client Windows

inserisci qui la descrizione dell'immagine

Quando cambio DNS su client Ubuntu dns-nameservers 192.168.1.1e client Windows sullo stesso ip del router 192.168.1.1anziché su squid ip (192.168.1.3), allora potrei accedere a Internet su entrambi. Questo potrebbe non essere il modo di fare in quanto la pagina potrebbe essere renderizzata direttamente dal router e potrebbe non provenire dal server di squid usando la cache (ovviamente potrei vedere i log generati in /var/log/squid3/cache.log). Ho anche notato che il mio router lampeggia per le pagine a cui è già stato effettuato l'accesso, ciò può significare che invia la richiesta su Internet invece di recuperare dalla cache di calamari.

Non sono ancora compromesso. Se potessi ancora accedere alle pagine visitate sui miei computer client dalla cache con Internet chiuso, sarei soddisfatto.

Qual è la procedura per configurare i client per Squid Transparent Proxy? Qualcuno mi guida per favore?

Aggiornamento 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

Aggiornamento 2

Funziona sulla versione precedente Ubuntu 10.04(lucid)con la versione di calamari Squid Cache: Version 2.7.STABLE7, e di seguito il file di configurazione di calamari ha funzionato e ho potuto accedere a Internet sui computer client quando il gateway e il DNS del client sono impostati sull'ip di lucid:

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

Non sono sicuro del motivo per cui non funziona Ubuntu 14.04con la versione di Squid Squid Cache: Version 3.3.8. Mi mancano sicuramente alcune impostazioni nella nuova versione di calamari o nella nuova distruzione !.


1
Potrei affermare l'ovvio, ma non è il punto centrale di una configurazione proxy trasparente che NON configuri i client?
HBruijn,

No, ho appena menzionato le configurazioni del server se potesse meglio eseguire il debug del problema !.
user53864

Non capisco come configurare i client squid. Non sono riuscito ad accedere a Internet sul client quando utilizzo ip di 192 (192.168.1.3) di squid come gateway e server DNS primario. Penso che questo sia il modo corretto di configurare i client!
user53864

Nessun avviso o messaggio di errore squid3 -k parse, è tutto pulito.
user53864

qual è l'output di questo comando: "iptables -t nat -L -n -v"?
TBI Infotech,

Risposte:


11

Non sono sicuro, ma per favore dai un'occhiata a questo elenco di controllo:

Modifica il file squid.conf e modifica la seguente riga per abilitare la modalità proxy trasparente:

http_port 3128

to

http_port 3128 intercept

service squid restart servizio squid ricaricare

Aggiungere una voce alla tabella NAT iptables per inoltrare il traffico in entrata sull'interfaccia interna (lato LAN) al server Squid sulla porta 3128 (supponendo che eth0 sia l'interfaccia interna con l'indirizzo IP 192.168.1.3

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

Ora puoi guardare i tuoi iptables, la tabella dei filtri predefinita e la tabella nat, usando i seguenti comandi

iptables -L -t filter

iptables -L -t nat

Ora puoi aggiungere (append) alla tabella dei filtri iptable con i seguenti comandi, per accettare l'input sulla porta 3128 per Squid

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

Prova anche questo

Sono necessarie una porta "intercetta" e una "proxy inoltro" in configurazione anche se non si utilizza il proxy in avanti:

http_port 3129

intercettazione http_port 3128

Nota : l'opzione "trasparente" è stata deprecata dall'opzione "intercetta" dal 2010.


L'ho già cambiato interceptcome suggerito da HBruijn. Le regole nat di Iptables sono già in atto e INPUT al server proxy non è bloccato per nessuna porta / sorgente, per ora sono consentiti tutti i pacchetti in entrata.
user53864

puoi controllare la porta 3129 anziché 3128 come intercettazione http_port 3129?
TBI Infotech,

@ user53864 controlla la risposta aggiornata
TBI Infotech,

Ho provato !, senza fortuna, il risultato è lo stesso. Ho provato con la porta 3129 nel calamaro e ho anche sostituito le regole di iptables con la nuova porta. Non riuscivo ancora ad accedere a Internet sui miei computer client.
user53864

Dopo aver aggiunto entrambi in squid.conf, qual è il rapporto di registro di squid. http_port 3129 http_port 3128 intercetta
TBI Infotech l'

1

Secondo Squid WiKi hai un'impostazione errata nell'opzione http_port , con Squid 3.1+ e DNAT dovrebbe essere interceptinvece di transparent.

http_port 3128 intercept

Anche se l'output del registro di Squid sembra indicare che i socket intercettati sono attivi.

Una seconda cosa è che il server Linux deve consentire l'inoltro TCP-IP con sysctl net.ipv4.ip_forward=1


Ho modificato le impostazioni in intercept, il risultato è lo stesso che non ho potuto accedere a Internet sui client con 192.168.1.3gateway e DNS primario. Sì, l'inoltro TCP-IP è abilitato in sysctl.conf.
user53864

In realtà qual è il modo corretto di configurare il client squid ?. Il DNS dovrebbe essere IP di Squid (192.168.1.3) o IP generale del router (192.168.1.1)?
user53864

La configurazione normale prevede che il router / gateway predefinito che un client riceve sulla propria richiesta DHCP abbia una regola di reindirizzamento, che intercetta il traffico in uscita sulla porta TCP 80 e reindirizza quei pacchetti al proxy trasparente. Lì verranno elaborati e i risultati restituiti al client. Il DNS utilizzato non ha importanza.
HBruijn,

Quindi dovrebbe funzionare con le impostazioni del gateway sui client, non so ancora perché non riesco ad accedere a Internet sui client.
user53864

Ho aggiornato il mio post!
user53864

1

Errore: No forward-proxy ports configure(in /var/log/squid3/cache.log)

Leggi Wiki .

Nella mia esperienza, il proxy trasparente ha bisogno della porta NAT in squid.conf(entrambi)

 http_port 3128
 http_port 8080 intercept

0

Dopo aver appena aggiunto "intercetta" all'opzione http_port, ho ancora problemi in combinazione con la modalità di reindirizzamento di iptables, se i client sono configurati per usare un proxy:

"ERRORE: nessuna porta proxy forward configurata." e "ATTENZIONE: Rilevato loop di inoltro per:"

Dopo aver esaminato le affermazioni di cui sopra, lo uso come risultato migliore ora:

a) utilizzare una voce a doppia porta in squid.conf in questo modo:

http_port 8080
http_port 3128 intercept

Ciò presenterà la porta 8080 come normale porta di inoltro per la configurazione lato client e fornisce una seconda porta a cui inoltrare il traffico reindirizzato.

b) usa una regola iptables come questa:

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

In questo modo avrai una porta proxy classica (8080) da configurare sui tuoi client e una porta di controllo per traffico non crittografato.

Perché dovresti voler fare questo? Bene, se non ti piace avere il traffico HTTPS che ignora il proxy (la necessità di configurare comunque i client ordinari) e se vuoi supportare, ma non vuoi (o non puoi) configurare, meno dispositivi o programmi intelligenti.


Su Raspbian (e probabilmente altri) quel comando iptables dà l'errore "iptables v1.4.21: impossibile inizializzare la tabella" NAT "di iptables: la tabella non esiste (è necessario insmod?) Forse iptables o il kernel devono essere aggiornati . ". La modifica di "-t NAT" in "-t nat" risolve questo problema.
glennr,

-1

In Ubuntu 14.04 Squid Transparent Proxy Versione: 3.3.8, devi rimuovere il trasparente dalla configurazione http_port 3128 intendo semplicemente lasciare

http_port 3128

non

http_port 3128 trasparente

per qualche motivo non funziona ora.


-2

con :

http_port 3128
http_port 8080 intercept

Funziona

(Errore: nessuna porta proxy forward configurata in /var/log/squid3/cache.log)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.