logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 11-10-2016 01:27:11

winproof
Membre
Lieu : Isére
Distrib. : debian 9/proxmox
Noyau : Linux 4.9.0-5-amd64
(G)UI : sans
Inscription : 15-05-2013

tuto debianfacile pour squid transparent étrange?

bonjour

j'ai installé squid3 avec squidguard, tout marche bien.

je suis en train de le paramétrer pour qu'il fonctionne en mode transparent.

j'ai commencé en me basant sur le tuto debian facile (https://debian-facile.org/doc:reseau:sq … ransparent), mais je me pose des questions sur ce tuto.

je précise, eth0 est mon interface vers la box, eth1 celle du LAN

j'ai juste installé la règle iptable suivante :

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128



après quelques tests, tout semble fonctionner, squid reçoit les requêtes http et squidguard filtre.

du coup il y a pas mal de trucs que je comprend pas dans le tuto?

il propose ca coté iptable:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:3129
 
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3129
 
iptables -t mangle -A PREROUTING -p tcp --dport 3128 -j DROP
 
iptables -t mangle -A PREROUTING -p tcp --dport 3129 -j DROP



pourquoi faire du DNAT sur l'interface du LAN (eth1) pour tout rediriger vers eth0, puis ensuite rediriger le port 80 au niveau d'eth0 vers le port du proxy?
et ensuite, pourquoi utiliser la table mangle pour dropper les ports 3128 et 3129? il suffit de les bloquer au niveau firewall, non?

possible d'avoir une explication?

Dernière modification par winproof (12-10-2016 15:32:17)


Minute existentielle : "Si nous ne sommes pas sensés grignoter la nuit, pourquoi y a-t-il une lumière dans le frigo?"

Hors ligne

#2 12-10-2016 15:31:29

winproof
Membre
Lieu : Isére
Distrib. : debian 9/proxmox
Noyau : Linux 4.9.0-5-amd64
(G)UI : sans
Inscription : 15-05-2013

Re : tuto debianfacile pour squid transparent étrange?

personne?:D

Minute existentielle : "Si nous ne sommes pas sensés grignoter la nuit, pourquoi y a-t-il une lumière dans le frigo?"

Hors ligne

#3 12-10-2016 21:54:54

BioKore
Membre
Lieu : Dans l'espace !
Distrib. : Mint 18
Noyau : Linux 4.4.0-21-generic
(G)UI : Nemo 3.0.6
Inscription : 23-09-2016
Site Web

Re : tuto debianfacile pour squid transparent étrange?

Hmm, je ne suis pas un pro dans le domaine (moi même je n'arrive pas encore à faire fonctionner squid), mais, je pense tout simplement qu'il s'agit de la config nécessaire vis-à-vis du schéma proposé.

En fait, le but est, dans ce tuto, de rendre transparent le proxy pour le réseau A et B (192.168.0.0 et 192.168.1.0). Du coup, comme le squid est configuré pour écouter en 3129 sur le 192.168.0.0, ce qui implique que le réseau de 192.168.1.0 doit être "NATé" vers le 192.168.0.0 pour pouvoir être mouliné par Squid.

Bon, après, je suis ingé en mécanique, pas en informatique hein, donc je suis loin d'être certain de c que je viens de dire, mais en tout cas, je comprends la chose comme ça.

Qu'en disent les sachant de mon analyse wink ?

Mint 18 // essai de débian + Cinnamon pour migration. Développeur du temps libre...
config : Portable Core I7 // 4Go Ram // SSD256Go // cg Intel HD3000 (on ne peut pas tout avoir) // wi-fi Alpha AWUS036H <- marche trop fort !
Enfin : OpenBSD 6.0 + XFCE

Hors ligne

#4 12-10-2016 23:55:15

winproof
Membre
Lieu : Isére
Distrib. : debian 9/proxmox
Noyau : Linux 4.9.0-5-amd64
(G)UI : sans
Inscription : 15-05-2013

Re : tuto debianfacile pour squid transparent étrange?

hum...
j'ai du mal a comprendre.

d’après ce que je comprend de la conf de squid, il écoute bien sur le port 3129, mais il n'est pas bindé sur une interface précise, il écoute donc a la fois sur eth0 et eth1, non?

si il était bindé sur eth0 (donc sur le réseau 192.168.0.0 uniquement), dans le squid.conf on devrait avoir:

http_port 192.168.0.1:3129 transparent


et pas

http_port 3129 transparent


(d'ailleur, avec squid3 il faut utiliser "intercept", pas "transparent"

donc pour moi, la règle

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3129

permet bien d'avoir le proxy transparent pour le réseau A

mais pour avoir le proxy transparent sur le reseau B, il suffirait d'avoir

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3129


inutile de faire du DNAT de eth1 vers eth0, non?

Dernière modification par winproof (12-10-2016 23:57:23)


Minute existentielle : "Si nous ne sommes pas sensés grignoter la nuit, pourquoi y a-t-il une lumière dans le frigo?"

Hors ligne

#5 13-10-2016 10:53:29

anonyme
Invité

Re : tuto debianfacile pour squid transparent étrange?

Bonjour
voir la configuration de son réseau en debut de script.


Prérequis

Un serveur DNS est installé sur la passerelle.

La passerelle est mise en place avec masquerade :

(eth0 est la carte ethernet vers le web)

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Configuration d'iptables (NAT)

Si vous avez suivi “iptables:un pare-feu pour une passerelle” et installé ce script, passez directement au pre-requis Table de routage
 


elle a activé dans le noyau le trafic eth0 => eth1 dans sysctl.conf


net.ipv4.ip_forward=1
 


et autorisé le trafic


iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 


elle a créé un wiki "pare-feu pour une passerelle"  pour compléter le filtrage (qui est null avec les 2 regles au dessus qui laisse tout passer)
ensuite elle parle de squid (d'ailleurs elle precise => Si vous avez suivi “iptables:un pare-feu pour une passerelle” et installé ce script, passez directement au pre-requis Table de routage
tu peut tester je pense , sur eth1 le filtrage de squid sans avoir fait le pare-feu pour la passerelle (juste les 2 regles au dessus)
si tu veut un acces de eth1 vers eth0 (donc avoir le net pour les clients du reseau B oui il te faut ces regles )

enfin je le vois comme ça , mais je suis pas trés fort en réseau (j ai testé squid il y a pas mal de temps )

ps: elle précise aussi quelle a un serveur dns local sur le reseau B (donc sur eth1) et peut etre un dhcp wink donc avec les regles du pare-feu qui vont bien
de tete , elle a céé au moin 4 wiki , dhcp , client et passerelle pare-feu et squid , peut etre pour le dns (faut chercher par le nom du redacteur )
en général elle teste en réel et ses tutos sont trés détaillés ( a toi de voir si tu zape certaines parties )

voila je pourrai pas t'aider beaucoup plus  hmm

Nota: pour ta remarque du #4

ça commence ici :


Configuration de squid comme proxy transparent

Squid permet options et modules :

    préfetch : de précharger les pages et ainsi accélérer la navigation;
    filtres antivirus, antipopups, etc.
    contrôle d'accès au proxy par login et mot de passe.
    contrôle d'accès en fonction des heures.
 



si tu veut utiliser squid autrement tu adapte , mais elle parle d un sous réseau (donc plusieurs clients ) sur une passerelle , du cache , mais faut comprendre ce qui passe par eth1 passe par eth0
son wiki est sous forme de TP , tu passe par diverses étapes pour arriver au résultat final , pour apprendre c'est mieux et toucher du doigt les divers problemes.
ça vaut peut etre le coup de tester , poser les questions puis adapter aprés en fonction de ce que tu désire  smile

Dernière modification par anonyme (13-10-2016 11:17:54)

#6 13-10-2016 13:46:39

winproof
Membre
Lieu : Isére
Distrib. : debian 9/proxmox
Noyau : Linux 4.9.0-5-amd64
(G)UI : sans
Inscription : 15-05-2013

Re : tuto debianfacile pour squid transparent étrange?

pas grave, en fait j'essaye de comprendre sa solution par curiosité, pas par nécessité.

car en conf de prod, je suis déjà dans un cas très proche, a part que je n'ai pas de réseau A.
sur ma passerelle j'ai dns+dhcp (dnsmasq), postfix, dovecot, samba, radicale, prosody, squid et squidguard + d'autres trucs smile
avec bien sur l'ip forward big_smile

et pour passer en proxy transparent j'ai juste eu a rediriger le port 80.

y'a peut-être une feinte lié au fait qu'elle a 2 sous-réseaux ce qui expliquerais sa conf, faudrait que je teste scratchhead.gif

Minute existentielle : "Si nous ne sommes pas sensés grignoter la nuit, pourquoi y a-t-il une lumière dans le frigo?"

Hors ligne

#7 13-10-2016 17:43:42

anonyme
Invité

Re : tuto debianfacile pour squid transparent étrange?

elle  a un réseau local (avec box pour le net) réseau A
une passerelle avec 2 cartes reseau (réseau A et réseau B)
des clients sur le réseau A et des clients sur le réseau B

elle explique comment gérer le trafic des clients du réseau B avec squid (donc le port 80 ) mais en utilisant le port de squid au niveau de la passerelle

pour les ip a vérifier , elle a pris 192.168.0.xxx  pour le réseau A
                                          et  192.168.1.xxx  pour le réseau B

je pense que j'ai pas écrit de bétises  smile
ça vaut le coup de tester si tu a le temps et le materiel
@++

#8 13-10-2016 20:05:39

raleur
Membre
Inscription : 03-10-2014

Re : tuto debianfacile pour squid transparent étrange?

winproof a écrit :

pourquoi faire du DNAT sur l'interface du LAN (eth1) pour tout rediriger vers eth0


Ton interprétation de la première règle iptables est erronée. Je la remets pour mémoire.

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:3129


DNAT ne redirige pas vers une interface mais vers une adresse et/ou un port. Le paquet est redirigé vers une interface seulement si la nouvelle adresse de destination est distante et routée par cette interface. Ici, l'adresse de destination cible 192.168.0.1 appartient à la machine elle-même, peu importe l'interface, donc le paquet n'est pas redirigé vers eth0 mais délivré au processus local qui a ouvert le port cible 3129 sur cette adresse ou toutes les adresses locales, en l'occurrence squid.

winproof a écrit :

pourquoi utiliser la table mangle pour dropper les ports 3128 et 3129? il suffit de les bloquer au niveau firewall, non?


C'est précisément ce que font ces règles.
Mais si on bloquait ces paquets comme on le fait habituellement dans la chaîne INPUT de la table "filter" qui est parcourue après la chaîne PREROUTING de la table "nat", on bloquerait aussi les paquets redirigés par la règle DNAT ou REDIRECT. En mettant la règle dans la chaîne PREROUTING de la table "mangle" qui est parcourue avant, on ne bloque que les paquets qui ont été reçus directement à destination du port 3128/3129, et non ceux qui ont été reçus à destination du port 80 puis redirigés.

winproof a écrit :

il écoute bien sur le port 3129, mais il n'est pas bindé sur une interface précise, il écoute donc a la fois sur eth0 et eth1, non?


1) Ne pas confondre adresse et interface.
2) Oui, et alors ? Si on utilise DNAT au lieu de REDIRECT (ce qui est parfaitement respectable), il faut bien mettre une adresse cible, même si le port cible n'est pas lié à une adresse locale particulière.

Mais tu as raison sur le fond : ce tutoriel contient des incohérences.

- Les paquets HTTP reçus du réseau A par eth0 sont aussi redirigés vers le port local transparent de squid alors que le proxy transparent n'est censé être utilisé que par les machines du réseau B connecté à eth1.

- Squid est configuré pour écouter aussi en mode non transparent sur le port 3128 mais les règles iptables bloquent les paquets entrants vers ce port par les deux interfaces.

- La section "Table de routage" est au mieux inutile et au pire erronée.

Dernière modification par raleur (13-10-2016 20:06:28)


Il vaut mieux montrer que raconter.

Hors ligne

#9 14-10-2016 00:48:42

winproof
Membre
Lieu : Isére
Distrib. : debian 9/proxmox
Noyau : Linux 4.9.0-5-amd64
(G)UI : sans
Inscription : 15-05-2013

Re : tuto debianfacile pour squid transparent étrange?

yes, ça c'est de l'analyse!merci.gif
c'est nettement plus clair dans ma petite tête maintenant smile

Dernière modification par winproof (14-10-2016 00:49:33)


Minute existentielle : "Si nous ne sommes pas sensés grignoter la nuit, pourquoi y a-t-il une lumière dans le frigo?"

Hors ligne

#10 14-10-2016 04:46:48

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : tuto debianfacile pour squid transparent étrange?

Si vous pouviez reporter les corrections dans le tuto ce serait chouette, perso j'en suis pas capable. smile
https://debian-facile.org/doc:reseau:sq … ransparent

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#11 14-10-2016 12:23:41

raleur
Membre
Inscription : 03-10-2014

Re : tuto debianfacile pour squid transparent étrange?

"J'étais sûr que vous diriez ça !" (avec la voix de Stallone dans Judge Dredd)

Je n'écris pas de tutoriel, je ne vais pas m'enquiquiner à corriger ceux des autres.

Il vaut mieux montrer que raconter.

Hors ligne

#12 14-10-2016 12:39:00

winproof
Membre
Lieu : Isére
Distrib. : debian 9/proxmox
Noyau : Linux 4.9.0-5-amd64
(G)UI : sans
Inscription : 15-05-2013

Re : tuto debianfacile pour squid transparent étrange?

ben en plus y'en aurais une chié a modifier, par exemple je regardais celui-ci (https://debian-facile.org/doc:reseau:apache2), écrit pour apache 2.2, mais sous jessie c'est apache 2.4, et pas mal de trucs ont changés dans les fichiers de conf smile

Minute existentielle : "Si nous ne sommes pas sensés grignoter la nuit, pourquoi y a-t-il une lumière dans le frigo?"

Hors ligne

#13 14-10-2016 12:57:57

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : tuto debianfacile pour squid transparent étrange?

Bah, y va pas s'modifier tout seul wink C'est certain qu si personne ne le fait, il restera comme ça wink

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#14 14-10-2016 14:13:28

winproof
Membre
Lieu : Isére
Distrib. : debian 9/proxmox
Noyau : Linux 4.9.0-5-amd64
(G)UI : sans
Inscription : 15-05-2013

Re : tuto debianfacile pour squid transparent étrange?

le problème, c'est que quand je je regarde un tuto, c'est que j'y connait que pouic, du coup le modifier... big_smile

surtout que les tutos de Hypathie sont super complets, il faudrait le tester de A a Z pour tout vérifier et corriger si nécessaire.

Dernière modification par winproof (14-10-2016 14:16:56)


Minute existentielle : "Si nous ne sommes pas sensés grignoter la nuit, pourquoi y a-t-il une lumière dans le frigo?"

Hors ligne

#15 14-10-2016 14:53:59

winproof
Membre
Lieu : Isére
Distrib. : debian 9/proxmox
Noyau : Linux 4.9.0-5-amd64
(G)UI : sans
Inscription : 15-05-2013

Re : tuto debianfacile pour squid transparent étrange?

bon, finalement, étant une bille en apache, je vais suivre le tuto de A a Z, ça me fera pas de mal lol
faut que je m'installe une VM
du coup dans la foulée je vais noter les diffs pour le mettre a jour.
par contre pour en discuter, j'ouvre un nouveau post ou on continue sur celui de suivi du tuto?

PS: par contre pour le tuto squid, trop compliqué de monter la même archi pour test,j'y touche pas, désolé smile

Dernière modification par winproof (14-10-2016 14:59:06)


Minute existentielle : "Si nous ne sommes pas sensés grignoter la nuit, pourquoi y a-t-il une lumière dans le frigo?"

Hors ligne

#16 14-10-2016 15:59:15

anonyme
Invité

Re : tuto debianfacile pour squid transparent étrange?

Bonjour

pour ce tuto rien de bien méchant
le premier point Hypathie a prévu l'utilisation de squid sur la passerelle aussi ce qui n'est pas bien méchant
et le deuxieme point (routage , sur quoi , la passerelle? , ) peut etre lui demander pourquoi elle a fait cela , sur celui d iptables pour une passerelle , elle avait précisé par exemple pour les clients du réseau A pour qu ils voient les clients du réseau B et donné la modification a faire  , juste pour test et a précisé pour la rendre permanente le cas échéant .
la j'ai pas compris , je sais que dans ses tutos il y la config et une partie TP pour que celui qui teste comprenne ce qu il fait (donc pas mal d'exemples a titre informatif)
de plus je pense qu'elle a fait le montage en meme temps que le tuto

pour dhcp , quand il a fallu précisé pour déterminé la carte ou dhcp sert les clients on en a discuté et le tuto a été modifié
j'ai attendu quel soit sur le forum (a priori elle mord pas tongue  )
enfin je dis ça je dis rien hmm

#17 27-10-2016 22:25:47

numa
Membre
Distrib. : Debian 8 - Fedora
(G)UI : Gnome
Inscription : 27-10-2016

Re : tuto debianfacile pour squid transparent étrange?

Bonjour,

Je me permets de rebondir sur le sujet concernant ce deuxième tuto :
http://wiki.squid-cache.org/ConfigExamp … olicyRoute

Ce qui revient au même que le sujet abordé plus haut sauf que le Squid et la passerelle/pare-feu sont dissociés.
Cette solution proposée sur wiki.squid-cache.org fonctionne parfaitement mais je n'arrive pas à comprendre pourquoi un simple DNAT sur la passerelle ne fonctionne pas.

Sur les version 2 de Squid (si mes souvenirs sont bons), il suffisait de rediriger les flux tcp 80 depuis la passerelle vers le Squid à l'aide d'un PREROUTING dans la table NAT et tout fonctionnait correctement. Malheureusement cela ne fonctionne plus avec Squid 3.
Il est vrai que d'un point de vue "beauté de l'art", cette nouvelle façon de faire est plus propre mais en définitive on a quand même un PAT (ou un NAT) sur le Squid pour réorienté les flux tcp 80 vers le port d'écoute du Squid (3129 par exemple). La différence au niveau de la passerelle étant qu'on se contente de toucher à l'@mac de destination au lieu de l'IP de destination.
J'ai lu que le DNAT (PREROUTING) altérait les paquets lorsqu'il était en place sur la passerelle et que c'est pour cela que Squid 3 refusait de les traiter... mais je n'arrive pas à comprendre où au niveau de trame cette altération pourrait s'effectuer.

Voilà, si quelqu'un a une idée sur le sujet, je suis preneur smile

Pour info, c'est juste pour ma culture personnelle ; je n'ai pas de serveur Squid en (réelle) prod.

Merci.

Hors ligne

#18 30-10-2016 13:52:06

raleur
Membre
Inscription : 03-10-2014

Re : tuto debianfacile pour squid transparent étrange?

numa a écrit :

Ce qui revient au même que le sujet abordé plus haut sauf que le Squid et la passerelle/pare-feu sont dissociés.
Cette solution proposée sur wiki.squid-cache.org fonctionne parfaitement mais je n'arrive pas à comprendre pourquoi un simple DNAT sur la passerelle ne fonctionne pas.


A cause du routage asymétrique que cette architecture implique. Lorsque le proxy transparent est dans le même LAN que les clients, le routage du client vers le proxy est le suivant :

  client -> routeur (DNAT) -> proxy

Et le routage du proxy vers le client est le suivant :

  proxy -> client

En effet le proxy est dans le même LAN que le client donc par défaut il leur envoie les paquets directement sans passer par le routeur.
Or le NAT ne fonctionne correctement qu'avec du routage symétrique car il faut que les paquets retour repassent pas le routeur qui a fait le NAT sur les paquets aller pour faire l'opération inverse. Il existe néanmoins divers moyens pour rendre le routage symétrique et faire passer les paquets retour par le routeur :

- faire du SNAT (NAT source) sur les connexions redirigées par le routeur vers le proxy, mais le proxy ne verra pas l'adresse source réelle du client
- router tous les paquets émis par le proxy via le routeur, même ceux destinés aux adresses du LAN
- router seulement les paquets émis par le proxy avec comme port source le port transparent via le routeur

A noter que même avec ces moyens, les clients HTTP 1.0 (n'utilisant pas l'en-tête "Host" pour indiquer le site) ne fonctionneront pas car l'adresse IP de destination originelle est masquée au proxy par le DNAT. Losque le DNAT ou le REDIRECT est fait sur le proxy lui-même, squid peut retrouver l'adresse IP originelle dans la table d'état du NAT locale.


Il vaut mieux montrer que raconter.

Hors ligne

#19 01-11-2016 17:59:21

numa
Membre
Distrib. : Debian 8 - Fedora
(G)UI : Gnome
Inscription : 27-10-2016

Re : tuto debianfacile pour squid transparent étrange?

Je comprends bien mais j'ai l'impression que ce type de montage ne fonctionne plus avec squid 3 (alors qu'il me semble que ça fonctionnait avec le version 2.5).

Avec un schéma ça sera plus simple, voilà le type de montage que j'ai testé :

161101055525210015.png
- Le pare-feu/passerelle est une debian avec le forwarding d'activé ;
- eth1 est la passerelle par défaut de mon LAN ;
- eth2 est la passerelle par défaut du Squid.

Si je mets un DNAT de tout ce qui arrive sur le port 80 d'eth1 vers le port 3129 du Squid => ça ne marche pas.
Si j'ajoute (en plus du DNAT) un SNAT sur tout ce qui sort de eth2 => ça marche pas non plus.

Pourtant, si j'ai bien compris tes explications, je ne fais pas de routage asymétrique.


La seule solution pour que ça marche c'est la route et le marquage des paquets avec la table mangle ; les bras m'en tombes kernal_panic.gif.

Hors ligne

#20 01-11-2016 18:32:28

raleur
Membre
Inscription : 03-10-2014

Re : tuto debianfacile pour squid transparent étrange?

En effet le routage est symétrique puisque tous les flux aller et retour entre le LAN et le proxy passent par le pare-feu/passerelle.
J'avoue que je suis aussi étonné, mais il y a longtemps que je n'ai pas utilisé Squid.
Que se passe-t-il exactement ?

Il vaut mieux montrer que raconter.

Hors ligne

#21 01-11-2016 18:46:36

numa
Membre
Distrib. : Debian 8 - Fedora
(G)UI : Gnome
Inscription : 27-10-2016

Re : tuto debianfacile pour squid transparent étrange?

Squid ne cherche même pas à charger la page sur internet, il renvoie directement au client une page d'erreur.

Sinon, rien de significatif ou d'explicite dans les logs (cache.log ou en mode debug).

Dernière modification par numa (01-11-2016 18:48:52)

Hors ligne

Pied de page des forums