Formatar o tráfego de origem dos clientes de saída ip com tc / iptables

2

Minha pergunta é que estou tentando limitar a largura de banda de um usuário em um servidor e pensar na melhor maneira de fazer isso. Antes de me aprofundar no tc / iptables eu queria saber se eu poderia obter algum conselho sobre isso e se alguém poderia me dar uma amostra de configuração que pode ser algo com que eu possa brincar, seria muito apreciado.

Pelo que entendi, você pode fazer regras com tc e aplicar as regras com iptables usando a instrução mark. Algumas pessoas dizem usar o mangle postrouting ou output, mas não 100% de certeza qual é o melhor ou se é importante. Eu acredito que com tc eu vou estar usando o HTB (token bucket para limitar a largura de banda), no entanto, as pessoas dizem que há trade off desempenho e eu estou procurando o menor método de latência. Esses usuários não estão na rede interna, mas se conectando a um servidor.

Eu tenho dois tipos de usuários, então só precisa haver duas regras para limitá-los. Até agora o que eu posso ver é o combo tc / iptables para ser o que eu quero, mas estou aberto para sugestões de alternativas.

Eu acho que para o iptables o comando será parecido com

Regra de limite de largura de banda 1

iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x1

Regra de limite de largura de banda 2

iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x2

O que eu quero que aconteça

  • O usuário entra na eth0 (seu IP será conhecido. Não é IP aleatório)
  • solicita informações do servidor
  • o servidor envia informações sobre a eth0 de volta ao usuário com a regra aplicada
por dryve 19.11.2014 / 00:59

1 resposta

0

Usar o tc é o caminho certo para modelar no linux. A melhor documentação é LARTC . Primeiro de tudo você precisa entender que tipo de tráfego você vai moldar - egresso ou ingresso. Depois disso, você deve escolher uma interface para fazer isso (é mais simples modelar o tráfego de entrada na interface de saída com base nos endereços de origem antes do tráfego de NAT e de saída na interface local com base no endereço de destino após o NAT). Também pode não haver regras de iptables, por exemplo, se você estiver usando interfaces diferentes (podem ser interfaces de VLAN) para seus dois tipos de usuários. Depois disso, você deve configurar os qdiscs nas interfaces escolhidas. pode ser classless se seus usuários forem divididos por interfaces ou classful se você estiver usando uma interface para configurar a largura de banda para poucos usuários digitarem. E depois disso você deve configurar um filtro (se você usar esquema classful). Existem muitos exemplos no link abaixo. Boa sorte ...

    
por 19.11.2014 / 16:33