WebHTB - Controle de banda de internet

O WebHTB é uma excelente ferramenta para controlar a velocidade da internet na rede local. Resolvi criar este artigo usando três grandes distros de referência: Debian, CentOS (Red Hat) e Slackware, mostrando as diferenças em cada caso.

[ Hits: 38.470 ]

Por: Ronaldo Moraes Junior em 19/03/2015


Instalando o WebHTB no Slackware



Muitos vão dizer que não seria necessário explicar como instalar o WebHTB no Slackware, já que ninguém merece sofrer tanto (hehe), mas como eu sou um dos que gostam de sofrer aprendendo com o Slackware, vamos ao que interessa.

A instalação padrão do Slackware já possui os aplicativos necessários para o funcionamento do WebHTB, de forma que precisamos apenas configurar alguns arquivos. Primeiramente, vamos habilitar os módulos SSL e PHP.

Editamos o arquivo /etc/httpd/httpd.conf e descomentamos as linhas:

LoadModule ssl_module lib/httpd/modules/mod_ssl.so  # linha 143 do arquivo original

include /etc/httpd/mod_php.conf  # linha 527 do arquivo original

Salvamos o arquivo e saímos.

A seguir, geramos o certificado SSL da mesma forma que nas outras distros:

# openssl req $@ -new -x509 -days 365 -nodes -out /etc/httpd/apache.pem -keyout /etc/httpd/apache.pem

Assim podemos iniciar o Apache e testar o servidor HTTP:

# /etc/rc.d/rc.httpd start

Feito isso, podemos testar acessando com o navegador: https://127.0.0.1

A tela para examinar o certificado deve aparecer da mesma forma:
Linux: WebHTB - Controle de banda de internet
Agora vamos ativar o "short_open_tag" no "php.ini". Para isso vamos criar o arquivo "/etc/php/php.ini" e ativar a opção "short_open_tag". No Slackware, por padrão, o arquivo não existe, mas basta criá-lo e inserir a regra:

short_open_tag = on

Caso o MySQL não esteja sendo ativado durante o boot, alteramos a permissão do seu script de inicialização e iniciamos o serviço:

# chmod +x /etc/rc.d/rc.mysqld
# /etc/rc.d/rc.mysqld start

Caso o MySQL não esteja ainda sendo utilizado para outros fins, vamos realizar a instalação segura do MySQL e criar o banco de dados:

# mysql_secure_installation

Podemos escolher as mesmas opções: remover o usuário anônimo, bloquear login como root remotamente e remover a database "test". Feito isso, vamos logar no MySQL e criar o banco de dados:

# mysql -u root -p

mysql> create database webhtb;
mysql> GRANT ALL PRIVILEGES ON webhtb .* TO 'root@127.0.0.1' IDENTIFIED BY 'suasenha' WITH GRANT OPTION;
mysql> exit

Até aqui tudo até mais fácil do que nas outras distros... mas, se não tivéssemos alguns problemas, não seria Slackware.

Por padrão, o MariaDB server (servidor MySQL presente no Slackware) vem com a opção "skip-networking" ativada, o que faz com se sejam aceitas apenas conexões do host loopback.

O problema é que nos scripts do WebHTB, ele conecta através do IP 127.0.0.1 que, teoricamente, é a mesma coisa porém, tecnicamente falando, a conexão pelo loopback é feita através de socket, enquanto 127.0.0.1 é feita pela network. Ou seja, precisamos desativar o "skip-networking" ou abrir arquivo por arquivo do WebHTB e trocar onde aparece "127.0.0.1" por "loopback". Eu testei as duas maneiras e foi bem mais fácil a segunda opção. ;)

Para isso, editamos o arquivo /etc/rc.d/rc.mysqld e comentamos a seguinte linha:

SKIP="--skip-networking"

Está exatamente na linha 32 do arquivo.

Agora instalamos o WebHTB:

# cd /var/www/htdocs
# wget -c http://sourceforge.net/projects/webhtb/files/WebHTB%20V2.xx/WebHTB_V2.9/WebHTB_V2.9.bz2
# tar jxvf WebHTB_V2.9.bz2

Obs.: o diretório padrão do Apache no Slack é o "/var/www/htdocs", cuidado para não confundir!

Se você chegou "vivo" até aqui, você já está a um passo de ser seduzido pelo "lado negro da força"...

Para funcionar corretamente no Slackware, teremos que editar manualmente alguns arquivos do WebHTB. Isso se faz necessário, pois o WebHTB utiliza alguns comandos nativos do sistema e, mais especificamente o "ifconfig" do Slackware tem uma saída ligeiramente diferente do Debian ou CentOS, o que gera um comportamento inesperado, causando erros.

O primeiro arquivo a editarmos é o /var/www/htdocs/webhtb/setup/index.php. Exatamente na linha 64 temos:

$string = shell_exec($echo.' `'.$ifconfig.' |'.$grep' " "|'.$cut.' -d" " -f1`');

Alteraremos e deixaremos da seguinte forma:

$string = shell_exec($echo.' `'.$ifconfig.' |'.$grep' " "|'.$cut.' -d" " -f1|'.$cut.' -d":" -f1`');

O segundo arquivo a editarmos é o /var/www/htdocs/webhtb/interfaces.php. Exatamente na linha 58, faremos A MESMA ALTERAÇÃO:

$string = shell_exec($echo.' `'.$ifconfig.' |'.$grep' " "|'.$cut.' -d" " -f1|'.$cut.' -d":" -f1`');

Feito isso, podemos acessar o setup do WebHTB: https://127.0.0.1/webhtb/setup/index.php

Colocamos a senha do MySQL e escolhemos a interface padrão e clicamos em "Submit".

Antes de terminar, é necessário inserir o script de inicialização do WebHTB no "rc.d" para que ele seja executado a cada boot e incluir os módulos do kernel responsáveis pelo controle de banda:

# cp /var/www/htdocs/webhtb/docs/webhtb /etc/rc.d/rc.webhtb

Ativamos os módulos do kernel para uso do WebHTB:

# modprobe sch_htb
# modprobe sch_sfq
# modprobe cls_u32

E incluímos os módulos do kernel para serem ativados no momento do boot editando o arquivo /etc/rc.d/rc.local e incluindo as linhas abaixo ao final do arquivo:

modprobe sch_htb
modprobe sch_sfq
modprobe cls_u32

Mais uma alteração que se faz necessária é no script de inicialização do WebHTB. Por padrão, ele procura pelos arquivos do WebHTB no diretório /var/www/html, no entanto, no Slackware, o apache coloca os arquivos em /var/www/htdocs.

Para isso, basta editarmos o arquivo /etc/rc.d/rc.webhtb e na linha 6 alterarmos: dir="/var/www/html/webhtb"
Para:

dir="/var/www/htdocs/webhtb"

Feito isso, vamos colocá-lo para funcionar:

# /etc/rc.d/rc.webhtb start

E agora, podemos acessar a interface web através do endereço: https://127.0.0.1/webhtb/index.php
Linux: WebHTB - Controle de banda de internet
Usando a senha de root do sistema (e não a senha de root do MySQL) e inserir as regras de controle de banda das classes e dos usuários. Se o login ocorrer corretamente, cairemos na tela de administração do WebHTB:
Linux: WebHTB - Controle de banda de internet
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalando o WebHTB no Debian
   3. Instalando o WebHTB no CentOS
   4. Instalando o WebHTB no Slackware
   5. Problemas (e soluções) encontrados
Outros artigos deste autor

DVDAuthor: Como autorar DVDs no Linux

Instalando Squid a partir do código fonte

Leitura recomendada

Análise de Desempenho: Web API

Simulando redes com o GNS

Balanceamento de links - Load balance + Failover + Failback

Configurações Básicas no CentOS 7

Asterisk - Configuração de Voice Mail

  
Comentários
[1] Comentário enviado por stremenx em 16/02/2016 - 17:43h

Boa tarde, segui 100% sua dica mais está retornando assim quando tento entrar:
https://127.0.0.1/html/webhtb/setup/index.php

Sendo essa imagem do erro:
https://www.dropbox.com/s/ubt0npn1dy2jqzg/Screenshot.png?dl=0

Poderia me dar uma ajuda.

[2] Comentário enviado por ronaldomjunior em 17/02/2016 - 23:19h

Já verificou se o PHP está ativo? outra coisa, verifique se o SERVIDOR SSH também está ativo e configurado para iniciar automaticamente.

--
Ronaldo Moraes Junior
Divinópolis - MG

[3] Comentário enviado por stremenx em 18/02/2016 - 11:47h

Bom dia, achei o problema era php.ini onde deve ser alterado no Debian 8, /etc/php5/apache2/php.ini
Poderia me ajudar, tenho squid3 e dansguard tudo funcionado mais queria fazer controle de velocidade (Downloads e Update) como seria no meu caso pois não estou achando tutorial, pois tenho internet de 10 mg e queria quer todos tivesse apenas acesso a downloads até 200 kbps.

[4] Comentário enviado por ediwisa em 07/03/2016 - 17:34h

Boa Tarde, sou iniciante em linux e tambem aqui no forum.Gostaria de saber , se possivel , o que é necessario alterar no Debian 8, /etc/php5/apache2/php.ini para acessar a pagina de setup corretamente, pois estou com o mesmo problema que o amigo stremenx
estava.Obrigado!

[5] Comentário enviado por stremenx em 07/03/2016 - 20:13h

Boa noite, para alterar bastar alterar a permissão #chmod 777 /etc/php5/apache2/php.ini e basta abrir e salvar dentro somente "short_open_tag = on".

Mais eu recomendo você ir para pfsense é mais rápido se quiser somente squid, squidguard, dansguards e controle de banda, pois já vem mastigado seria melhor que debian.

[6] Comentário enviado por ediwisa em 08/03/2016 - 08:58h

Bom dia , consegui concluir o setup agora ,seguindo a dica do amigo stremenx.Tenho agora que fazer ele logar na pagina,pois ele esta dando o problema de ficar girando a animaçao do webhtb e não logou ainda.Já verifiquei a questão da porta do ssh, a qual não foi alterada.Vou tentar mais um pouco .Muito obrigado e que Deus os abençoe.

[7] Comentário enviado por stremenx em 08/03/2016 - 09:53h

Amigo basta seguir o ultimo passo para corrigir.

https://www.vivaolinux.com.br/artigo/WebHTB-Controle-de-banda-de-internet?pagina=5

Só que como você é iniciante recomendo você pegar o PfSense, muito mais fácil de configura, além de ser gratuito.

https://www.pfsense.org/

https://forum.pfsense.org/index.php?board=12.0

[8] Comentário enviado por ediwisa em 08/03/2016 - 19:17h

Boa noite , consegui colocar pra rodar o webhtb senguindo as dicas passadas.Fiz os testes e esta perfeito.Muito obrigado!

[9] Comentário enviado por nizopi em 11/06/2016 - 12:29h

Boa tarde pessoal, segui todo o tutorial e tudo tem dado certo, até o momento de logar no sistema, o mesmo fica parado na animação do login, mas já conferi a porta do SSH e está na 22, tbm adicionei o grupo de algoritmos no final do arquivo de configuração do SSH, mas tbm não resolveu, e outra duvida tbm é referente ao local /var/www/html, já que o mesmo já existe no sistema, até aí ok, o conteúdo está la em html/, mas na hora de abrir no navegador ele só abre se eu tirar o html e colocar direto http://127.0.0.1/webhtb/setup/index.php e não http://127.0.0.1/html/webhtb/setup/index.php, isso poderia estar influenciando no erro?

Estou usando o Debian 8 Jessie 3.16.0-4-686pae

Obg.

[10] Comentário enviado por nizopi em 11/06/2016 - 18:39h


[9] Comentário enviado por nizopi em 11/06/2016 - 12:29h

Boa tarde pessoal, segui todo o tutorial e tudo tem dado certo, até o momento de logar no sistema, o mesmo fica parado na animação do login, mas já conferi a porta do SSH e está na 22, tbm adicionei o grupo de algoritmos no final do arquivo de configuração do SSH, mas tbm não resolveu, e outra duvida tbm é referente ao local /var/www/html, já que o mesmo já existe no sistema, até aí ok, o conteúdo está la em html/, mas na hora de abrir no navegador ele só abre se eu tirar o html e colocar direto http://127.0.0.1/webhtb/setup/index.php e não http://127.0.0.1/html/webhtb/setup/index.php, isso poderia estar influenciando no erro?

Estou usando o Debian 8 Jessie 3.16.0-4-686pae

Obg.


Já resolvi esse problema, estava na configuração do SSH, só o caso de não iniciar com html que ainda resta dúvida, mas funcionou..

Agora o problema é outro, o webhtb só entra em ação se eu abrir a interface e clicar em "Start/Restart QOS", mesmo inserindo o script no init.d e mesmo adicionando os modulos como indicado no artigo, mas não inicia automaticamente, o que poderia ser?

Obg.

[11] Comentário enviado por ajsalmeida em 23/02/2017 - 14:47h

Olá. Consegui ir até o final, mas quando loga no webHTB ele entra no sistema e aparecem algumas imagens azuis e só.
Já tentei mudar o arquivo php.ini mas não deu resultado. Na verdade estou usando ubuntu server, eu sei eu sou meio maluco, mas
não posso usar o pfsense aqui. Alguma ideia de como resolver esse problema de não carregar tudo da página depois que loga?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts