Gerenciando a rede de forma simples
Alias de ip – Amarar IP ao MAC – Controle de Banda
Hoje estava lembrando de quando comecei a trabalhar no provedor. Não existia Mikrotik na época, e ai o que fazer, meu conhecimento em linux era praticamente nada, e hoje lembrando disso sei que muita gente ainda precisa fazer um controle de banda, amarar o ip ao mac, criar alias de ip.
Esse foi minha primeira missão no provedor, dar conta da zona que estava, pois nossa rede estava como diria do jeito que o diabo gosta (0.0.0.0/0)
em outras palavras: Conecta na rede e chuta um ip que vai navegar, não era nada difícil pois o antigo funcionário saiu da empresa fazia um processo cômico, para a liberação de um cliente, era criado um alias (um novo gateway) em uma classe diferente. Legal né, mas o que me assustava era o firewall, na hora do nat, o cara me liberava toda a classe de ip à cada gateway, então se tinha 400 clientes, eu tinha 102 mil ips diferentes, acho que se minha vó chutasse um ip ia navegar! Hahhahah. É muito legal relembrar, deste tempo, pois foi meu primeiro contato com o linux, e minha primeira “missão”.
Chega de história, vamos ao processo simples de criar vários ips em uma mesma placa de rede.
Você pode digitar os comandos na mão, mas quando reiniciar perderá. Para isso recomendo criar um arquivo para nós guardar nossos alias, após colocaremos para iniciar com o sistema. Lets go!
Para ficar mais organizado, criamos uma pasta em etc onde iremos gravar todos nossos arquivos.
# mkdir /etc/gerenciamento
# cd /etc/gerenciamento
# vim alias.sh
Agora vamos adicionar 5 ips na nossa mesma placa de rede.
ifconfig eth0:1 192.168.1.1 netmask 255.255.255.0
ifconfig eth0:2 192.168.2.1 netmask 255.255.255.0
ifconfig eth0:3 192.168.3.1 netmask 255.255.255.0
ifconfig eth0:4 192.168.4.1 netmask 255.255.255.0
ifconfig eth0:5 192.168.5.1 netmask 255.255.255.0
Vamos executa-lo:
# sh alias.sh
Confira se os mesmo foram criados:
# ifconfig
Se tudo ocorreu certo, você terá um resultado parecido com isso:
eth0:1 Link encap:Ethernet Endereço de HW 00:0f:b0:3b:a6:26
inet end.: 192.168.1.1 Bcast:192.168.1.255 Masc:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Métrica:1
IRQ:19 Endereço de E/S:0xa000
…
Para baixar uma interface alias, use o comando:
# ifconfig eth0:4 down
Próximo passo era liberar então a navegação. Vamos ao firewall, dentro de nossa pasta gerenciamento, vamos criar um arquivo onde vamos guardar os ips dos clientes, mac, nome e situação. [ip do pc na rede],[MAC],[Comentário],[AT para ativos BL bloqueados]
# vim ipXmac.lst
192.168.1.2,00:0E:2E:D9:48:C0,MICRO-01,AT
192.168.2.2,00:4F:62:04:0E:FD,MICRO-02,AT
192.168.3.2,00:05:9E:86:CF:23,MICRO-03,BL
Pronto, no exemplo acima cadastramos 3 pc, altere os dados de acordo com as suas. Próximo passo é nosso firewall.
# vim firewall.sh
Nele vamos adicionar o seguinte, o script esta comentado para você entende-lo:
#! /bin/sh
# - - - - - - - - - - - - - - - #
# Script por Rudimar Remontti #
# www.remontti.com.br #
# - - - - - - - - - - - - - - - #
echo -n 'Carregando Firewall... '
#- - - - - - - - - - - - - - - -
# Compartilha Conexão
echo "1" > /proc/sys/net/ipv4/ip_forward
# - - - - - - - - - - - - - - -
# Limpa regras
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -X -t nat
/sbin/iptables -F -t mangle
/sbin/iptables -X -t mangle
# - - - - - - - - - - - - - - -
# Carrega modulos
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
# - - - - - - - - - - - - - - -
# Ativando Controle de Ip x MAC
# Liberando acesso a conexao para clientes ativos (AT) ou bloqueia (BL)
# Aqui nossa variável onde ira ler nossa lista de clientes cadastrados.
ARQUIVO=`cat /etc/gerenciamento/ipXmac.lst`
ip="
$ARQUIVO
"
for rede in `echo $ip`;do
# Capturando os dados do arquivo ipXmac.lst
ip=`echo $rede | cut -d , -f 1`
mac=`echo $rede | cut -d , -f 2`
nome=`echo $rede | cut -d , -f 3`
estatu=`echo $rede | cut -d , -f 4`
# Consultamos os clientes ativos (AT)
if [ $estatu = AT ]; then
# Liberar o nat para o ip
iptables -t nat -A POSTROUTING -s $ip/32 -j MASQUERADE
# Conferimos se o ip bate com o mac
iptables -t nat -A PREROUTING -s $ip -m mac --mac-source ! $mac -j DROP
echo -e "$nome IP: $ip [Ativo]"
# Consultamos clientes Bloqueados (BL)
elif [ $estatu = BL ]; then
# Aqui eu fazia uma coisa legal, liberava a navegação apanas para porta 80
iptables -t nat -A POSTROUTING -p tcp --dport 80 -s $ip/32 -j MASQUERADE
# mas direcionava,toda o trafego para um pc na porta 8080, onde
# eu tinha apache rodando, com um aviso que o cliente estava bloqueado.
iptables -t nat -A PREROUTING -p tcp -s $ip --dport 80 -j DNAT --to 10.0.0.1:8080
# e então bloqueava.
iptables -I FORWARD -s $ip -p tcp --dport ! 80 -j DROP
iptables -I INPUT -s $ip -p tcp --dport ! 80 -j DROP
echo -e "$nome IP: $ip [Bloqueado]"
else
echo "Erro na linha IP: $ip | MAC: $mac | NOME: $nome"
fi
done
echo
Demos permissão para execução, e rodamos ele.
# chmod 755 firewall.sh
# sh firewall.sh
Controlando o consumo da banda, (cbq) vamos a instalação do Shaper.
# aptitude install shaper
Os arquivo do shaper deve ficar em /etc/shaper/
# vim cbq-0002.NOME.in
DEVICE=eth1,10Mbit,1Mbit
RATE=100Kbit
WEIGHT=10Kbit
PRIO=5
RULE=192.168.1.2/24
BOUNDED=no
ISOLATED=no
# vim cbq-0003.NOME.out
DEVICE=eth1,10Mbit,1Mbit
RATE=100Kbit
WEIGHT=10Kbit
PRIO=5
RULE=192.168.1.2/24,
BOUNDED=no
ISOLATED=no
Neste exemplo criamos dois arquivos, controlando a banda de upload e download da classe 192.168.1.1
Device = Interface que esta escutando
Rate = Velocidade da banda
Weight = A velocidade de transferência (normalmente divide a velocidade por 8 ou 10)
Prio = Prioridade da banda (5 é um numero padrão)
Rule = Ip ou Classe (Adicionando uma virgula ao final, significará o controle de upload)
Bounded e Isolated = Se tiver em “no” o usuário pode usar a banda excedente
Vamos restartar o serviço.
# /etc/init.d/shaper stop
# /etc/init.d/shaper compile
# /etc/init.d/shaper start
ou
# /etc/init.d/shaper restart
Feito isso agora temos que colocar para iniciar com o sistema.
Crie um arquivo
# vim /etc/init.d/rc.inicializar
Nele adicione:
/etc/gerenciamento/firewall.sh
/etc/gerenciamento/alias.sh
Último passo, permissão, e inicialização.
# cd /etc/init.d/
# chmod 755 /etc/init.d/rc.inicializar
# update-rc.d rc.inicializar defaults 80
Isso ai! Espero que possa ser útil para alguém!
Vlw!