Comment configurer le client pour le proxy transparent Squid?

9

Détails du serveur

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

Fichier de configuration Squid

(à l'exclusion des commentaires utilisant 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

Bûches de calmar

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

Règles Iptables

(en utilisant une seule interface "eth0" pour le moment)

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

Configuration du client

Le problème est que je ne pouvais pas accéder à Internet sur mes machines clientes avec l'IP de Squid comme passerelle et DNS primaire, comme indiqué ci-dessous.

Sur 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

Sur un client Windows

entrez la description de l'image ici

Lorsque je change DNS sur le client Ubuntu en client dns-nameservers 192.168.1.1Windows sur la même IP du routeur 192.168.1.1au lieu de Squid IP (192.168.1.3), je pouvais accéder à Internet sur les deux. Ce n'est peut-être pas la façon de faire car la page peut être affichée directement à partir du routeur et peut-être pas à partir du serveur Squid utilisant le cache (bien sûr, je pouvais voir les journaux générés dans /var/log/squid3/cache.log). J'ai également remarqué que mon routeur clignote pour les pages qui sont déjà consultées, cela peut signifier qu'il envoie la demande sur Internet au lieu d'aller chercher dans le cache de squid.

Je ne suis toujours pas compromis. Si je pouvais toujours accéder aux pages visitées sur mes ordinateurs clients à partir du cache après avoir fermé Internet, je serais satisfait.

Quelle est la procédure pour configurer les clients pour Squid Transparent Proxy?, Quelqu'un me guide s'il vous plaît?

Mise à jour 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

Il fonctionne sur l'édition précédente Ubuntu 10.04(lucid)avec la version Squid Squid Cache: Version 2.7.STABLE7, et ci-dessous le fichier de configuration Squid a fonctionné et je pouvais accéder à Internet sur les machines clientes lorsque la passerelle et le DNS du client sont définis sur l'IP de 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

Je ne sais pas pourquoi cela ne fonctionne pas Ubuntu 14.04avec la version Squid Squid Cache: Version 3.3.8. Il me manque définitivement certains paramètres dans la nouvelle version de squid ou dans la nouvelle destro !.

user53864
la source
1
Je dis peut-être l'évidence, mais n'est-ce pas tout l'intérêt d'une configuration de proxy transparente que vous NE configurez PAS les clients?
HBruijn
Non, je viens de mentionner la configuration du serveur s'il pouvait mieux déboguer le problème!.
user53864
Je ne comprends pas comment configurer les clients Squid. Je n'ai pas pu accéder à Internet sur le client lorsque j'utilise l'IP de Squid (192.168.1.3) comme passerelle et serveur DNS principal. Je pense que c'est la bonne façon de configurer les clients!
user53864
Aucun avertissement ni message d'erreur squid3 -k parse, tout est propre.
user53864
quelle est la sortie de cette commande: "iptables -t nat -L -n -v"?
TBI Infotech du

Réponses:

11

Je ne suis pas sûr, mais veuillez jeter un œil à cette liste de contrôle:

Modifiez le fichier squid.conf et modifiez la ligne suivante pour activer le mode proxy transparent:

http_port 3128

to

http_port 3128 intercept

service squid restart service squid rechargement

Ajoutez une entrée à la table NAT iptables pour rediriger le trafic entrant sur l'interface intérieure (côté LAN) vers le serveur Squid sur le port 3128 (en supposant que eth0 est l'interface intérieure avec l'adresse 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

Vous pouvez maintenant regarder vos iptables, votre table de filtres par défaut et votre table nat, en utilisant les commandes suivantes

iptables -L -t filter

iptables -L -t nat

Vous pouvez maintenant ajouter (ajouter) à la table de filtres iptable avec les commandes suivantes, pour accepter l'entrée sur le port 3128 pour Squid

iptables -t filtre -A ENTRÉE -p tcp --dport 3128 -j ACCEPTER

Essayez aussi ceci

Vous avez besoin à la fois d'un port d'interception et d'un port de proxy direct dans la configuration même si vous n'utilisez pas de proxy direct:

http_port 3129

http_port 3128 intercept

Remarque : L'option "transparent" est déconseillée par l'option "intercepter" depuis 2010.

TBI Infotech
la source
Je l'ai déjà changé interceptcomme suggéré par HBruijn. Les règles nat d'Iptables sont déjà en place et l'ENTRÉE vers le serveur proxy n'est bloquée pour aucun port / source, tous les paquets entrants sont autorisés pour l'instant.
user53864
pouvez-vous vérifier le port 3129 au lieu de 3128 en tant qu'interception http_port 3129?
TBI Infotech
@ user53864 vérifier la réponse mise à jour
TBI Infotech
J'ai essayé !, pas de chance, le résultat est le même. J'ai essayé avec le port 3129 dans le calmar et j'ai également remplacé les règles iptables par le nouveau port. Je ne pouvais toujours pas accéder à Internet sur mes ordinateurs clients.
user53864
Après avoir ajouté les deux dans squid.conf, quel est le rapport de journal de squid. http_port 3129 http_port 3128 intercept
TBI Infotech
1

Selon l' WiKi Squid vous avez le mauvais réglage dans la http_port option avec Squid 3.1+ et DNAT il devrait être au interceptlieu de transparent.

http_port 3128 intercept

Bien que la sortie de votre journal Squid semble indiquer que les sockets interceptées sont actives.

Une deuxième chose est que le serveur Linux doit autoriser le transfert TCP-IP avec sysctl net.ipv4.ip_forward=1

HBruijn
la source
J'ai changé les paramètres en intercept, le résultat est le même que je ne pouvais pas accéder à Internet sur les clients avec 192.168.1.3comme passerelle et DNS principal. Oui, le transfert TCP-IP est activé dans sysctl.conf.
user53864
En fait, quelle est la bonne façon de configurer le client Squid?. Le DNS doit-il être l'IP de Squid (192.168.1.3) ou l'IP de routeur général (192.168.1.1)?
user53864
La configuration normale est que le routeur / passerelle par défaut qu'un client reçoit sur sa demande DHCP a une règle de redirection, qui intercepte le trafic sortant vers le port TCP 80 et redirige ces paquets vers le proxy transparent. Là, ils seront traités et les résultats retournés au client. Le DNS utilisé n'a pas d'importance.
HBruijn
Donc, cela devrait simplement fonctionner avec le paramètre de passerelle sur les clients, je ne sais toujours pas pourquoi je ne pouvais pas accéder à Internet sur les clients.
user53864
J'ai mis à jour mon message!
user53864
1

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

Lisez le wiki .

D'après mon expérience, le proxy transparent a besoin d'un port NAT dans squid.conf(les deux)

 http_port 3128
 http_port 8080 intercept
sebix
la source
0

Après avoir simplement ajouté "intercepter" à l'option http_port, j'ai encore des problèmes en combinaison avec le mode de redirection iptables, si les clients sont configurés pour utiliser un proxy:

"ERREUR: aucun port proxy direct configuré." et "AVERTISSEMENT: boucle de transfert détectée pour:"

Après avoir parcouru les déclarations ci-dessus, j'utilise ceci, comme le meilleur résultat maintenant:

a) utilisez une entrée double port dans squid.conf comme ceci:

http_port 8080
http_port 3128 intercept

Cela présentera le port 8080 comme port de transfert ordinaire pour la configuration côté client et donnera un deuxième port vers lequel rediriger le trafic redirigé.

b) utilisez une règle iptables comme celle-ci:

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

Comme cela, vous aurez un port proxy classique (8080) à configurer sur vos clients et un port d'application pour le trafic non chiffré.

Pourquoi devriez-vous vouloir faire ça? Eh bien, si vous n'aimez pas que le trafic HTTPS contourne le proxy (la nécessité de configurer de toute façon des clients ordinaires) et si vous voulez prendre en charge, mais ne voulez pas (ou ne pouvez pas) configurer, moins d'appareils ou de programmes intelligents.

BlueStar88
la source
Sur Raspbian (et probablement d'autres), la commande iptables donne l'erreur "iptables v1.4.21: impossible d'initialiser la table iptables` NAT ': la table n'existe pas (avez-vous besoin d'insmod?) Peut-être qu'iptables ou votre noyau doit être mis à niveau . ". Changer "-t NAT" en "-t nat" résout ce problème.
glennr
-1

Dans Ubuntu 14.04 Squid Transparent Proxy Version: 3.3.8, vous devez supprimer transparent de la configuration http_port 3128, je veux dire simplement quitter

http_port 3128

ne pas

http_port 3128 transparent

pour une raison quelconque ne fonctionne pas maintenant.

Geyson Rodriguez
la source
-2

avec :

http_port 3128
http_port 8080 intercept

Ça marche

(Erreur: aucun port proxy direct n'est configuré dans /var/log/squid3/cache.log)

mpman077
la source