Limitar tráfego SSH?

11

Gostaria de poder limitar a largura de banda SSH no meu servidor. Ou seja, cada processo sshd deve ser limitado a 200Kb / s ou algo assim.

O scp tem essa funcionalidade, mas o ssh, sendo mais projetado para uso interativo responsivo, não parece ter essa opção. No entanto, gostaria de combinar a funcionalidade -D (proxy SOCKS) com alguma capacidade de alguma forma limitar o tráfego.

Existem opções para isso?

user10640
fonte
Você está procurando fazer isso no servidor SSH ou pode fazê-lo em um firewall entre as duas máquinas?
Mark Henderson
Eu realmente prefiro fazer isso no servidor, pois não tenho acesso ao firewall.
user10640
Se você estiver feliz em fazer isso no cliente, tente o utilitário de linha de comando 'drizzle'.
Alex J
Embora o comando drizzle pareça útil, em última análise, não posso confiar nos usuários para executá-lo. Parece que estou preso olhando para algo um pouco mais complicado do que eu esperava: P. Obrigado a todos!
User10640

Respostas:

4

Não tenho certeza se confiar nos usuários faz parte da equação, mas trickleé muito útil para limitar a velocidade de um determinado comando. Quando eu carrego pacotes de casa, os companheiros de quarto viciados em WoW percebem quando eu esqueço algo assim, já que ele domina bastante o cano.

jldugger
fonte
1
O Trickle pode ser executado como um daemon e gerenciar a largura de banda total para vários comandos na mesma máquina. Prático quando você deseja iniciar várias operações de transferência independentes, ao mesmo tempo, mas deseja que elas usem não mais do que uma taxa de dados definida no total.
David Spillett
1
Infelizmente, acho que isso não vai me ajudar com o sshd - ele cria novos sshds à medida que novas conexões entram. Eu posso estar preso a alguma solução no nível do firewall, que será um pouco mais difícil de implementar.
user10640
Por que essa é a resposta principal? tricklenão funciona com nenhum processo que bifurca. Isso inclui sshd!
Navin
1

Vale a pena examinar a implementação da modelagem de tráfego HTB usando tc. Minha solução para um problema semelhante foi usar o script htb.init encontrado em http://sourceforge.net/projects/htbinit/

Eu o configurei com base na limitação do tráfego da porta 22, mas você também pode usar o iptables para marcar / manipular os pacotes que são processados ​​com base na marca.

Steve
fonte
+1 para a única tcresposta relacionada até o momento.
Spooler
1
scp -l 8192 file.txt [email protected]:/tmp
//8192  = 8192 KB per second

Eu sei que este tópico é bastante antigo, mas espero que isso ajude alguém.

Hiroki
fonte
1
É irritante que duas pessoas tenham votado sua resposta sem pelo menos comentar. Presumo que seja porque scpé um caso de uso bastante específico do ssh. Eu testei scp -le funciona, embora note que é kilobits (kb) por segundo e não kilobytes (kB).
Mwfearnley #
0

Existem algumas opções.

Um comum é implementar a QoS na porta 22 em um firewall / roteador entre o servidor e os clientes.

Se eles estiverem na mesma rede local (ou seja, não há roteadores ou firewalls entre eles), acredito que você possa usar o IPTables para limitar a largura de banda à porta 22 ... Consulte aqui mais informações sobre como fazer isso.

Mark Henderson
fonte
1
Você precisa ter cuidado ao usar o limitador de taxa do iptables com um serviço como ssh, porque "É importante observar que a limitação de taxa é conceitualmente diferente da limitação / limitação de largura de banda; uma conexão com limitação de largura de banda enfileira pacotes e limita a taxa na qual eles são transmitidos / recebidos. A limitação de taxa não fará isso; quando você usa a limitação de taxa, por exemplo, tentativas de conexão TCP de entrada com o seu identd e as conexões que excedem o limite especificado serão negadas; não há fila de pacotes ".
msanford
Hmmm bom ponto
Mark Henderson
0

Você pode olhar algo como 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
fonte