IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau Discussion :

[PROXY+bandwidth shaping]: iptables et connbytes


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Par défaut [PROXY+bandwidth shaping]: iptables et connbytes
    Bonjour a tous,

    Je dois installer un serveur proxy sur le réseau. Tous les utilisateurs devront utilisé le proxy pour pouvoir surfer sur Internet. La raison de l'installation de ce serveur est de pouvoir empêché qu'un utilisateur ne monopolisé la bande passante vers Internet pour des téléchargements inutiles.

    EXISTANT:
    - Serveur proxy Squid tournant sur un serveur Linux Centos.
    - iptables 5.3.2.el5 fraichement installer avec le fichier .so pour connbytes qui va bien dans le dossier /lib64/iptables.

    OBJECTIF:
    Réduire le débits de téléchargements des utilisateurs qui télécharge un fichier de plus de 100MB. Le reste n'a pas de limite.

    PRINCIPE:
    Après de longue recherche j'ai trouvé que la meilleur façon de le faire était la suivante:
    1- Marqué tous les paquets en 0x10.
    2- Marqué tous les paquets issue d'un téléchargement de plus de 100MB en 0x20.
    3- En utilisant la commande tc, faire deux classes, une avec un débits trés grand, l'autre avec un débits plus petit.
    4- Faire en sorte que tous les paquets marqué 0x10 soit appliqué à la classe 10 (pas de limite) et tous les paquets marqué 0x20 à l'autre classe 20.

    SOURCES:
    C'est quoi connbytes ? ici
    Commandes tc ici

    CONFIG:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $IPTABLES -t mangle -A PREROUTING -i eth0 -j MARK --set-mark 10
    # 50Mb = 52428800
    #$IPTABLES -t mangle -A OUTPUT -p tcp -o eth0 --sport 3128 -j MARK --set-mark 20
    $IPTABLES -t mangle -A OUTPUT -p tcp -o eth0 --sport 3128 -m connbytes --connbytes 5242880: --connbytes-dir both  --connbytes-mode bytes -j MARK --set-mark 20
     
    tc qdisc add dev eth0 root handle 1: htb default 10
    tc class add dev eth0 parent 1:1  classid 1:10 htb \
    	rate 99999kbit ceil 9999999999kbit prio 1
    tc class add dev eth0 parent 1:1  classid 1:20 htb \
    	rate 80kbit ceil 80kbit prio 2
    #tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
    #tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 20
    tc filter add dev eth0 parent 1:0 protocol ip handle 10 fw flowid 1:10
    tc filter add dev eth0 parent 1:0 protocol ip handle 20 fw flowid 1:20
    RESULTAT:
    Aucune limitation ne se fait quand un utilisateur télécharge. Quand j'essaye la règle iptables sans les options connbytes, tous le trafic est réduit a +/- 80kbits. Ce qui n'est pas ce que je veux.
    Donc a priori, les commande tc fonctionne correctement mais les options connbytes ne semble pas fonctionné

    Donc,
    Est ce que la logique est correct ?
    Est ce que la règles iptables est correctement utilisé ?
    Est ce que c'est bien en OUPUT ?

    En espérant avoir des nouvelles, bon week-end

  2. #2
    Candidat au Club
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Par défaut
    Finalement grâce a ce lien j'ai trouvé la solution: lien

    Le problème était que j'utilisait pas la bonne file apparement

    Voici mon script final:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    #!/bin/sh
     
    start(){
        stop
        echo -e "    [TC]      : DEFAULT CLASS ROOT";
        tc qdisc add dev eth0 root handle 1: hfsc default 10
     
        tc class add dev eth0 parent 1: classid 1:1 hfsc sc rate \
            999999999kbit ul rate 999999999kbit
     
        echo -e "    [TC]      : CLASS 10 SET SPEED 999999999kbit/s";
        tc class add dev eth0 parent 1:1  classid 1:10 hfsc \
        sc rate 999999999kbit ul rate 999999999kbit
     
        echo -e "    [IPTABLES]: DOWNLOAD > 100MB ==> MARK 0x14";
        echo -e "    [TC]      : CLASS 20 SET SPEED 9000kbit/s";
        tc class add dev eth0 parent 1:1  classid 1:20 hfsc \
            sc rate 9000kbit ul rate 9000kbit
     
        echo -e "    [TC]      : ASSOCIATE PKT MARK 0xa TO CLASS 10";
        tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
        echo -e "    [TC]      : ASSOCIATE PKT MARK 0x14 TO CLASS 20"; 
        tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
    }
    stop(){
        tc qdisc del dev eth0 root    2> /dev/null > /dev/null;
        tc qdisc del dev eth0 ingress 2> /dev/null > /dev/null;
    } 
     
    case "$1" in
        start)
            echo -e "\033[1;31mStarting bandwidth shaping ...\033[00m";
            start
            echo -e "\033[1;31m[DONE]\033[00m";
            ;;
        stop)
            echo -e "\033[1;31mStopping bandwidth shaping ...\033[00m";
            echo -e "    [TC]      : DELETE THE ROOT QDISC";
            stop
            echo -e "\033[1;31m[DONE]\033[00m";
            ;;
        restart)
            $0 stop
            $0 start
            ;;
        *)
            echo "Usage: $0 {start|stop|restart}"
            ;;
    esac
     
    exit 0;
    J'ai mis la règle iptables dans /etc/sysconfig/iptables, c'est une meilleur pratique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/12/2011, 10h06
  2. iptables proxy/routeur/firewall sous debian
    Par XatOr dans le forum Sécurité
    Réponses: 1
    Dernier message: 11/08/2010, 13h48
  3. iptables et proxy socks
    Par Invité dans le forum Réseau
    Réponses: 0
    Dernier message: 26/08/2009, 16h52
  4. proxy transparent et iptables
    Par neuneu1 dans le forum Ubuntu
    Réponses: 0
    Dernier message: 20/08/2009, 15h52
  5. IPCOP - Iptables - Forcer Proxy
    Par Invité dans le forum Réseau
    Réponses: 15
    Dernier message: 19/02/2008, 18h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo