Raspberry Pi en proxy avec Squid pour accélérer votre navigation

Lorsque plusieurs personnes utilisent votre connexion, ça peut bouchonner. Surtout si chez vous il y a des fans de Pinterest, Facebook, etc. Les pages vont se rafraichir mais souvent avec des données communes. Et c’est là que Squid intervient.

Squid va mettre en cache vos pages, vérifier si les données sont à jour, etc. Après plusieurs jours d’utilisation, le gain estimé (calculé par les logs via calamaris)

  1. Installer Squid
    sudo apt-get install squid
  2. Sauvegarder le fichier de configuration standard
    cd /etc/squid/
    sudo cp squid.conf squid.conf.origin
  3. Vous pouvez filtrer les lignes et enlever les lignes avec des commentaires. Vous aurez un fichier ultra light !
    sudo cat squid.conf.origin | egrep -v -e '^[[:blank:]]*#|^$' > squid.conf

    Par défaut le répertoire où votre cache sera stocké est /var/spool/squid/

  4. Ajouter votre réseau à la fin de la liste des ACL. Chez moi je suis en local sur le 192.168.1.x. J’ai donc ajouté la ligne suivante
    acl LocalNet src 192.168.1.0/24

    Par contre avec ce masque j’ai dû désactivé (mettre # en début de ligne) cet ACL présent par défaut

    #acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
  5. Autoriser les machines du réseau à se connecter au proxy. Ajouter la ligne rouge. Le lien se fait avec le nom. Ici LocalNet.
    http_access allow localhost
    http_access allow LocalNet
    http_access deny all
  6. Recharger la configuration de Squid
    sudo /etc/init.d/squid reload
  7. Vous pouvez maintenant configurer votre navigateur ou OS pour utiliser le proxy en HTTP avec l’ip du Raspberry Pi et le port (par défaut) 3128.

Pour une gestion de la configuration via une interface web, vous pouvez utiliser Webmin. L’outil permet de faire tous les changements de configuration.

  1. Installer Webmin
    mkdir webmin
    cd webmin/
    wget http://prdownloads.sourceforge.net/webadmin/webmin-1.620.tar.gz
    tar zxvf webmin-1.620.tar.gz
    cd webmin-1.620/
    sudo ./setup.sh /usr/local/webmin
  2. Installer l’analyseur de log calamaris, très pratique pour les informations d’utilisation du proxy
    sudo apt-get install calamaris

Vous pouvez maintenant vous connecter sur l’ip de votre Raspberry Pi sur le port 10000. Vous vous identifiez avec l’id et le mot de passe de l’étape 1.

Chez moi j’ai trouvé le point d’entrée dans le menu ‘Un-used Modules’ car la configuration par défaut n’est pas bonne. Vous aurez donc à changer quelques paramètres pour que le module revienne à sa place. Ci dessous ma configuration :

webmin-2

Dans la section serveur, vous avez maintenant accès à toute la configuration de Squid

webmin-0

Grâce aux logs et à Calamaris vous pourrez suivre l’utilisation de votre proxy et de ses performances :

webmin-1

Amélioration de 19% des performances de navigation. A voir dans le temps si ça reste aussi bon.

Voilà. Mon Mac et mon iPad sont configurés pour passer par le proxy. Le test ultime : Madame ! Si je n’ai pas de remarques genre « mais pourquoi c’est plus lent » ou « t’es pénible avec tes bidouilles », alors c’est que ça valait le coup 😀

Je vais travailler pour le cache DNS, le HTTPS, l’occupation du disque,de la mémoire et quelques autres fonctionnalités qui peuvent encore améliorer les performances.

Vous aimerez aussi...

  • Vraiment sympa et efficace… Je ne connaissais pas du tout. C’est adopté… (madame aussi est contente pour le moment) 😉

    Une petite question malgré tout.

    Sur mon Rpi, j’ai créé un vpn pptp pour pouvoir surfer sur internet à partir de mon smartphone en passant par lui (donc avec partage de connexion internet)

    Donc 3g->vpn->internet

    Je souhaiterais que tout passage par le vpn passe par squid de manière à compresser ma data.

    Saurais tu comment je pourrais m’y prendre ?

    Un grand merci.

    • J’avoue que je suis loin de maitriser les paramètres complets de Squid. Je regarde la compression et si je trouve, je te donne l’info

      • Non, je me suis mal exprimé, en fait je voudrais forcer le passage par squid lorsque j’accède à mon vpn.

        Que toutes connection au vpn passe par squid.

        Je pense que ce doit être une redirection au niveau des iptables, mais j’avoue ne pas trop m’y connaître la dedans… 🙁

        J’espère avoir été plus clair…

        • Christophe

          Je te confirme pour l’avoir fait, si tu as un routeur qui le permet (Linux), tu n’autorise que le trafic web pour ton squid et c’est tout. (donc avec iptables)
          Je l’ai utilisé entre autre pour éviter de bypasser facilement un proxy.

  • Sleepyhead

    Bpnjour.

    Je suis preneur des retours à plus terme ainsi que de ceux de Madame ^^.

    • Bonjour,
      Au bout de quelques jours j’ai supprimé le proxy. Les résultats étaient positifs mais j’avais besoin du Raspberry pour d’autres tests. Mais aucune plainteremarque de madame 🙂
      Pour moi c’est un bon plan !

  • ToF

    Je vois juste un inconvénient. Les OS des RPI font leur maximum pour ne pas écrire sur la SD comme sur une disque classique car les cycles d’écriture/réécriture sont limités (avant la mort de la SD). Donc en faisant de la SD un cache web vous risquez de voir mourir votre SD assez vite.

    • Excellente remarque ! Effectivement il vaut peut être mieux mettre le cache sur une clé USB.

      • Mauro

        Bonjour,

        Comment faire justement pour changer la localisation du cache vers une clé usb?

  • Christophe

    Moi j’utilise squidguard en plus sur mon Rpi c’est top!
    J’utilise pas du tout webmin mais cet article est très bien fait et la remarque de ToF est très pertinante, je n’y avait pas pensé merci!

  • crozy

    Bonjour, en voulant installer j’ai une erreur 404 Not Found. Comment puis-je me procurer se programme ? Merci

    • Disons que l’erreur 404 ne donne pas bcp d’infos. Est ce que le serveur web fonctionne bien avec le php ? Est ce que le bloc serveur pointe bien sur le bon repertoire ? Quel est le serveur web utilisé ?
      Il faut un peu plus d’info et de details pour t’aider

      • crozy71

        En fait sa fonctionne je n’arrivais juste pas a téléchargé Squid. Cela devais venir de mon réseau.

        Merci pour votre réponse rapide.

  • Michael

    bonsoir.
    Merci pour ce tuto.
    J’aurai besoin de votre aide, je ne trouve pas dans webmin le menu pour régler calamaris.
    Je pense que je n’ai pas squid proxy serveur a cause de ca?
    merci d’avance

    • Bonsoir. Souvenirs …. Il me semble qu’il y a un plugins dans webmin pour activer squid. Il se trouve alors dans un menu « autres » ou un truc dans le genre

  • mika

    Top ça marche.
    j’ai relancé tous les service et j’ai fais une recherche dans webmin sur le germen calamaris, je suis tombé sur l’interface.
    merci 🙂

  • mika

    J’ai encore une question le proxy semble bien marché, mais comment je peux forcer le passage des pc sur le proxy.
    j’ai un routeur le raspberry est relier a ce routeur et les clients ce connecte en wifi.

    • En utilisant le raspberry comme passerelle par defaut dans la configuration internet des clients. Ca marche pas mal.

  • Michael

    bonsoir
    faut aller ou dans les menu pour voir les log de navigation des clients ? j’ai installé calamaris

    • Je ne le souviens plus du tout. Dabs webmin ? Ou sur le filesystem ? C’est peut etre aussi une option a activer

  • Erwan

    Bonjour
    N’ayant pas réussit à faire démarrer squid sur mon synology, cette solution m’intéresse fortement. D’après vous le raspberry en 256 Mo est suffisant ou vaut-il mieux partir sur le 512 Mo pour 4 à 5 accès internet ?

    • Bonjour,
      Dans mes tests le 256Mo semblait suffit pour 2 accès non gourmands. Le 512Mo serait une sécurité 😉

  • DRAKUN

    Bonjour,

    je n’arrive pas à autoriser https://www.google.com sur mon serveur proxy;
    1398414717.313 16 192.168.4.43 TCP_MISS/503 0 CONNECT http://www.google.sn:443 drak DIRECT/173.194.78.94 -
    1398414721.010 0 192.168.4.43 TCP_DENIED/407 3667 CONNECT http://www.google.sn:443 - NONE/- text/html
    1398414721.014 0 192.168.4.43 TCP_DENIED/407 3962 CONNECT http://www.google.sn:443 - NONE/- text/html
    1398414721.026 9 192.168.4.43 TCP_MISS/503 0 CONNECT http://www.google.sn:443 drak DIRECT/173.194.78.94 -
    1398414721.554 0 192.168.4.43 TCP_DENIED/407 3667 CONNECT http://www.google.sn:443 - NONE/- text/html
    1398414721.558 1 192.168.4.43 TCP_DENIED/407 3962 CONNECT http://www.google.sn:443 - NONE/- text/html
    1398414721.573 12 192.168.4.43 TCP_MISS/503 0 CONNECT http://www.google.sn:443 drak DIRECT/173.194.78.94 -

    Quelqu’un peut il m’aider

Handpicked links

Mise en cache objet de 2212/2477 objets utilisant disk Mise en cache utilisant disk: enhanced Mise en cache de base de données 26/73 requêtes dans 0.323 secondes utilisant disk Served from: pihomeserver.fr @ 2017-06-16 02:26:47 by W3 Total Cache -->