Pagina 1 di 1

[Server] Transparent proxy con squid 2.6 o 3.0

Inviato: martedì 5 febbraio 2008, 10:12
da kiniao
Ho provato ad installare lo squid 2.6 (Ubuntu 7) in modalità transparent (non molto difficile per modificare i parametri di squid). Il principale problema è che dalla rete non riesco a farlo funzionare senza indicare il proxy nel browser, in pratica non mi funziona il transparent.

La configurazione della macchina è questa:
WAN: ETH0 192.168.1.0/24 (ip server 192.168.1.2, ip gateway internet 192.168.1.1)
LAN:  ETH1 10.1.1.0/24 (ip server 10.1.1.1)

Dalla lan dovrei accedere a internet senza indicare alcuna configurazione proxy. Dovrei poi monitorare il log dei client (ma questo è un problema che viene dopo)

Ho seguito varie guide (molte per versioni vecchie dello squid) e qualche indicazione sulla nuova http://forum.ubuntu-it.org/viewtopic.php?t=154473
però non sono riuscito a risolvere il problema!
Credo che il problema sta tutto in iptables.

Se mi date un consiglio per resettare la configurazione attuale iptables e impostare i parametri corretti.

Per quanto riguarda i client credo che sia sufficiente impostare ip del gateway (10.1.1.1) e ip del dns (qui non saprei che metterci .. ???)


p.s credo che sia un argomento di interesse molto comune ..

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: sabato 9 febbraio 2008, 1:01
da takeshi
Hai impostato iptables per il DNAT?

Cioè qualcosa del tipo:

Codice: Seleziona tutto

/sbin/iptables -t nat -A PREROUTING  -i eth1 -p tcp --dport 80 -j DNAT --to 10.1.1.1:3128
Sei sicuro che squid sia in ascolto su entrambi gli indirizzi IP?

Verificalo con:

Codice: Seleziona tutto

sudo netstat -lntp | grep squid
In alternativa puoi installare sul server un packet sniffer tipo tcpdump per controllare che il traffico non si interrompa da qualche parte ;)

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: sabato 9 febbraio 2008, 15:11
da PaoloVIP
Se vuoi monitorare il log dei client devi deciderlo prima e non dopo.

Se usi un acl tipo:

Codice: Seleziona tutto

auth_param ntlm program /usr/lib/squid/ntlm_auth dominio/server 
acl pippo proxy_auth REQUIRED
http_access allow pippo
Non puoi usare il transparent proxy. Non funziona.
Authentication cannot be used in a transparently intercepting proxy as the client then thinks it is talking to an origin server and not the proxy. This is a limitation of bending the TCP/IP protocol to transparently intercepting port 80, not a limitation in Squid.

Però con questo sistema puoi usare sarg per monitorare il traffico e ti comparirà "dominio_user" nei report.

Diversamente avrai solo il numero di ip.

Se ti basta questo puoi semplicemente dare:

http_port ip_lato_lan_proxy:3128 transparent

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: domenica 10 febbraio 2008, 9:55
da kiniao
Grazie per gli ottimi consigli.
Ho risolto il problema del transparent, poi vi dico come ho fatto in maniera dettagliata.

Intanto vorrei chiedervi come mai quando avvio sarg ottengo:

Cannot open language file: /etc/squid/languages/English

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: domenica 10 febbraio 2008, 13:18
da kiniao
Con tail -f /var/log/squid/access.log
ottengo già un log degli accessi con ip e sito visualizzato.

Ora sto studiano sarg per un report web ...

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: domenica 10 febbraio 2008, 14:13
da fejfbo
A me il file access.log rimane vuoto.

Cosa hai abilitato nel file squid.conf per permettere di registrare gli accessi?

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: lunedì 11 febbraio 2008, 15:16
da kiniao
Riepilogo della installazione:

squid 2.6 come server transparent proxy
srg per monitorare i log di squid
dnsmasq come server dns (cache) e server dhcp
apache2 per gestire il server web

come servizo aggiuntivo c'è zoneminder per server sicurezza

Configurazione di rete
eth0 192.168.1.2 LATO WAN
eth1 10.1.1.0/24  LATO LAN

Per quanto riguarda squid di seguito i comandi che utilizzo maggiormente:

forward pacchetti
echo 1 > /proc/sys/net/ipv4/ip_forward

reindirizza chiamate porta eth1 (lan) su proxy
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 10.1.1.1:3128

riavvio squid
/etc/init.d/squid restart

gedit /etc/squid/squid.conf

configurazione squid compatta
cat /etc/squid/squid.conf | sed '/ *#/d; /^ *$/d'

log squid
tail -f /var/log/squid/access.log

Configurazione squid.conf:
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 512 MB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap LFUDA
cache_dir ufs /var/spool/squid 5000 16 256
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp:          1440    20%    10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .              0      20%    4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
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
acl our_networks src 10.1.1.0/24 192.168.1.0/24
http_access allow our_networks
http_access allow localhost
http_access deny all
icp_access allow all
coredump_dir /var/spool/squid
extension_methods REPORT MERGE MKACTIVITY CHECKOUT

-------------------------

Configurazione srg.conf:
log_file "/var/log/squid/access.log"
output_dir "/var/www/srg_reports"
title "SRG - Squid Log Analysis"
groupby "A
max_age 60
show_rates true
sort_columns true

--------------------------

Configurazione dnsmasq.conf:
interface=eth1
listen-address=127.0.0.1
no-dhcp-interface=eth0
domain=paolo.lan
dhcp-range=10.1.1.20,10.1.1.100,255.255.255.0,12h
dhcp-option=1,255.255.255.0
dhcp-option=3,10.1.1.1
dhcp-option=28,10.1.1.255
dhcp-option=6,10.1.1.1
dhcp-authoritative
cache-size=600

Allego script di avvio per impostare regole iptables.

Accetto consigli su come migliorare questa configurazione (yes)


Per testare il proxy www.lagado.com/proxy-test

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: mercoledì 13 febbraio 2008, 14:39
da fejfbo
A me rimane il problema che ogni pagina che tento di visualizzare attraverso il proxy, mi restituisce l'errore 403/Access Denied.

Ora provo con la configurazione che hai usato tu per squid, incrociando le dita!

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: venerdì 15 febbraio 2008, 16:16
da kiniao
Questo scriptino per iptables dovrebbe far funzionare il proxy in transparent:

#!/bin/sh
# squid server IP
SQUID_SERVER=10.1.1.1
# Interface connected to Internet
INTERNET=eth0
# Interface connected to LAN
LAN_IN=eth1
# Squid port
SQUID_PORT=3128
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# DNAT port 443 request comming from LAN systems to SQUID
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 443 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# DNAT port 20/21 request comming from LAN systems to SQUID
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 21 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 20 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# DNAT port 70 request comming from LAN systems to SQUID
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 70 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# DNAT port 1080 request comming from LAN systems to SQUID
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 1080 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# if it is same system
# iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP


In http sembra funzionare bene, ma non riesco a far funzionare il proxy per il protocollo ftp.
Se su firefox inserisco il proxy manualmente indicando server e porta utilizzata squid funziona correttamente.
Se utilizzo la modalita' transparent senza indicare proxy in firefox non apro siti ftp!  >:(
Eppure qui: iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 21 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
dovrebbe girare le richieste sulla porta 21 (ftp) su (serverproxy):3128

Qualche idea? (z)

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: sabato 16 febbraio 2008, 7:59
da kiniao
Cercando su google sembra che squid non possa fare il transparent proxy per ftp  :'(
Bisogna usare frox  ???

Comunqu mi chiedo come mai se indirco il proxy ftp su firefox funziona e invece se uso la modalita' transparent non va?

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: lunedì 18 febbraio 2008, 16:52
da kiniao
Sembra che con tproxy sia possibile rendirizzare tutto il traffico su squid. ( http://wiki.squid-cache.org/ConfigExamp ... D%2A%24%29 )
Quindi mi sono installato il kernerl souce, le patch di tproxy per il kernel, ricompilato il tutto e testato ...
Dimenticavo che ho dovuta fare le patch anche di iptables pr tproxy  ::)

Testato i module aggiuntivi di tproxy sembra tutto ok.

A questo punto aggiungo l'opzione tproxy a squid e mi accorgo che squid non funziona con l'opzione tproxy:
http_port 3128 transparent tproxy vhost vport=80

* Restarting Squid HTTP Proxy 3.0 squid3                                        *  Waiting...                                                                  * ...                                                                          * ...                                                                  [ OK ]
2008/02/18 22:47:09| Notice: Short Strings is 40 bytes instead of requested 36 bytes
FATAL: Bungled squid.conf line 82: http_port 3128 transparent tproxy vhost vport=80
Squid Cache (Version 3.0.PRE6): Terminated abnormally.
CPU Usage: 0.008 seconds = 0.000 user + 0.008 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
                                                                        [fail]

cercasi disperatamente illuminari  :(

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: venerdì 18 aprile 2008, 17:57
da webpatella
1 invece di usare DNAT in iptables usate REDIRECT così vi sollazzerete con le statistiche di sarg (good) perchè anche se non si saranno autenticati i vostri simpatici client verranno tracciati in base all'ip di provenienza delle richieste!!!

2 come hai gestito la migrazione su apache?

3 a cosa serve proxare l'ftp?

Re: [Server] Transparent proxy con squid 2.6 o 3.0

Inviato: venerdì 18 aprile 2008, 19:00
da kiniao
Con la mappatura dnat riesco comunque a loggare le macchine client anche con sarg.
A me non interessa tracciare il traffico dei client e quindi ho messo su mrtg per monitorare la banda del server.
Apache lo messo sulla porta 8080 e il trasparent proxy sul 3128

Proxare l'ftp potrebbe accelerare alcuni giochi che si aggiornano in rete (compreso gli aggiornamenti dei sistemi operativi).

Per ottimizzare la banda ho usato il semplice programma wondersharper.
Ho provato a filtrare il traffico p2p ma senza risultati interessanti.
La soluzione ideale per il traffico p2p è limitare il numero di ip indirizzabili da una singola postazione. (iptables iplimit http://netfilter.org/documentation/HOWT ... WTO-3.html)
Non ho ancora provato quest'ultima soluzione.