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.

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.


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.


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ê.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.