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: 39.564 ]

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

Instalando Squid a partir do código fonte

DVDAuthor: Como autorar DVDs no Linux

Leitura recomendada

AWS - VPN IPSEC com Libreswan

Transforme seu PC em um roteador Wi-Fi com Hostapd em modo Bridged

Configurando Zabbix 3.4 no CentOS 7

Asterisk - Recebimento de Fax com encaminhamento por e-mail

Descobrindo o IP externo da VPN no Linux

  
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