QoS par IPTABLES et TC

Forum sur la sécurité des réseaux, la configuration des firewalls, la mise en place de protections contre les attaques, de DMZ, de systèmes anti-intrusion ...

Modérateur: modos Ixus

QoS par IPTABLES et TC

Messagepar NosnaM » 20 Avr 2004 15:38

Bonjour Bonjour ( Vous m'avez reconnu de loin , je suis un noob \o/ )

C'est un grand plaisir pour moi que de rencontrer des connaisseurs de la QoS sour Linux...

Je me permet au passage de vous présenter mon problème (Ben forcément.... chui noob , fallait s'y attendre )

Je veux limiter le transfert des données FTP avec la commande tc. Vu que lors d'un transfert FTP les ports source et destination sont aléatoires, Je pensais marquer les paquets avec iptables et limiter les paquets en fonction de la marque.

Voici les commandes que j'ai tapées :

tc qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000 mpu 64
tc class add dev eth0 parent 10:0 classid 10:2 cbq bandwidth 10Mbit rate 41Kbit allot 1514 prio 8 maxburst 2 avpkt 1500 bounded

Je veux limiter le transfert FTP et j'ai donc posé la marque 3 sur les données ftp et ai limité les trames marquées 3 avec la classe 10:2

iptables -t mangle -A OUTPUT -t mangle -p tcp --sport ftp-data -j MARK --set-mark 3
iptables -t mangle -A OUTPUT -t mangle -p tcp --dport ftp-data -j MARK --set-mark 3
tc filter add dev eth0 parent 10:0 protocol ip handle 3 fw flowid 10:2

Bon en fait je suis pas sur du tout du principe . Je pense que ça marche à peu près comme ça .
Le problème est assez évident : Le transfert FTP est pas du tout limité . Pourquoi ?
Mauvais paquets marqués ?
Paquets non marqués ?
Filtre mal définit ?
Pourtant la limitation par tc fonctionne très bien lorsqu'elle n'est pas basée sur les marqueurs... (Mais est inapplicable aux transferts FTP)
Tant de questions sans réponses .....
Alors à vos bons coeurs messieurs dames , et merci d'avance.
Avatar de l’utilisateur
NosnaM
Quartier Maître
Quartier Maître
 
Messages: 20
Inscrit le: 20 Avr 2004 15:36

Messagepar jubec » 20 Avr 2004 17:02

:roll:
Avatar de l’utilisateur
jubec
Enseigne de vaisseau
Enseigne de vaisseau
 
Messages: 172
Inscrit le: 08 Avr 2004 16:57
Localisation: Chambéry

Messagepar arapaho » 20 Avr 2004 17:41

Essaie de faire ton marquage en prerouting:

Code: Tout sélectionner
iptables -t mangle -A PREROUTING -i eth0 -p tcp -s 0.0.0.0/0 -d 192.168.2.110/32 --dport ftp -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -i eth0 -p tcp -s 0.0.0.0/0 -d 192.168.2.110/32 --dport ftp-data -j MARK --set-mark 3
No One Will Ever Need More Than 640K Ram - Bill Gates, 1981
Avatar de l’utilisateur
arapaho
Amiral
Amiral
 
Messages: 1119
Inscrit le: 18 Avr 2002 00:00
Localisation: Genève

Messagepar NosnaM » 21 Avr 2004 09:23

Merci de ton aide arapaho,

Mais ça marche toujours pas .... En fait (dsl j'avais oublié de préciser) je suis le serveur lors du transfert FTP . Faut donc que j'utilise OUTPUT non ?

Sinon saurais tu comment on peut voir si les paquets sont bien marqués (avec ethereal par exemple , si le marqueur est à l'interieur de la trame ) ?
Avatar de l’utilisateur
NosnaM
Quartier Maître
Quartier Maître
 
Messages: 20
Inscrit le: 20 Avr 2004 15:36

Messagepar jubec » 21 Avr 2004 09:36

:(
Avatar de l’utilisateur
jubec
Enseigne de vaisseau
Enseigne de vaisseau
 
Messages: 172
Inscrit le: 08 Avr 2004 16:57
Localisation: Chambéry

Messagepar arapaho » 21 Avr 2004 09:56

Hmm non pas vraiment. Ton tc ne fonctionne que en entrée. Donc travail sur la chaine INPUT :)
No One Will Ever Need More Than 640K Ram - Bill Gates, 1981
Avatar de l’utilisateur
arapaho
Amiral
Amiral
 
Messages: 1119
Inscrit le: 18 Avr 2002 00:00
Localisation: Genève

Messagepar NosnaM » 21 Avr 2004 09:57

En fait j'ai mis les marqueurs pour INPUT, OUPUT , FORWARD , POST et PREROUTING ....
Et ça ne marche toujours pas ... L'erreur est ailleurs ... ou pas ...
Avatar de l’utilisateur
NosnaM
Quartier Maître
Quartier Maître
 
Messages: 20
Inscrit le: 20 Avr 2004 15:36

Messagepar NosnaM » 21 Avr 2004 12:27

J'ai trouvé \o/

Lors d'un transfert de fichier par FTP , le port utilisé pour la procédure est le port FTP (21) , lors du transfert à proprement parler , les ports utilisés sont des ports aléatoires (pour le transfert de données et l'Aquittement) . Le contrôle de transfert (différent de l'aquittement des données ) utilise le port ftp-data (20) . Ainsi il est inutile de limiter les ports ftp et ftp-data , le transfert s'effectuant uniquement entre les ports aléatoires . Le problème devient donc différent :
Comment limiter le trafic sur un port aléatoire ???

Peut être avez vous une idée , ou peut être sauriez vous ....

Comment récupérer le numéro de port généré aléatoirement lors d'un transfert FTP
Comment identifier les trames de transfert ftp ( une certaine séquence au début du champs de données je suppose )

Merci d'avance 8)
Avatar de l’utilisateur
NosnaM
Quartier Maître
Quartier Maître
 
Messages: 20
Inscrit le: 20 Avr 2004 15:36

Messagepar popoch » 21 Avr 2004 13:11

tu n as pas essaye wonder shaper ?????

http://lea-linux.org/leapro/qos.html


la tu as des exemples interessant en plus tu as un script en francais et commente en plus ....
:D :D :D


Cordialement popoch
Avatar de l’utilisateur
popoch
Vice-Amiral
Vice-Amiral
 
Messages: 582
Inscrit le: 05 Mars 2004 01:00
Localisation: Brest / Lannion / Rennes

Messagepar NosnaM » 21 Avr 2004 14:15

Oui j'ai déjà essayé WonderShaper , mais là je suis dans une entreprise ou je dois adapter la QoS pour un serveur , et Wshaper n'est pas assez modulable pour arriver à mes fins :(
Merci quand même
Avatar de l’utilisateur
NosnaM
Quartier Maître
Quartier Maître
 
Messages: 20
Inscrit le: 20 Avr 2004 15:36

Messagepar arapaho » 21 Avr 2004 14:43

As-tu le ip_conntrack_ftp en place ?

Tu peux jouer sur le fait que le ftp-data est reconnaissable en RELATED+REPLY peut être. Un paquet RELATED+REPLY n'est pas un paquet qui fait partie d'une connexion existante mais qui en découle d'une [c'est clair n'est-ce pas ? ;P ]

Genre:
Code: Tout sélectionner
iptables -A FORWARD -j ACCEPT -m state --state RELATED+REPLY -j MARK --set-mark 3
No One Will Ever Need More Than 640K Ram - Bill Gates, 1981
Avatar de l’utilisateur
arapaho
Amiral
Amiral
 
Messages: 1119
Inscrit le: 18 Avr 2002 00:00
Localisation: Genève

Messagepar NosnaM » 21 Avr 2004 16:56

Heu en fait pour ne rien te cacher je dois avouer qu'effectivement ..... Il est éventuellement possible que j'aie légèrement un peu de mal à te suivre . :(

Je me suis renseigné sur les états , et d'après ce que j'ai compris toutes les trames qui seront en liaisons avec une connexion déjà existante seront marquées ( hum en fait je suis vraiment pas sur que ce soit ça ) . Cela consisterait à marquer toutes les trames TCP (donc ça peut pas être ça) .

Mais c'est pas ma faute le man donne que très peu d'info à ce sujet :-k

J'ai quand même essayé :

iptables -A FORWARD -m state -t mangle -i eth0 --state RELATED -j MARK --set-mark 3

Je ne donne que pour forward mais j'ai rentré les tables pour toutes les tables possibles :P

Et .... ça n'a pas marché ... Je ne vois pas en quoi le state permet de cibler les trames du transfert ftp . A priori je suis bien obligé de lui spécifier un port ou une adresse , sinon la table va s'appliquer à de nombreuses trames autres que le ftp non ?
Avatar de l’utilisateur
NosnaM
Quartier Maître
Quartier Maître
 
Messages: 20
Inscrit le: 20 Avr 2004 15:36

Messagepar arapaho » 21 Avr 2004 17:00

En fait dans mon post précédent, je n'ai pas dit d'appliquer une regle sur un etat RELATED, mais sur une etat RELATED+REPLY .......

Donc bon je ne vais pas non plus te prêter mes yeux :P [je plaisante evidemment]
No One Will Ever Need More Than 640K Ram - Bill Gates, 1981
Avatar de l’utilisateur
arapaho
Amiral
Amiral
 
Messages: 1119
Inscrit le: 18 Avr 2002 00:00
Localisation: Genève

Messagepar NosnaM » 21 Avr 2004 17:20

Heuuuuuu . Pardon mais là je vais vraiment faire le noob :

J'ai cru comprendre que le complément REPLY avait été développé début 2001 , mais il est pas sur ma machine .... Saurais tu ou je peux le trouver ?

:)
Avatar de l’utilisateur
NosnaM
Quartier Maître
Quartier Maître
 
Messages: 20
Inscrit le: 20 Avr 2004 15:36


Retour vers Sécurité et réseaux

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron