Desacelere as conexões individuais que passam por um roteador Linux?

8

Temos um servidor Linux atuando como roteador / firewall para o nosso escritório. Ocasionalmente, alguém carrega um arquivo grande que ocupa toda a nossa largura de banda. Não quero implementar regras complexas ou modelagem de tráfego, mas estou me perguntando se existe uma maneira de diminuir a velocidade de uma única conexão no local? Encontrei o tcpnice , mas não atrasa as transferências nos meus testes.

davr
fonte

Respostas:

6

Se a modelagem de tráfego não moldar o tráfego corretamente para envios shell e ativos (acho que pode, mas não tenho certeza), então você pode:

a) execute ssh em duas portas - você pode priorizar uma para transferência de arquivos e outra para trabalho interativo.

b) limitar as taxas ssh totais - o único problema é se você preencher a capacidade de upload do link e o ssh funcionará de maneira bem interativa se você limitar a taxa a algo como 50kbps (isso forçará os usuários a usar algum outro protocolo para transferências de arquivos maiores) )

c) priorize o tráfego no endereço de origem, se puder

Além disso, a modelagem de tráfego deve tornar o tráfego mais equilibrado, independentemente para que uma conexão única não monopolize todo o link.

EDIT: Aqui está um exemplo que usa um script bash. Ele menciona que o ssh realmente define o TOS de interativo para interativo, então eu presumo que o Wondershaper tira proveito disso.

Se você quiser outras opções além do Wondershaper, verifique o shorewall ou o pyshape .

Shorewall é um equilíbrio bastante maduro e agradável de flexibilidade, potência e simplicidade.

Desrazão
fonte
4

O Wondershaper pode fazer maravilhas, e é muito fácil de configurar. Fora isso, você pode encontrar alguns programas da terra do usuário para fazer isso. No Linux existe o Trickle , pode haver equivalentes para o Windows.

Mas, na verdade, você deseja modelar o tráfego - as pessoas esquecerão de executar o programa etc. Apenas limitar os envios a um pouco menos do que sua capacidade total provavelmente fará muito bem.

alex
fonte
11
O principal problema que tenho com a modelagem de tráfego é que o AFAIK não espera para distinguir um upload de arquivo via SFTP / SCP de uma sessão SSH interativa. Quero priorizar minhas sessões SSH interativas, mas isso também priorizaria meus envios, derrotando o objetivo: /
davr
2
Eu acredito que o ssh diferencia o uso interativo (ssh) do não interativo (scp / sftp) usando um cabeçalho TOS TCP / IP, e o wonderershaper usa isso.
alex
Infelizmente, nem o Putty (cliente SSH interativo) nem o Filezilla (cliente SFTP de transferência de arquivos) definem sinalizadores TOS TCP / IP. Portanto, meu firewall não pode diferenciar entre eles.
davr
O Wondershaper também tem 8 anos ... parece uma eternidade no tempo da internet.
davr
2

Dê uma olhada no connrate na página de manual do iptables (8). Você pode igualar a taxa de conexão e diminuir a velocidade de uma conexão que está sendo carregada muito rapidamente, colocando-a em uma classe tc apropriada ou descartando ou tarpit ou o que funcionar melhor para você.

Aleksandar Ivanisevic
fonte
1

Você já pensou em configurar um proxy Squid reverso e configurar pools de atraso ? Você também pode fazer isso com a diretiva de limite do iptables.

O único problema que tenho com seu pedido é que parece que você deseja começar a limitar a taxa de transferência de uma conexão já estabelecida, o que será bastante difícil de fazer, pois tudo o que consigo pensar vai querer começar a operar em um nova conexão e deixará as conexões existentes em andamento.

Eu tenho que concordar com alex, pois você provavelmente precisará de algum tipo de modelador de tráfego, o que você quer ver são pacotes por segundo, pois um shell interativo terá um valor significativamente menor do que uma transferência de arquivo modesta.

d34dh0r53
fonte