Como limitar a largura de banda da rede?

74

Estamos hospedando um aplicativo no servidor remoto. Precisamos testá-lo com uma largura de banda de rede limitada (para usuários com acesso ruim à Internet).

Posso limitar minha largura de banda da Internet? Por exemplo: 128 KB por segundo.

ficção
fonte

Respostas:

68

Você pode limitar a largura de banda da rede na interface usando o comando chamado tcMan page, disponível em http://linux.die.net/man/8/tc

Para um script simples, tente o maravilha .

Um exemplo do uso de tc: tc qdisc add dev eth0 root tbf rate 1024kbit latency 50ms burst 1540

Nikhil Mulley
fonte
6
Link para o prompt atmail.com para autorização de nome de usuário / senha para mim ... :(
Ash
1
Você pode acessar o conteúdo do atmail aqui: web.archive.org/web/20130719031908/http://atmail.com/kb/2009/…
Tom Saleeba
melhor tarde do que nunca, se o seu vai usar um roteador busybox um método melhor é o tccomando, você pode conferir o post de marca aqui mark.koli.ch/... o wiki openvz tem mais exemplos openvz.org/Traffic_shaping_with_tc
nwgat
parece que também é possível limitar a largura de banda com iptables (você pode editar a resposta, se necessário): serverfault.com/questions/52027/...
baptx
62

Como observado na resposta anterior, o wondershaper faz o trabalho facilmente. Eu incluo as informações do link acima por Jwalanta Shrestha

apt-get install wondershaper

wondershaper - Uma ferramenta fácil para limitar a largura de banda de uma interface específica.

$ sudo wondershaper {interface} {down} {up}

o {down} e o {up} são largura de banda em kpbs

Por exemplo, se você deseja limitar a largura de banda da interface eth1 para o downlink de 256kbps e o uplink de 128kbps,

$ sudo wondershaper eth1 256 128

Para limpar o limite,

$ sudo wondershaper clear eth1 
Éden
fonte
2
Idealmente, você deveria ter acabado de editar a resposta original em vez de adicionar uma nova. Esta é a política padrão. De qualquer forma, +1 na sua resposta, pois adiciona informações às respostas.
shivams
2
Isso é muito útil se você estiver conectando dados móveis e tiver um limite de uso justo (e tiver que comprar novos pacotes depois, o caso do Lycamobile). Em sites de streaming de vídeo como o YouTube, o vídeo inteiro é carregado diretamente se você tiver largura de banda suficiente. Se você limitar a largura de banda, o vídeo mudará automaticamente para uma resolução baixa e fará o download apenas do que você está assistindo, o que salva dados se você não quiser assistir a tudo.
precisa saber é
2
Útil também para o upload de arquivos grandes, pois não apenas limita a largura de banda, mas também prioriza o tráfego. Para que, ao enviar um arquivo de 10 gb, você ainda possa usar o SSH.
`` #
5
Wondershaper é muito desatualizado: wondershaper Must Die (Bufferbloat.net)
Niklas Holm
10

A limitação de recursos de rede com base em alguns critérios é o assunto da QoS . Existem várias maneiras diferentes de controlar o tráfego do usuário nos sistemas Linux.

Há um bom tutorial sobre técnicas avançadas de roteamento e controle de tráfego no Linux, por Bert Hubert.

Emre Yazici
fonte
2
Você estava se referindo a uma seção específica?
Rogerdpack
1
Se você não deseja alterar as configurações do sistema, basta instalar o proxy squid3 e defina sua aplicação "limitada" através do proxy. Para aplicação cli de você pode definir torsocks ou proxychains, e para aplicação GUI pesado do que você também pode instalar Fiddler mono, então sim ... há um algumas maneiras de controlar tudo :)
erm3nda
(esta é apenas uma resposta do link)
Konrad Gajewski
7

Se você já possui uma configuração do Apache em algum lugar, pode usá-lo mod_bw, o que também funciona em conexões com proxy (por exemplo, o Apache apenas encaminha tudo para o servidor apropriado, mas reduz as respostas).

Ulrich Schwarz
fonte
6

A Dummynet faz o que você quer e muito mais, você pode até controlar a latência, perda aleatória de pacotes e muito mais.

Ammar Alammar
fonte
6

Você também pode usar o módulo iptables hashlimit. Aqui está um exemplo simples:

iptables -A FORWARD -m hashlimit - acima de 512kb / seg --hashlimit-burst 1mb --hashlimit-mode srcip, dstip --hashlimit-name bwlimit -j DROP

Essa regra limita o tráfego que passa pela cadeia FORWARD como 512kb / s, com 1mb burst para cada par de origem e destino.

Consulte a seção hashlimit do manual do iptables para obter mais informações.

http://ipset.netfilter.org/iptables-extensions.man.html

ibrahim
fonte