Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Esta dical mostra como configurar um servidor com controle de banda, prioridade, firewall,
cadastramento de IP preso à um MAC, proxy transparente e cache DNS, deixando tudo
visível através de um único arquivo de configuração.
Usei como base a distribuição Ubuntu Server 7.04, até mesmo para testar essa nova
promessa das distros para servidores. Mas você poderá seguir sem problemas esse tutorial
com qualquer Debian ou derivado como o Kurumin. Com algumas adaptações na instalação
dos pacotes, pode ser usado qualquer outra distribuição Linux.
A maioria dos provedores calculam a proporção de 8 pra 1, ou seja, posso ter 8 clientes com
256 kbps de acesso cada um, e só possuir um link de 256 kbps que nunca todos os clientes
estarão usando efetivamente a internet ao mesmo tempo, eu como cliente de um provedor
wireless posso confirmar que na prática isso não funciona muito bem. Seja mais camarada
com seus clientes, principalmente se eles usam aplicativos P2P. :)
Serviços do servidor
O proxy transparente será feito com o Squid. Um proxy, entre muitas outras utilidades serve
como cache de páginas, ou seja, reservaremos um espaço no disco rígido do servidor de
acordo com a capacidade livre para armazenar as paginas acessadas.
Por exemplo, um usuário abriu o site www.kernel.org, o proxy então guarda o conteúdo
desse site em seu cache, em seguida um outro cliente abriu o mesmo site, então o proxy
verifica se a pagina foi atualizada, se não houver atualização ele apenas pega o que tem em
seu cache e manda para o cliente, sem a necessidade de buscar novamente o mesmo
conteúdo na internet.
Na prática isso ocasiona uma incrível poupança de banda. Denominamos o nosso proxy de
“transparente” porque ele não precisará ser configurado manualmente no navegador dos
clientes, através de uma regra no firewall redirecionaremos o fluxo de navegação para o
Squid.
Colocaremos também no servidor o serviço Bind9 para cache DNS. Teremos nossa própria
tabela de mapeamento de endereços na internet, assim, na configuração de rede dos seus
clientes, você poderá colocar como DNS primário o IP do seu servidor (o mesmo que o
gateway) e não o da telecom, além de deixar a configuração mais prática também
economiza o link.
Para evitar “furões” acessando sua internet usaremos o cadastro de IP preso a um MAC. O
MAC é o endereço físico da interface de rede, ele é único, cada placa de rede ou wireless
tem um endereço MAC diferente, (para vê-lo use “ifconfig” no Linux e “ipconfig /all” no
prompt do Windows). Na hora de cadastrar seu cliente você colocará o MAC da interface
dele e o endereço IP que você escolheu, no momento que o cliente for usar a internet, se os
dois endereços não coincidirem o acesso não funcionará. Não que seja um sistema 100%
seguro porque endereços MACs podem ser facilmente emulados, mas já dificultará bastante
a vida de usuários não autorizados.
Para firewall usaremos um script iptables muito simples baseado no firewall do Kurumin.
Instalação e configuração
A instalação do Ubuntu Server não é complicada e não será tratada aqui. No processo de
instalação é possível já deixar ativo alguns serviços de servidor como DNS e o “LAMP”
que são os serviços para servidor de páginas e e-mail. É recomendável que você não tenha
esses serviços instalados no seu servidor, se tiver instalado, desative-os e preferencialmente
use-os em outro servidor.
Antes de mais nada você de ter configurado as interfaces de rede durante a instalação ou
posteriormente, e sua conexão com a internet já deve estar funcionando. Na primeira
interface você coloca o IP que recebeu da telecom e na segunda interface você coloca a
faixa de IPs que quiser.
Primeiramente logue-se como root, no Ubuntu é necessário entrar com a conta normal e
depois:
$ sudo su
Para facilitar as coisas, primeiro instale o SSH e use o servidor remotamente, irá facilitar na
hora de copiar os scripts listados neste artigo e depois você poderá deixar o servidor sem
monitor.
# apt-get update
# apt-get install ssh
Agora você pode usar o servidor através de outro computador que esteja na mesma rede,
ligue a interface de rede eth1 num switch e configure outro computador com a mesma
classe de IP. Para se conectar no Linux use o comando “ssh usuario@ip_do_servidor”, no
Windows baixe o programa Putty facilmente encontrado no Google.
Por questões de segurança muitos administradores mudam a porta padrão (22) do SSH para
dificultar invasões, se desejar pode você fazer isso editando o arquivo
"/etc/ssh/sshd_config.conf"
Agora a instalação dos serviços. Para instalar os pacotes usados dê o seguinte comando:
Configuração do Proxy
O primeiro a ser configurado será o proxy Squid, vamos remover o arquivo padrão e criar
um totalmente novo (o editor de texto vi não é muito agradável no Ubuntu, você pode
instalar e usar o vim, o nano, etc.):
# rm /etc/squid/squid.conf
# vi /etc/squid/squid.conf
# arquivos de Log
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
## FIM DO ARQUIVO ##
# /etc/init.d/squid restart
# vi /etc/provedor/clientes
Cada linha corresponde a um cliente. Os campos são separados com “|” (pipe-line). O
primeiro campo é o código do cliente, inicie a partir de 0010, sempre com 4 dígitos. Em
seguida o nome, o endereço IP escolhido, a velocidade de conexão, a taxa de download, a
taxa de upload, o endereço MAC, a prioridade (quanto mais baixo mais prioridade) e por
fim, “A”, ativo ou “B”, bloqueado.
O script que lê essas informações será o "configurador.sh", crie-o na mesma pasta e depois
dê permissão de execução
# touch /etc/provedor/configurador.sh
# chmod +x /etc/provedor/configurador.sh
# vi /etc/provedor/configurador.sh
#!/bin/bash
# script criado por Tiago Andre Geraldi – virgulla@gmail.com
rm -f /etc/shaper/*
rm /etc/provedor/users.sh
touch /etc/provedor/users.sh
chmod +x /etc/provedor/users.sh
LISTA=`cat /etc/provedor/clientes`
for CLIENTE in $LISTA; do
CODIGO=`echo $CLIENTE | awk -F "|" '{print $1}'`
NOME=`echo $CLIENTE | awk -F "|" '{print $2}'`
IP=`echo $CLIENTE | awk -F "|" '{print $3}'`
CON=`echo $CLIENTE | awk -F "|" '{print $4}'`
DOWN=`echo $CLIENTE | awk -F "|" '{print $5}'`"kbit"
UP=`echo $CLIENTE | awk -F "|" '{print $6}'`"kbit"
MAC=`echo $CLIENTE | awk -F "|" '{print $7}'`
PRIO=`echo $CLIENTE | awk -F "|" '{print $8}'`
STAT=`echo $CLIENTE | awk -F "|" '{print $9}'`
# checa se esta ativado
if [ "$STAT" = "A" ]; then
UPLOAD="/etc/shaper/cbq-"$CODIGO"."$NOME"_upload"
DOWNLOAD="/etc/shaper/cbq-"$CODIGO"."$NOME"_download"
touch $UPLOAD
touch $DOWNLOAD
chown 755 /etc/shaper/*
fi
done
sh /etc/provedor/firewall.sh
/etc/init.d/shaper restart
## FIM DO ARQUIVO ##
O script trabalha com a pasta /etc/shaper onde fica o controle de banda, também usa o
arquivo /etc/provedor/users.sh que será criado pelo script e que será lido pelo firewall que
criaremos depois. Neste arquivo fica a habilitação de internet para os IPs cadastrados.
A primeira coisa que ele faz é apagar os arquivos atuais. Em seguida ele lê o
"/etc/provedor/clientes" e guarda em variáveis, cria os arquivos do controle de banda e o
"/etc/provedor/users.sh" atualizado. Dá o comando “arp” que prende o Ip ao MAC e por
último reinicia o serviço de controle de banda e re-executa o firewall.
Sempre que fizer alguma alteração nos cadastros basta que você execute o configurador:
# sh /etc/provedor/configurador.sh
Mas calma, você ainda precisa criar o firewall, senão nada funcionará.
Firewall
#!/bin/bash
# Esse script criado por Tiago André Geraldi é baseado
# no firewall criado por Carlos Morimoto para o Kurumin Linux
# Marcacao de pacotes para controle de banda. Mude a faixa de IPs de acordo com a sua
for i in `seq 2 254`
do
iptables -t mangle -A POSTROUTING -s 192.168.0.$i -j MARK --set-mark $i
done
# Habilita roteamento
echo 1 > /proc/sys/net/ipv4/ip_forward
# Abre uma porta (inclusive para a Internet). Neste caso apenas deixamos aberto o acesso
para SSH, Proxy e DNS.
## FIM DO ARQUIVO ##
Conclusão
# sh /etc/provedor/configurador.sh
Coloque essa linha sem o “#” no arquivo /etc/init.d/bootmisc.sh para que seja executado
automaticamente na inicialização. Em distribuições não Debian você deve usar o
"/etc/rc.d/rc.local".
Agora você precisa pegar o endereço MAC dos seus clientes definir um IP pra cada um e
cadastrar todos. O gateway e DNS para os clientes é o IP do seu servidor, no exemplo
192.168.0.1.
Tratei aqui de forma abstrata os serviços como proxy, DNS e firewall. Eles são ferramentas
poderosíssimas. Se procura soluções diferentes ou deseja implementar novos recursos você
encontrará material abundante aqui mesmo neste site.