sexta-feira, 16 de maio de 2008

HTB-Tools: exemplos práticos de configuração

O HTB-Tools é uma excelente ferramenta de auxílio na configuração do HTB (Hierarchical Token Bucket) para limitação de uso de banda. Como o primeiro artigo sobre o HTB-Tools explicando o uso da ferramenta gerou muitas consultas e dúvidas dos leitores resolvi escrever uma pequena complementação. Agora vou dar exemplos mais concretos de configurações específicas de uso cotidiano.

SE VOCÊ NÃO SABE O QUE É HTB OU HTB-TOOLS LEIA O PRIMEIRO ARTIGO ANTES!

OS EXEMPLOS A BAIXO SÃO MERAMENTE ILUSTRATIVOS!

1. Download e Upload com taxas diferentes

Partindo do exemplo do próprio artigo vamos supor que os cliente deveriam ter a mesma taxa de download do exemplo, mas que o upload seria limitado à metade ou seja 96kbps e 128kbps para upload, garantidos e máximo,repectivamente.

Supondo que a sua interface LAN seja a mesma eth0 vamos controlar o upload/download criando o arquivo /etc/htb/eth0-qos.cfg com o seguinte conteúdo:

class Wireless {

bandwidth 480;
limit 512;
burst 2;
priority 1;

client cliente_1down {
bandwidth 192;
limit 256;
burst 2;
priority 1;
dst {
192.168.1.2/24;
};
};

client cliente_1up {
bandwidth 96;
limit 128;
burst 2;
priority 1;
src {
192.168.1.2/24;
};
};

client cliente_2down {
bandwidth 192;
limit 256;
burst 2;
priority 1;
dst {
192.168.2.2/24;
};
};

client cliente_2up {
bandwidth 96;
limit 128;
burst 2;
priority 1;
src {
192.168.1.2/24;
};
};

};
class default { bandwidth 8;};

Entendendo: Para o cliente_1 quando o tráfego se destinar (dst) a ele a taxa será de no máximo 256kbps, porém qualquer tráfego que se originar (src) do cliente_1 será limitado à 128kbps, ou seja o cliente_1 não vai conseguir enviar nenhum pacote a mais de 128kbps (taxa de upload). O mesmo vale para o cliente_2 que poderia estar limitado à outras taxas de forma independente. Por fim, a classe default destina 8kbps para todo o resto do tráfego não contemplado nas classes anteriores.

2. Compartilhando conexão a uma taxa fixa

Um caso comum que pode ocorrer é você ter uma boa conexão e um cliente quer um link mais dedicado com servidor próprio. Supondo que você tenha um link de 1Mbps e o cliente contrate 360kbps que deve ser compartilhados através de um servidor próprio do cliente (qualquer pentium 100 já serve). Vamos considerar que a interface WAN seja a eth1 e a LAN a eth0. Na LAN não será preciso nenhuma limitação, contudo para a interface WAN (eth1) criamos o seguinte arquivo de configuração - /etc/htb/eth1-qos.cfg :

class eth1-WAN {
bandwidth 100000;
limit 100000;
burst 64;
priority 1;
client WAN {
bandwidth 100000;
limit 100000;
burst 64;
priority 1;
dst {
X.X.X.X/X; # ip/máscara da sua rede WAN
};
src {
X.X.X.X/X; # ip/máscara da sua rede WAN
};
};

};

class eth1-WAN-cliente {
bandwidth 360;
limit 360;
burst 8;
priority 1;
client DEDICADO_1 {
bandwidth 360;
limit 360;
burst 8;
priority 1;
src {
0.0.0.0/0;
};
dst {
0.0.0.0/0;
};
};

};
class default { bandwidth 8; };

Entendendo: Dentro do arquivo eth1-qos.cfg temos duas classes especiais: eth1-WAN (client WAN) e eth1-WAN-cliente (client DEDICADO_1). A classe eth1-WAN estipula um limite de 100.000 kbps para tráfego para a sua própria rede (src e dst). A outra classe eth1-WAN-cliente vai limitar o tráfego para o "mundo externo" em 360kbps tanto para download (dst) quanto para upload (src). O que deve ser observado é que a classe eth1-WAN dá prioridade e libera a sua rede WAN para qualquer velocidade de tráfego enquanto a classe eth1-WAN-cliente limite todo o resto à 360kbps. O problema ocorre quando na LAN você tem diversos clientes concorrentes entre si pelos 360kpbs e ainda . Este caso é tratado em seguida.

3. Limitando apenas as conexões para a Internet

Uma caso muito frequente é quanto temos um gateway em nossa rede que além de compartilhar a Internet fornece aos usuários de nossa WAN/LAN outros serviços como servidor de arquivo, ftp, etc. Se limitarmos o tráfego de acordo com o primeiro exemplo conseguimos controlar o uso do link da Internet, contudo todos os outros serviços fornecidos pelo gateway também serão "estrangulados", tornado o uso da rede insuportável! O que fazer então? O segundo exemplo consegue resolver em parte nosso problema pois limita o tráfego globalmente apenas para conexões externas (WAN) e as conexões da LAN fluirão livremente. Mas por outro lado se tivermos qualquer serviço rodando pelo lado externo / WAN e que deve ser utilizado a partir de outra rede externa será limitado à 360kbps. Para resolver este problema existe duas alternativas: 1ª incluir as redes de onde serão acessados os serviços no "client WAN" da classe eth1-WAN (exemplo 2) ou 2ª limitar o tráfego apartir da interface da LAN (eth0), sem limitar o tráfego interno. A primeira alternativa pode se tornar um pouco inconveniente se os clientes/usuários externos acessarem de redes diversas. A segunda solução é a mais usual para a maioria dos casos. Então vamos deixar a WAN (eth1) com o tráfego liberado e faremos o controle de banda pela LAN (eth0), devemos criar o seguite arquivo /etc/htb/eth0-qos.cfg:

class eth0-LAN {
bandwidth 100000;
limit 100000;
burst 32;
priority 1;
client LAN-LAN {
bandwidth 100000;
limit 100000;
burst 32;
priority 1;
src {
X.X.X.X/X; # ip/máscara da sua rede WAN
192.168.0.0/24; # ip/máscara da sua rede LAN
};
dst {
X.X.X.X/X; # ip/máscara da sua rede WAN
192.168.0.0/24; # ip/máscara da sua rede LAN
};
};

client LAN0-WAN {
bandwidth 360;
limit 360;
burst 8;
priority 1;
dst {
0.0.0.0/0;
};
src {
0.0.0.0/0;
};
};

};

class default { bandwidth 8; };

Entendendo: Sempre que o destino ou a origem do tráfego for a nossa própria rede teremos uma taxa de 100.000kbps. Para todos os outros destinos e origens (0.0.0.0/0) estaremos limitando o tráfego à 360kbps.

4. Conclusão

A dupla HTB e HTB-Tools fazem a alegria de qualquer administrador de redes! @;)


Créditos:
wandersonsreis (a) gmail.com
http://www.wasare.net/home/node/17

Nenhum comentário: