Limiter le trafic SSH?

11

Je voudrais pouvoir limiter la bande passante SSH sur mon serveur. C'est-à-dire que chaque processus sshd devrait être limité à 200Kb / s ou quelque chose comme ça.

scp a cette fonctionnalité, mais ssh, étant plus conçu pour une utilisation interactive réactive, ne semble pas avoir cette option. Cependant, j'aimerais combiner la fonctionnalité -D (proxy SOCKS) avec une certaine capacité à limiter le trafic.

Existe-t-il des options pour cela?

user10640
la source
Cherchez-vous à le faire sur le serveur SSH, ou est-ce correct de le faire sur un pare-feu entre les deux machines?
Mark Henderson
Je préfère vraiment le faire sur le serveur, car je n'ai pas accès au pare-feu.
user10640
Si vous êtes content de le faire sur le client, essayez l'utilitaire de ligne de commande «drizzle».
Alex J
Bien que la commande drizzle semble utile, je ne peux finalement pas faire confiance aux utilisateurs pour l'exécuter. On dirait que je suis coincé à regarder quelque chose d'un peu plus compliqué que je l'espérais: P. Merci à tous!
user10640

Réponses:

4

Je ne sais pas si la confiance des utilisateurs fait partie de l'équation, mais trickleest très pratique pour limiter la vitesse d'une commande donnée. Lorsque je télécharge des paquets depuis chez moi, les colocataires de WoW-addict remarquent quand j'oublie quelque chose comme ça, car cela domine à peu près le tuyau.

jldugger
la source
1
Trickle peut s'exécuter en tant que démon et gérer la bande passante totale pour plusieurs commandes sur la même machine. Pratique lorsque vous souhaitez déclencher simultanément un ensemble d'opérations de transfert autrement indépendantes, mais que vous souhaitez qu'elles n'utilisent pas plus qu'un débit de données défini au total.
David Spillett
1
Malheureusement, je ne pense pas que cela m'aidera avec sshd - cela crée de nouveaux sshd à mesure que de nouvelles connexions arrivent. Je pourrais être coincé avec une solution au niveau du pare-feu, qui sera un peu plus difficile à mettre en œuvre.
user10640
wtf pourquoi est-ce la meilleure réponse? tricklene fonctionne avec aucun processus qui bifurque. Cela inclut sshd!
Navin
1

Il vaudrait la peine d'implémenter la mise en forme du trafic HTB à l'aide de tc. Ma solution à un problème simulaire a été d'utiliser le script htb.init trouvé sur http://sourceforge.net/projects/htbinit/

Je l'ai configuré en fonction de la limitation du trafic depuis le port 22, mais vous pouvez également utiliser iptables pour marquer / manipuler les paquets qui sont ensuite traités en fonction de la marque.

Steve
la source
+1 pour la seule tcréponse connexe jusqu'à présent.
Spooler
1
scp -l 8192 file.txt [email protected]:/tmp
//8192  = 8192 KB per second

Je sais que ce fil est assez ancien, mais j'espère que cela aidera quelqu'un.

Hiroki
la source
1
Il est ennuyeux que deux personnes aient voté contre votre réponse sans au moins commenter. Je suppose que c'est parce que scpc'est un cas d'utilisation assez spécifique de ssh. J'ai testé scp -let cela fonctionne, bien que ce soit des kilobits (ko) par seconde, et non des kilo-octets (ko).
mwfearnley
0

Il y a quelques options.

Une solution courante consiste à implémenter la QoS sur le port 22 sur un pare-feu / routeur entre le serveur et les clients.

S'ils sont sur le même réseau local (c'est-à-dire sans routeurs ni pare-feu entre eux), je pense que vous pouvez utiliser IPTables pour limiter la bande passante au port 22 ... Jetez un œil ici pour plus d'informations sur la façon de procéder.

Mark Henderson
la source
1
Vous devez être prudent en utilisant le limiteur de débit d'iptables avec un service comme ssh, car «il est important de noter que la limitation de débit est conceptuellement différente de la limitation / limitation de la bande passante; une connexion limitée par la bande passante mettra les paquets en file d'attente et limitera la vitesse à laquelle ils sont transmises / reçues. La limitation de débit ne fera pas cela; lorsque vous utilisez la limitation de débit sur, par exemple, les tentatives de connexion TCP entrantes vers votre identd, et les connexions dépassant la limite spécifiée seront refusées; il n'y a pas de file d'attente de paquets . "
msanford
Hummm goood point
Mark Henderson
0

Vous pouvez regarder quelque chose comme iprelay :

User-space bandwidth shaping TCP proxy daemon
iprelay can shape the TCP traffic forwarded through it to a specified
bandwidth and allow this bandwidth to be changed on-the-fly. Multiple
data streams to different sockets may be shaped to the same total
bandwidth, much like a traffic shaping router would. However, this
application runs in user space, and works by acting as a TCP proxy.
rkthkr
la source