Forum Linux.debian/ubuntu configuration proxy transparent avec 2 cartes réseaux(squid 2.6+shorewall)

Posté par .
Tags : aucun
1
27
août
2008
Slt à tous,

Voilà quelque temps que j'ai appris à mettre en place des proxy transparents, mais voilà dans aucune des docs que j'ai lues jusqu'à présent on e faisait mention de l'utilisation de deux cates réseaux et à chaque fois que je mettais le proxy dans le réseau, au lieu d'améliorer la connexion, il la dégradait.
A présent je viens de voir une config avec deux cartes réseau et shorewall qui me fait penser que c'est ça la solution à mon probleme mais voilà, elle ne marche pas et je n'y connais rien à shorewall.
Alors si quelqu'un a déja configuré un proxy transparent avec shorewall et 2 cartes reseau, un retour d'expérience serait sympa ou un lien vers un tuto.

merciiiiiii
  • # que cherches-tu a faire ?

    Posté par (page perso) . Évalué à 1.

    C'est pas clair.
    Tu a 2 cartes pour doubler la bande passante de ton serveur ?
    Tu veux faire du fail-over pour basculer sur la 2nd carte ethernet
    si la 1 ere tombe ?
    Cela ressemble + à un pb de routage/balance de charge.

    Système - Réseau - Sécurité Open Source

    • [^] # Re: que cherches-tu a faire ?

      Posté par . Évalué à 2.

      ou peut-etre avoir ton proxy en guise de passerelle ?

      Lan -> carte 1 -> proxy -> carte 2 -> internet (ou passerelle internet)
      • [^] # Re: que cherches-tu a faire ?

        Posté par (page perso) . Évalué à 1.

        Le proxy est-il la passerelle ?
        Si non, il faut etre tres vigilant pour ne pas rediriger les requetes web ( 80 ) vers le proxy lui-meme.
        Il faut rediriger les requetes des clients à destination du port 80 sauf celles du proxy. ( sinon ça boucle )

        La config ip est fonctionnelle ?
        Tu utilises iptables, squid ?
        Bref, decris ton contexte, si tu veux de l'aide.

        Système - Réseau - Sécurité Open Source

      • [^] # Re: que cherches-tu a faire ?

        Posté par . Évalué à 1.

        c'est exactement ce que je cherche à faire, transformer le proxy en passerelle. c'est bien ça l'utilité d'un proxy transparent n'est ce pas!!
        • [^] # Re: que cherches-tu a faire ?

          Posté par (page perso) . Évalué à 1.

          Tu as 2 problèmes à resoudre:

          - faire fonctionner ta passererelle/routeur nat ip (routage /dns /... )

          - que les clients de ton reseau l'utilise celle-ci ( dns / ip / route par default )

          - et enfin configurer squid en proxy transparent ( cf doc squid,
          5 lignes de conf pour le proxy transparent grand max , mais au préalable le squid doit marcher en proxy non transparent )

          Système - Réseau - Sécurité Open Source

          • [^] # Re: que cherches-tu a faire ?

            Posté par . Évalué à 1.

            slt,
            le probleme se situe uniquement au niveau du routage des paquets provenant du réseau local vers Internet via mon proxy et vice-versa.
            J'avais pour habitude de configurer un dns cache et un dhcp sur la même machine, ainsi j'obligeais tous les clients du LAN a avoir obligatoirement comme interlocuteur ma machine.
            Dans mon ancienne config mes clients arrivent parfaitement à avoir accès à Internet via mon proxy, mais la connexion était ralentie.
            A présent je pense mettre en place une seconde carte réseau qui communiquera avec le routeur dans un réseau donné et l'autre carte communiquera avec le LAN dans un autre.
            LAN( 192.168.2.0)->proxy-carte1(192.168.2.1)->proxy-carte2(192.168.1.2)->routeur(192.168.1.1)
            A présent ce qu'il me faut c'est permettre à mon proxy de faire ce routage
            • [^] # Re: que cherches-tu a faire ?

              Posté par (page perso) . Évalué à 1.

              Que-ce qui te permet de dire que tes cartes réseaux arrivent à saturation ( 100 Mbps probablement ) ? Ce ne serait pas ta connection internet ?
              Tu as quoi comme connection adsl/xdsl/ t1/e3 ? Quelle est son debit entrant/sortant ?

              Connection ralentie ?
              - probleme de dns
              - debit ( 1 site en particulier / plusieurs )
              ...

              - Mesurer le debit par interface ( mrtg / cacti, ... )
              - tester une connection ( iperf, ... )

              Dns => commande dig, host

              Système - Réseau - Sécurité Open Source

              • [^] # Re: que cherches-tu a faire ?

                Posté par (page perso) . Évalué à 1.

                shorewall = firewall
                As-tu penser à regarder les paquets rejetés ( surtout si tu modifie l'architecture ) ?

                Système - Réseau - Sécurité Open Source

                • [^] # Re: que cherches-tu a faire ?

                  Posté par . Évalué à 1.

                  A vrai dire je n'ai pas penser à mesurer le débit par interface car je ne pense pas que le probleme vient de là, pour la simple raison que la connexion est plus rapide sans mon proxy qu'avec.
                  C'est pourquoi je penche plus pour une mauvaise config.
                  Et en ce qui concerne shorewall suis tt à fait d'accord mais le probleme est que je n'ai jamais eu à utiliser shorewall et ce n'est que maintenant que g commence à bosser sur les firewalls.
                  C'est pourquoi je suis à la recherche d'un bon tuto de config de squid avec shorewall.
                  • [^] # Re: que cherches-tu a faire ?

                    Posté par (page perso) . Évalué à 1.

                    J'espere pour toit que ton pb n'est pas lie au firewall sinon
                    tu risques de chercher longtemps.

                    En ce qui concerne la config de squid le web est une mine d'or.
                    J'ai configuré le mien en moins de 15 minutes.

                    Bon courage.

                    Système - Réseau - Sécurité Open Source

                    • [^] # Re: que cherches-tu a faire ?

                      Posté par . Évalué à 1.

                      justement c'est là que se situe mon probleme, recupérer les paquets venant du LAN et les transférer à l'autre interface et vice - versa.
                      Ayant beaucoup cherché je pensais que quelqu'un ici avait déja eu à configuré squid avec shorewall ou un autre, ce qui aurait pu au moins m'aiguiller sur la démarche à suivre.
                      • [^] # Re: que cherches-tu a faire ?

                        Posté par (page perso) . Évalué à 1.

                        cela s'appelle du routage
                        cf activer ip forwarding sous linux

                        cela pourrait aussi etre filtre ( chaine FORWARD iptables )

                        Si tes interfaces réseaux, tes reseaux ip sont distincts ( netmask ) , les passerelles configurées et utilisées par tes machines clients cela va fonctionner !

                        Faire des tests peuvent t'aider:

                        a partir d'un client du réseau:
                        - pinguer un client de ce meme réseau pour verifier le netmask
                        - pinguer l'interface de la passerelle cote client ( route par default )
                        - pinguer l'autre interface de la passerelle ( permet de verifier que le
                        routage fonctionne )
                        - enfin pinguer un routeur/ une machine d'un reseau proche ( celui
                        ou est connectée la 2eme patte de la passerelle )

                        Système - Réseau - Sécurité Open Source

                        • [^] # Re: que cherches-tu a faire ?

                          Posté par . Évalué à 0.

                          OK j'essayerai mais je précise que le routage est actif
                          /proc/sys/net/ipv4/ip_forward est à 1.
                          Mais les ping échouent quand j'essaye d'atteindre Internet.
                          • [^] # Re: que cherches-tu a faire ?

                            Posté par (page perso) . Évalué à 1.

                            cqfd

                            Système - Réseau - Sécurité Open Source

                          • [^] # Re: que cherches-tu a faire ?

                            Posté par . Évalué à 4.

                            pour que ca passe d'un reseau à l'autre

                            Sur le proxy :
                            Carte 1 (internet) : 192.168.1.2/24, passerelle 192.168.1.1
                            Carte 2 (lan) : 192.168.2.1/24, pas de passerelle

                            pour que le reseau passe de l'un vers l'autre il te faut

                            ip_forward=1 (ca c'est fait)

                            1°) desactiver iptables ou shorewall pour verifier que cela fonctionne

                            2°) regler les filtres FORWARD et OUTPUT pour laisser sortir les infos

                            3°) activer le proxy et eventuellement faire une redirection du port 80 vers le port du proxy (filtre PREROUTING sur la carte LAN)

                            ainsi tes clients qui interrogeront internet en port 80 (web) demanderont en fait à la passerelle (192.168.2.1) sur le port 80
                            qui enverra en fait la demande au logiciel de proxy sur le port de celui-ci (grace à la regle PREROUTING)

                            le proxy enverra de lui meme sa demande à la vraie passerelle, recuperera la reponse...
  • # Déjà fait, mais ya longtemps

    Posté par . Évalué à 2.

    J'ai déjà eu une config du genre que tu cherches (proxy transparent + passerelle sur la même machine), avec dnsmasq, shorewall et squid, ça marche nickel. T'as quoi comme problème exactement ?

    Dans l'ordre, je procèderai comme ça :
    - mettre en place la passerelle correctement avec shorewall (qui fait pratiquement tout tout seul) et dnsmasq (qui lui aussi fait quasi tout tout seul) et voir si ça marche (connexion natée normale vers le net)
    - mettre en place squid en proxy "normal" et tester le proxy explicitement
    - mettre en place la redirection automatique de port pour le proxy transparent (une règle dans shorewall)

    Désolé de ne plus avoir d'instructions précises, mais j'avais trouvé assez facilement avec "shorewell transparent proxy" il me semble.
    • [^] # Re: Déjà fait, mais ya longtemps

      Posté par . Évalué à 2.

      Ha tiens, j'a retrouvé la conf.
      Pour shorewall :
      le fichier interfaces :
      loc $LOC_IF detect dhcp,maclist,arp_filter
      net $NET_IF detect

      (j'utilisais des nom d'if génériques)
      pour le masquerading (enfin, le SNAT) le fichier masq :
      eth0 172.16.0.0/16 172.30.1.1
      faut adapter l'adressage, hein. (172.16.0.0/16 c'est le LAN et 172.16.1.1 l'IP coté LAN de la passerelle)
      le fichier policy, si ça t'intéresse :
      loc net REJECT $LOG
      fw all ACCEPT
      net all DROP $LOG
      all all REJECT $LOG

      et pour le proxy transparent, dans le fichier rules :
      REDIRECT:$LOG loc 3128 tcp www - !172.16.1.1
      si 3128 c'est le port de squid, et la règle qui bien sûr ne s'applique pas pour la passerelle elle-même ...

      J'avais même un script de QoS si tu veux ... parce que pour les "problèmes" de perf, il faudrait en savoir un peu plus sur l'usage de ton proxy (nombre de bécanes, quel connexion au net, quel type d'utilisation (DL massif ...)), etc.
      • [^] # Re: Déjà fait, mais ya longtemps

        Posté par (page perso) . Évalué à 1.

        Si tu peux poster le script de qos ici ça m'interesse . ( et decrire
        le contexte dans lequel il figurait )

        Système - Réseau - Sécurité Open Source

        • [^] # Re: Déjà fait, mais ya longtemps

          Posté par . Évalué à 1.

          voici où j'en suis, j'ai suivi le tuto de shorewall pour proxy transparent,

          #

          Add this entry to your /etc/shorewall/providers file.

          #NAME NUMBER MARK DUPLICATE INTERFACE GATEWAY OPTIONS
          Squid 1 202 - eth1 [mon_ip_lan_proxy] loose

          #

          In /etc/shorewall/start add:

          iptables -t mangle -A PREROUTING -i eth1 -s ! [mon_ip_lan_proxy] -p tcp --dport 80 -j MARK --set-mark 202

          #

          In /etc/shorewall/interfaces :

          #ZONE INTERFACE BROADCAST OPTIONS
          loc eth1 detect routeback

          #

          Ensuite j'ai exécuté cette commande

          iptables -t nat -A PREROUTING -i eth0 -d ! [mon_ip_lan_proxy] -p tcp --dport 80 -j REDIRECT --to-ports 3128

          voici le contenu de mes différents fichiers:

          -le fichier policy
          #SOURCE DEST POLICY LOG LIMIT:BURST
          # LEVEL
          loc fw ACCEPT
          fw net ACCEPT
          loc net ACCEPT
          net fw ACCEPT
          fw loc ACCEPT
          net loc ACCEPT
          loc all ACCEPT info
          net all DROP info

          - le fichier zone
          #ZONE TYPE OPTIONS IN OUT
          # OPTIONS OPTIONS
          fw firewall
          net ipv4
          loc ipv4

          -le fichier interfaces
          #ZONE INTERFACE BROADCAST OPTIONS
          loc eth1 detect routeback
          net eth0 detect tcpflags

          - le fichier rules
          #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK
          # PORT PORT(S) DEST LIMIT GROUP
          #SECTION ESTABLISHED
          #SECTION RELATED
          SECTION NEW
          REDIRECT loc 3128 tcp www
          ACCEPT fw net tcp www

          j'ai configuré un client avec [mon_ip_lan_proxy] comme passerelle mais le ping vers l'extérieur échoue toujours.

          j'ai essayé de voir dans les fichiers de logs de shorewall mais je ne vois que shorewall-init.log
          Avez vous une idée d'où peut provenir le probleme??
          • [^] # Re: Déjà fait, mais ya longtemps

            Posté par (page perso) . Évalué à 1.

            peux-tu poster le resultat des commandes suivantes:

            iptables -L -nv -t mangle
            iptables -L -nv -t nat
            iptables -L -nv
            ifconfig
            route -n
            cat /proc/sys/net/ipv4/ip_forward
            cat /proc/sys/net/ipv4/conf/*/forwarding

            Système - Réseau - Sécurité Open Source

          • [^] # Re: Déjà fait, mais ya longtemps

            Posté par . Évalué à 3.

            Comme je disais au début, arrête d'essayer de tout faire en même temps, ça mélange tous les problèmes ensemble. Essaye déjà de faire marcher ta machine comme passerelle, sans proxy, va voir les tuto qui vont bien, c'est un truc "basique", surtout que shorewall aide bien. C'est dans la doc de base de shorewall je crois.
        • [^] # Re: Déjà fait, mais ya longtemps

          Posté par . Évalué à 2.

          Je l'ai pris d'ici : http://old.www.digriz.org.uk/jdg-qos-script/
          C'est vieux, ça utilise pleins de patchs non-standards au kernel (j'en avait adapté pour le 2.6.18 à l'époque je crois) mais ça marche du tonerre. Tu règles bien tes débits upload/download, tu tweak un ou deux trucs et c'est parti. Alors oui, ça n'est pas de la tarte, mais à l'époque, c'était tout ce qu'il y avait. C'était pour partager une 4Mb ADSL entre une centaine de personne (avec des gros download aussi), et ça marchait bien. Par contre, je filtrais le P2P sinon le modem du provider s'effondrait (pas la passerelle debian, qui n'a jamais dépassé les 10% de CPU je crois, mais vraiment le modem : trop de connexions à NATer).

          Sinon, comme je traine dedans en ce moment, tu pourrais peut-être voir de coté d'OpenWrt, qui fournit des scripts de QoS, et en général ils ont une bonne intégration, donc t'auras pas trop à bidouiller. Mais après, c'est une distro minimale, hein, même si tu dois quand même avoir squid.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.