A intenção desse artigo é mostrar como funciona a configuração básica de um servidor Mikrotik integrado à um proxy Squid rodando em um servidor Linux. A distribuição Linux usada aqui é o Ubuntu Server 10.04.
A solução mostrada é simples e pode ser modificada sem complicações, serve para provedores e empresas que queiram controlar o conteúdo acessado por seus funcionários.
O acesso dos usuários é monitorado e o Sarg se encarrega de montar os gráficos de acesso de cada usuário.
O que eu usei aqui para montar esse artigo:
Mikrotik 4.5
QoS, Firewall e Gateway de rede.
Ubuntu Server 10.04
Proxy Squid e geração de relatórios com Sarg.
Cliente Windows XP.
Segue a topologia real usada:
1. Configuração do Servidor Mikrotik
Interfaces
/ip address
add address=172.16.200.1/30 broadcast=172.16.200.3 comment=Proxy disabled=\
no interface=ether1 network=172.16.200.0
add address=187.50.250.248/29 broadcast=187.50.250.255 comment=Wan disabled=\
no interface=wlan1 network=187.50.246.248
add address=192.168.0.1/24 broadcast=192.168.0.255 comment=Clientes disabled=\
no interface=ether1 network=192.168.0.0
Cache DNS
/ip dns
set allow-remote-requests=yes cache-max-ttl=1w cache-size=2048KiB \
max-udp-packet-size=512 primary-dns=192.168.2.18 secondary-dns=\
200.153.0.68
/ip dns static
add address=172.16.200.1 disabled=no name=dns-cache ttl=1d
add address=192.168.0.1 disabled=no name=Clientes ttl=1d
Controle de banda
No exemplo estamos setando128k de upload e 256k de download para o Cliente do ip 192.168.0.100.
/queue simple
add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
0/0 max-limit=128k/256k name="Cliente teste" parent=none priority=8 \
queue=default-small/default-small target-addresses=192.168.0.100/32 time=\
0s-1d,sun,mon,tue,wed,thu,fri,sat total-queue=default-small
Firewall
Criar a lista de endereço dos clientes:
/ip firewall address-list
add address=192.168.0.0/24 comment="Clientes do Proxy" disabled=no list=\
clientes
Habilitar Connection tracking:
/ip firewall connection tracking
set enabled=yes generic-timeout=10m icmp-timeout=10s tcp-close-timeout=10s \
tcp-close-wait-timeout=10s tcp-established-timeout=1d \
tcp-fin-wait-timeout=10s tcp-last-ack-timeout=10s \
tcp-syn-received-timeout=5s tcp-syn-sent-timeout=5s tcp-syncookie=no \
tcp-time-wait-timeout=10s udp-stream-timeout=3m udp-timeout=10s
Nat para o servidor Linux:
/ip firewall nat
add action=masquerade chain=srcnat comment="Nat para Linux" disabled=no \
src-address=172.16.200.0/30
Regra da marcação de rota para os pacotes que irão para o Proxy:
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Fluxo para o Proxy" \
disabled=no dst-port=80 new-routing-mark=Proxy passthrough=no protocol=\
tcp src-address-list=clientes
Rotas
/ip route
add comment="" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\
172.16.200.2 routing-mark=Proxy scope=30 target-scope=10
add comment="" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\
187.50.250.249 scope=30 target-scope=10
2. Configuração do Servidor Linux
Falta agora configurar o Ubuntu Server, vamos lá:
Estou partindo do princípio que você já instalou o Ubuntu Server, não vou abordar instalação de Sistema para simplificar o artigo.
Iremos instalar os aplicativos necessários
Configuração inicial:
Endereço ip e rota
# ifconfig eth0 172.16.200.2/30
# route del default
# route add default gw 172.16.200.1
DNS
# echo nameserver 172.16.200.1 > /etc/resolv.conf
Instalação do squid 3:
# aptitude update
# aptitude install squid3
Acesse o diretorio do squid3:
# cd /etc/squid3
Renomeie o seu squid.conf original:
# mv squid.conf squid.conf_original
Crie um novo squid.conf com o VI:
# vi squid.conf
Copie e cole o modelo abaixo:
------------------------------------------------------------------------------------------------------------------------------
http_port 3128 transparent
visible_hostname Brasil_Net
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
# Caminho da pagina de erro em Portugues
error_directory /usr/share/squid3/errors/Portuguese
# Faixa de ip's da sua rede que serao permitidos:
acl clientes src 192.168.0.0/255.255.255.0
# Local dos arquivos de log
cache_access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
# Tamanho do arquivo de cache:
maximum_object_size 80000 KB
# Diretorio onde sera armazenado o cache das paginas:
# 10000 e o numero em Megabytes
cache_dir ufs /var/spool/squid3/ 90000 16 256
# Usuario que executa o servidor Proxy
cache_effective_user proxy
# habilita permissao pra rede definida e bloqueia acessos vindos de
# outros enderecos
http_access allow clientes
http_access deny all
-------------------------------------------------------------------------------------------------------------------------
Salve com ESC, :wq!
Pronto o squid.conf está montado, você pode modificar como quiser.
Iptables
Limpar as tabelas de regras do iptables:
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t filter -F
# iptables -t filter -X
# iptables -t mangle -F
# iptables -t mangle -X
Habilitar o roteamento:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Configurar o iptables no Linux para redirecionar as requisições http para o Squid:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Criando o script que vai inicializar esses comandos quando o Servidor for reinicializado:
# vi nat.sh
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Salve com ESC, :wq!
Dê permissão de execução:
# chmod +x nat.sh
Coloque esse script no diretório /etc/init.d/
# mv nat.sh /etc/init.d
3. Configuração da estação cliente
Configuração da interface de rede
Endereço IP: 192.168.0.100
Máscara de sub-rede: 255.255.255.0
Gateway: 192.168.0.1
DNS Primário: 192.168.0.1
Faça o teste de navegação, enquanto a página carrega vamos monitorar o log do Squid.
No seu terminal do Ubuntu entre com o seguinte comando:
# tail -f /var/log/squid3/access.log
A saída deve ser parecida com essa:
Repare onde eu marquei, é onde o Squid marca o seu IP, o tipo de requisição (GET) e a url acessada, que nesse caso é UOL - O melhor contedo, não se preocupe que o Sarg faz esse papel e gera os relatórios tudo bonitinho.
4. Instalando o SARG
# aptitude install sarg
Entre no diretório do Sarg e edite o arquivo de configuração:
O diretório pode ser /etc/sarg ou /etc/squid, para mudar isso somente se instalar na mão a partir dos fontes.
# vi sarg.conf
Alterei as seguintes linhas de acordo com minhas preferências:
Linha 29: language Portuguese
Linha 48: title "Relatorio de Acessos do Squid"
Linha 143: output_dir /var/www/squid-reports
Comando para gerar o relatório:
# sarg -f /etc/sarg/sarg.conf
Relatório gerado! Verificando:
# cd /var/www/squid-reports/
# ls
Ele me retornou isso:
2010Sep25-2010Sep26 images index.html
Ele cria um diretório para cada dia, no meu caso tenho somente o do dia 25/09 que criei agora.
Caso você queira um relatório para o mês todo pode usar a opção "-d".
# sarg -f /etc/sarg/sarg.conf -d 01/09/2010-30/09/2010
Vamos criar o script que vai gerar esse relatório todo dia, iremos coloca-lo no cron.daily:
# vi sarg_diario.sh
#!/bin/bash
# Gera relatórios diários para o SARG
DIA=`date +%d`
MES=`date +%m`
ANO=`date +%Y`
/usr/bin/sarg -f /etc/sarg/sarg.conf -d $DIA/$MES/$ANO
Salve com ESC, :wq!
Dê permissão de execução:
# chmod +x sarg_diario.sh
Salve esse script no diretório /etc/cron.daily.
Você consegue visualizar as páginas do Sarg pelo navegador de internet acessando da seguinte maneira:
http://172.16.200.2/squid-reports
Se o ip do seu servidor for diferente é só trocar.
http://3.bp.blogspot.com/_VOhxpd-Xu2.../s640/sarg.JPG
http://2.bp.blogspot.com/_VOhxpd-Xu2...s640/sarg3.JPG
Pronto o sistema está configurado, só executar os testes agora, se algo der errado por favor releia todos os passos.
E, por fim, segue um vídeo para download demonstrando o funcionamento disso: mk_squid.wmv - 4shared.com - file sharing - download movie file
Por enquanto é só pessoal, abraço!