Tout d’abord je tiens à préciser que mes connaissances de Linux sont très limitées et en dehors de apt-get update et install, je suis vite dépassé. En outre j’avoue que je ne connais rien en matière de réseau.
J’ai réussi à installer tant bien que mal squid3. Je suis sous Debian Jessie 8.4 (3.16.0-4-amd64) et ma version de squid est la 3.4.8. Squid fonctionne puisqu’il bloque la liste de domaines que j’ai créé en suivant plusieurs tutos (je me suis arrêté à squid et je n’ai pas installé squidguard).
Mon problème c’est qu’il fonctionne uniquement en paramétrant iceweasel. Je suis obligé de cocher “configuration manuelle du proxy” et de renseigner l’adresse ip et le port 3128. Quant à Chromium j’ai le message suivant “Lorsque vous exécutez chrome […] les paramètres proxy du système sont utilisés. Cependant, soit votre système n’est pas compatible, soit un problème est survenu lors du lancement de votre configuration système.”
J’ai vu alors qu’il fallait rendre le proxy transparent en rajoutant d’une part “transparent” après le port 3128 dans le fichier squid.conf puis en rajoutant des règle iptables.
Malheureusement, après plusieurs tentatives je n’arrive pas à rediriger le trafic internet vers le port 3128 en “transparent”.
Est ce que quelqu’un aurait l’amabilité de m’aider et de m’expliquer comment procéder (si possible simplement) ? J’ai vu que le sujet était déjà abordé mais j’ai l’impression que cela concerne plusieurs “machines” en entreprise avec un serveur. Pour ma par il s’agit de deux ordinateurs personnels branchés derrière une freebox.
Par contre, je ne comprends pas ce qui se passe mais je m’aperçois que squid me bloque désormais tout le trafic alors que la dernière fois il ne me bloquait que les domaines de la liste ???
Quant au parefeu je n’ai rien fait pour l’instant, écoutant les conseils de PascalHambourg “Tu n’as pas besoin d’un pare-feu complet.”
Salut,
La machine est une passerelle avec deux interfaces ou une seule ?
Sans règles iptables ça ne peut pas fonctionner, et a fortiori de façon transparente.
Dans le cas d’une machine avec deux interfaces (eth0=LAN eth1=WAN):
Il faut activer l’IP Forwarding (La commande en dessous ne résiste pas au reboot et ne concerne que l’ipv4)
echo 1 > /proc/sys/net/ipv4/ip_forward
Pour ce qui est du des règles iptables (On redirige les demande sur le port 3128, on accepte le passage d’une interface vers l’autre et enfin on masque l’IP d’origine)
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
En fait il s’agit de deux PC de bureau dans la chambre d’un ado et d’un pré-ado tous deux reliés à une freebox.
En fait quand je tape ifconfig je n’ai que :
eth0 avec à la deuxième ligne
[…]
inet adr:192.168.1.14 Bcast:192.168.1.255 Masque:255.255.255.0
[…]
lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
[…]
Je n’ai pas de eth1.
Et effectivement sur quasi tous les forums je retrouve les mêmes règles iptables avec eth1 et c’est je pense la raison pour laquelle je n’y arrive pas.
Je compte sur toi pour me trouver la solution, qui est peut être toute simple. En tout cas merci.
Si j’ai bien compris, le navigateur et le proxy sont sur la même machine. Ce n’est pas la situation la plus simple. Il faut tenir compte des particularités suivantes :
Les connexions à rediriger sont sortantes et non entrantes, et doivent donc être traitées par une règle iptables dans la chaîne OUTPUT et non PREROUTING.
La règle iptables ne doit pas rediriger les connexions émises par le proxy lui-même, sinon ça boucle. Le moyen classique pour identifier les paquets émis par le proxy est d’utiliser la correspondance owner avec le user-id ou group-id du processus squid.
Pas le temps de détailler plus en ce moment, désolé.
Oui c’est tout à fait ça, j’aimerai bloquer le trafic sortant vers internet sur certains sites sur 2 ordinateurs et sur chacun d’eux j’ai installé squid3 et bien sûr il y a le navigateur. [quote=« PascalHambourg, post:6, topic:69227 »]
Les connexions à rediriger sont sortantes et non entrantes, et doivent donc être traitées par une règle iptables dans la chaîne OUTPUT et non PREROUTING
[/quote]
Est ce que quelqu’un peut m’en dire plus sur ces fameuses règles ?
[quote=« PascalHambourg, post:6, topic:69227 »]
Si j’ai bien compris, le navigateur et le proxy sont sur la même machine
[/quote]Effectivement c’est plus clair…
[quote=« asno, post:7, topic:69227 »]
sur 2 ordinateurs et sur chacun d’eux j’ai installé squid3
[/quote]Je me demande s’il y a pas un moyen plus simple de faire ça…
Du coup oui, ce que je t’ai donné n’a pas de sens…
Ça devrait ressembler à ça plutôt:
Je n’ai jamais fait ça, donc, c’est sans garantie.
Ligne 1: pas de passage par squid pour localhost
Ligne 2 et 3: Le proxy Squid ET asno sortent sans passer par le proxy (ie tous les autres doivent passer par squid => règle 3).
Ligne 4: Tout le reste passe par le proxy.
La règle ne fonctionne qu’avec les connexions à des sites utilisant le port 80.
La redirection transparente ne fonctionne pas avec les sites sécurisés (HTTPS, port 443). On peut le faire à condition de configurer le proxy pour envoyer un certificat pour n’importe quell site et le navigateur pour accepter le certificat du proxy. Mais je ne sais pas faire.
A là là… c’est trop beau ces lignes d’iptables, ça me redonne espoir,
Par contre :
Est ce que c’est toujours d’actualité ?
Je tape ceci puis je fais :
Ou bien juste cette dernière ligne ?
Je vais également vérifier que squid tourne sous l’UID « squid » si j’ai bien compris avec la commande ps -Af, en tout cas à l’installation de squid3 je n’ai pas créé d’user-id ou de group-id, j’ai juste édité squid.conf que j’ai posté plus haut.
Du coup je laisse uid-owner squid ? ou bien est-ce que je change par « proxy » ou « root » ? ça va peut être vous paraître bête mais je suis un peu perdu.
Je m’excuse auprès de PascalHambourg je n’avais pas vu qu’il avait édité son message et je sais ou se trouve l’ inversion « ! »
Comme il y a plusieurs processus squid, il faut chercher celui qui fait les connexions sortantes. Logiquement cela devrait être un de ceux dont l’UID est “proxy”. On ne peut pas vérifier directement, mais on peut voir lequel écoute sur le port 3128 avec
netstat -ntlp | grep 3128
[quote=“asno, post:16, topic:69227”]
J’ai l’impression qu’il n’y a plus personne[/quote]
Souvent les gens dorment la nuit. C’est mon cas.
Non squid-1 est le nom du processus, qu’on retrouve avec son PID (process ID) 972 dans la sortie de ps. ps indique que l’UID (user ID) de ce processus est proxy.
Le fait que squid ouvre une socket IPv6 me fait penser que si la machine a une connectivité IPv6 globale, l’accès aux sites accessibles en IPv6 ne passera pas par le proxy car iptables ne traite que les paquets IPv4. Pour traiter les paquets IPv6, il faut utiliser ip6tables.
Tu peux vérifier si la machine a une adresse IPv6 globale avec ip -6 addr
Si cela n’affiche aucune ligne d’adresse IPv6 (inet6) avec “global”, tu n’es pas concerné pour le moment.