Como posso limitar a largura de banda de Download / Upload?

77

Como posso limitar a largura de banda de Download / Upload para:

  • SO inteiro.
  • Uma interface de rede.
  • Aplicação única.
Yevhene
fonte
Eu registrei um bug para o wondershaperproblema no Ubuntu 17.10, que pode ser semelhante ao que está acontecendo com o @Zeromatiker no Ubuntu 17.04: bugs.launchpad.net/ubuntu/+source/wondershaper/+bug/1745421
aguadopd

Respostas:

42

Limitar a interface única é fácil, mas os limites globais de taxa precisam de regras mais complexas, assim como as regras baseadas em aplicativos. Não estou dizendo que isso não pode ser feito, mas requer um pouco de escavação nas partes internas da rede.

Aqui está um rápido Como configurar um limite por interface

Se você realmente deseja configurar regras baseadas em aplicativos, consulte uma estrutura de firewall, como o shorewall , que possui recursos auxiliares para configurar a modelagem. Mesmo com essas ferramentas, é necessário um pouco de premeditação e testes para colocá-lo no lugar. Fazer algo parecido com esse ad-hoc ainda não é tão fácil.

Ressu
fonte
wondershaper não está funcionando Eu não sei por que (ainda wondershaper eth0 1000 1000 não tem largura de banda de internet que eu preciso para limitar todos da banda eth0 não apenas aplicações específicas como no pode fazer isso..?
Arash
67

Embora essa seja uma pergunta antiga, me deparei com isso ao procurar uma resposta para a mesma pergunta. Os limites do sistema operacional e da interface já foram abordados em uma resposta anterior, portanto, aqui está uma maneira de configurar limites específicos do aplicativo. Use um aplicativo chamado trickle. O mesmo acontece sudo apt-get install trickle. Você pode limitar o upload / download de um aplicativo específico executando

trickle -u (upload limit in KB/s) -d (download limit in KB/s) application

Isso iniciará o aplicativo com os limites especificados. Você também pode especificar o tempo de "suavização", para que as amostras fluam durante o período de tempo desejado, caso o seu aplicativo tenha explosões de consumo de largura de banda e você queira que as explosões sejam permitidas desde que a média esteja dentro das suas especificações.

SMeznaric
fonte
14
Muito obrigado! Esta solução é perfeita para controlar a largura de banda por aplicativo. Nunca hesite em postar uma resposta, mesmo que a pergunta tenha anos. Para referência futura: Você pode receber uma mensagem de erro como trickle: Could not reach trickled, working independently: No such file or directory. Você pode remover esse aviso executando o trickle no modo autônomo com trickle -s.
Glutanimate
Como removo o limite limitado por gotejamento?
Mouse anônimo
2
Trickle executará o aplicativo para você com os limites que estão sendo impostos. Portanto, tudo o que você precisa fazer é reiniciar o aplicativo sem usar o comando trickle.
SMeznaric
1
muito obrigado por esta resposta era a coisa exata que eu estava procurando
Ali
1
Exatamente o que eu precisava, ao tentar simular uma conexão de rede lenta.
Ethan Kaminski
5

Se você deseja limitar a largura de banda para um endereço IP específico, pode usar o seguinte:

tc qdisc add dev eth1 root handle 1: htb default 12
tc class add dev eth1 parent 1: classid 1:10 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:11 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:12 htb rate 5000kbps

tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.105 flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.106 flowid 1:11
Billtian
fonte
4
isso foi bastante complicado. Alguns # comentários iriam muito longe. Você poderia, por exemplo, adicionar links ou explicações para qdiscs, classids, htb, etc.
oligofren
Portanto, por padrão, o acima limita tudo a 5000 kbps, a menos que seja filtrado para outra fila? E se não quisermos limitar tudo ?
Ken afiada