Como fazer QoS de banda (controle de banda) no Ubuntu Server, Debian, Fedora, Centos, RedHat e etc

Standard

Vamos perceber o seguinte.
Esse how to serve para TODAS as distribuições que rodam como um gateway de internet, sendo somente um caso de particularidade a questão de paths de configurações, como por exemplo, para instalar o CBQ no ubuntu basta usar apt-get install shaper -y.
Isto instalará ele e basta você localizar o path aonde o script shaper está (/etc/init.d/shaper) e seus respectivos confs (/etc/shaper).
No caso das outras distribuições (red hat based -> Centos, Fedora e Red Hat) podemos ver que seu path fica em /etc/sysconfig/cbq. No caso de red hat já existe um arquivo de exemplo que serve para mostrar como as coisas são configuradas no padrão, seu nome é cbq-0000.example e existe outro mas é um caso de utilização do próprio CBQ, o avpkt.
Neste caso iremos criar tudo na mão.
Antes de por a mão na massa temos de entender algumas regras PRIMÁRIAS do CBQ.
Abaixo seguem as mesmas:

O nome dos arquivos de download

cbq-0002-download.in

Todos os arquivos de download devem obedecer a algumas regras na hora de serem nomeados. A primeira delas é que todos os arquivos de download devem começar com cbq-

cbq-0002-download.in

A numeração sempre deve começar a partir do 0002;

cbq-0002-download.in

Todos os arquivos devem terminar com .in

cbq-0002-download.in

O conteúdo dos arquivos de download

DEVICE=eth1,10Mbit,1Mbit
RATE=64Kbit
WEIGHT=6Kbit
PRIO=5
RULE=10.0.0.2
BOUNDED=yes
ISOLATED=yes

DEVICE=eth1,10Mbit,1Mbit – Esta linha contém a interface que sai para os clientes da rede.
RATE=64Kbit – Quantidade de banda destinada ao cliente. Aqui coloca-se qualquer valor que se deseje separar para o IP do cliente.
WEIGHT=6Kbit – Taxa máxima de download que o cliente pode alcançar (com pequenas variações para mais ou para menos).
PRIO=5 – Prioridade com que o IP do cliente deve ser vigiado. O normal é deixar 5.
RULE=10.0.0.2 – IP do cliente a ser vigiado.
BOUNDED=yes – Se setado para yes o usuário estará limitado mesmo que o link esteja com folga.
ISOLATED=yes – Se setado para yes indica que o cliente não poderá emprestar banda pra ninguem.

Arquivos de upload
O nome dos arquivos de upload

cbq-0002-upload.out

Todos os arquivos de upload devem obedecer a algumas regras na hora de serem nomeados. A primeira delas é que todos os arquivos de upload devem começar com cbq-

cbq-0002-upload.out

A numeração sempre deve começar a partir do 0002;

cbq-0002-upload.out

Todos os arquivos devem terminar com .out

cbq-0002-upload.out

O conteúdo dos arquivos de upload

DEVICE=eth1,10Mbit,1Mbit
RATE=64Kbit
WEIGHT=6Kbit
PRIO=5
RULE=10.0.0.2,
BOUNDED=yes
ISOLATED=yes

DEVICE=eth1,10Mbit,1Mbit – Esta linha contém a interface que sai para os clientes da rede.
RATE=64Kbit – Quantidade de banda destinada ao cliente. Aqui coloca-se qualquer valor que se deseje separar para o IP do cliente.
WEIGHT=6Kbit – Taxa máxima de download que o cliente pode alcançar (com pequenas variações para mais ou para menos).
PRIO=5 – Prioridade com que o IP do cliente deve ser vigiado. O normal é deixar 5.
RULE=10.0.0.2, – IP do cliente a ser vigiado. Observe que no arquivo de upload, o IP termina com uma vírgula (,).
BOUNDED=yes – Se setado para yes o usuário estará limitado mesmo que o link esteja com folga.
ISOLATED=yes – Se setado para yes indica que o cliente não poderá emprestar banda pra ninguem.

Iniciando o CBQ

Depois de criadas todas as regras, é preciso compilá-las, com o comando (isto em fedora, redhat e centos):

root@appunixlabs~# cbq compile

No caso do Debian, Ubuntu, Mint e similares:

root@appunixlabs~# /etc/init.d/shaper compile

Basta, depois da compilação, iniciar o CBQ com o comando (isto em fedora, redhat e centos):

root@appunixlabs~# cbq start

No caso do Debian, Ubuntu, Mint e similares:

root@appunixlabs~# /etc/init.d/shaper start

Ou se desejar pará-lo (isto em fedora, redhat e centos):

root@appunixlabs~# cbq stop

No caso do Debian, Ubuntu, Mint e similares:

root@appunixlabs~# /etc/init.d/shaper stop

CBQ na inicialização

Adicione o comando cbq start ao rc.local para que carregue sozinho no ato do boot
(isto em fedora, redhat e centos):

root@appunixlabs~# echo "cbq start" >> /etc/rc.local

No caso do Debian, Ubuntu, Mint e similares:

root@appunixlabs~# echo "/etc/init.d/shaper start" >> /etc/rc.local

Fontes:

http://www.ubuntu.com/ubuntu (ubuntu)
http://www.debian.org/ (debian)
http://centos.org/ (centos)
http://www.projetofedora.org/ (fedora)
http://sourceforge.net/projects/cbqinit/ (cbq)
http://migre.me/5gcMr (cbq sob fedora)

DHCP Server Ubuntu Linux Ubuntu

Standard

Olá galera tudo na paz?
Hoje vou mostrar de forma simples como configurar um Servidor de DHCP no Ubuntu (diga-se Debian-like)….
DHCP é a siga Dynamic Host Configuration Protocol que é na verdade é um protocolo de serviço TCP/IP que oferece configuração dinâmica de terminais, com concessão de endereços IP de host e outros parâmetros de configuração para clientes de rede.
A comunicação do cliente com o Servidor DHCP funciona da seguinte forma, o Cliente envia um pacote em UDP em Broadcast (quer dizer que é destinado a todas a máquinas da rede) com um pedido DHCP (Configurações gerais como IP e DNS), o servidor DHCP que
primeiro capturar este pacote enviará de volta um pacote contendo as configurações, onde constará pelo menos um endereço de IP, uma máscara de rede como parâmetros opcionais Gateway, Servidor Wins, DNSs, dentre outras consigurações.
O DHCP usa um modelo cliente-servidor, no qual o servidor DHCP mantém o gerenciamento centralizado dos endereços IP usados na rede.

DHCP em Linux é mais rápido que DHCP em WIndow$?
Sim, isso não é mito… A vantagem do Linux sobre o Window$ nesta questão é que o Linux suporta o protocolo TCP/IP nativamente(via módulos de Kernel), enquanto o Window$ utiliza uma camada de compatibilidade (WInsock,que traz perda de desempenho por não estar diretamente no Kernel) para oferecer suporte a TCP/IP.
Existe também o Mito de que o DHCP Linux é mais difícil de ser configurado, Mentira…. Verão por meio desse how to que é simplista, tanto a configuração quanto manutenção desse DHCP em Linux.
Deixemos de balela e mãos a obra.

Primeiro, colocar um IP Fixo

root@appunix:~#ifconfig eth0 192.168.2.2 netmask 255.255.255.0 up

ou use esse how to e aprenda um pouco sobre configuração de interfaces de rede.

Agora é hora de instalar o pacote dhcp3-server

root@appunix:~#apt-get update

root@appunix:~#apt-get install dhcp3-server

Após o pacote intalado, pode fazer backup do arquivos de configuração do nosso DHCP(caso aconteça algum erro poderemos voltar com ele)

root@appunix:~#mv /etc/dhcp3/dhcpd.conf /etc/dhcp/dhcpd.conf.BKP

Agora vamos criar novamente o conf

root@appunix:~#vim /etc/dhcp3/dhcpd.conf

deixe o da seguinte forma (adaptando às suas necessidades)

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.13 192.168.2.20;
option subnet-mask 255.255.255.0;
option routers 192.168.2.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option broadcast-address 192.168.2.255;
}

Onde:
default-lease-time 600→ controla o tempo de renovação dos endereços IP em nosso caso a cada 10 minutos o servidor verifica se a estação ainda está ativa
max-lease-time 7200→ determina o tempo máximo que uma estação pode usar um determinado endereço IP, isso foi planejado em ambientes onde haja escassez de endereços IP no nosso caso cada IP fica “alugado” por no máximo 2 Horas(isso só é legal quando você tem menos IPs disponíveis do que estações e, quando todas as estações não ficam ligadas ao mesmo tempo)
authoritative→ significa que esse é o principal DHCP de sua rede
subnet 192.168.2.0 netmask 255.255.255.0→ significa faixa de faixa de IP e máscara de rede utilizada em sua rede
range 192.168.2.13 192.168.2.20→ aqui especificamos qual a largura de distribuição de IPs para no DHCP, em nosso caso o DHCP irá distribuir IPs de 192.168.2.13 até 192.168.2.20 Inclusive
option subnet-mask 255.255.255.0→ a máscra de rede para os Clintes
option routers 192.168.2.1→ aqui você define o Gateway das estações Cliente
option domain-name-servers 8.8.8.8, 8.8.4.4→ aqui são especificados os Servidores DNS usados pelo seus clientes, costumo usar os da Google (nunca tive qualquer que seja o problema em questão de nomes com esses DNSs)mas, caso tenha um servidor DNS em sua Rede(pode ser o proprio computador) pode colocar aqui o/os IPs deles
option broadcast-address 192.168.2.255→ endereço de Broadcast da Rede

Muito tranquilo…. agora caso trabalhe em uma rede onde usa-se impressoras compartilhadas em alguns hosts, é imprecindível que atribua por meio do DHCP IPs amarrados ao Mac Address (endereço físico e Único para cada placa de rede) ou seja, IPs fixos através do Servidor de DHCP.
Como fazer?
Após a Ultima linha de configuração acrescente

host doooguinha {
hardware ethernet 00:24:8c:4d:e3:7c;
fixed-address 192.168.2.15;}

onde:
host doooguinha→ é o nome o qual você queria dar a essa atribuição de IP
hardware ethernet 00:24:8c:4d:e3:7c→ é o endereço Físico (Mac Address) da minha placa de rede
fixed-address 192.168.2.15→ é o IP fixo que você quer atribuir para essa estação

* Só pra lembrar que o endereço fixo deve estar dentro da faixa de IP estabelecido na parte de range que foi explicado acima

Dica: Use servidor DHCP em uma faixa de Ips diferente daquela que você deixará para DHCP, por exemplo, da faixa de 192.168.2.1 até 192.168.2.20 (Setados na mão, em cada estação) e o restante 192.168.2.21 até 192.168.2.254 para o DHCP, Caso não o faça seu servidor DHCP poderá atribuir um endereço já utilizado por uma estação a outra
por meio do DHCP.

Após feita a configuração agora basta reiniciar o serviço e correr para o abraço

root@appunix:~#/etc/init.d/dhcp3-server restart

ou

root@appunix:~#/etc/init.d/dhcp3-server stop

root@appunix:~#/etc/init.d/dhcp3-server start

Nos clientes há várias formas de receber um Ip por DHCP
Vou mostrar todas pelo terminal

root@appunix:~#dhclient eth0

eth0 substitui-se pela interface usada por seu PC

ou

root@appunix:~#ifconfig eth0 0

onde eth0 é a interface utilizada por seu PC

Clientes WIndow$/ Mac receberam Ip normalmente de forma imperceptível.

Uma observação importante, é que ao configurar um servidor com duas placas de rede, você deve configurar o servidor DHCP para escutar apenas na placa da rede local. Em nossos testes utilizamos Ubuntu e, esta configuração está no arquivo “/etc/default/dhcp3-server”.

root@appunix:~vim /etc/default/dhcp3-server

Procure pela linha:

INTERFACES=”” e deixe de acordo com sua estrutura em nosso caso ficou INTERFACES=”eth0″ só irá escutar requisições de DHCP pela interface eth0.
É isso galera… espero ter ajudado, qualquer dúvida poste um comentário e o mais rápido possível será respondido.:D
Abraço a todos.