+ Responder ao Tópico



  1. #1
    Sempre na luta Avatar de jacksonezidio
    Ingresso
    Jun 2008
    Localização
    São Paulo - SP
    Posts
    208
    Posts de Blog
    1

    Post Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    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.





    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!

  2. #2

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    Amigo muito bom, mais me tira uma duvida, com as URL grandes o sarg da problema ? Pois eu utilizei o sarg e com o tempo começou a da erro, pois a url era muito grande.

  3. #3
    Sempre na luta Avatar de jacksonezidio
    Ingresso
    Jun 2008
    Localização
    São Paulo - SP
    Posts
    208
    Posts de Blog
    1

    Post Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    Citação Postado originalmente por mktguaruja Ver Post
    Amigo muito bom, mais me tira uma duvida, com as URL grandes o sarg da problema ? Pois eu utilizei o sarg e com o tempo começou a da erro, pois a url era muito grande.
    Boa pergunta, nunca tive esse problema.. vou dar fazer uns testes!
    Valeu abraço!

  4. #4

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    ok, o meu começa a da erro aparti do 5 dia. Pois as url era grande d+ e começa a da pau no sarg. Quando fazer uns teste ai nos da um feedback e me manda um MP. vlw

  5. #5

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    Amigo com hotspot , vc teria a configuração ?

  6. #6

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    Amigo é so você criar o hotspot, e no NAT você redireciona a porta 80 para a 3128, para disviar o trafego para o proxy.
    Citação Postado originalmente por jmathayde Ver Post
    Amigo com hotspot , vc teria a configuração ?

  7. #7
    Sempre na luta Avatar de jacksonezidio
    Ingresso
    Jun 2008
    Localização
    São Paulo - SP
    Posts
    208
    Posts de Blog
    1

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    Citação Postado originalmente por jmathayde Ver Post
    Amigo com hotspot , vc teria a configuração ?
    Não tenho nenhum tutorial que aborda o hotspot junto mas não tem segredo nenhum, se vc der uma olhada no fórum com certeza vc encontra!

    Abraço.

  8. #8

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    To um bom tempo olhando , mais nadinha nao acho um que realmente funcione sempre da algum tipo de problema , quando ativo para a rede hotspot ir pro cache , pufts depois de logar o cliente nao sai dolugar a tela fica branca , branca mesmo nao aparece erro nenhum so fica branca.

    Estava tentado fazer LB com o Hotspot ja desisti comprei um RB so pra LB funcionando por enquanto , mais estou com uma maquina parada para proxy pois nao consigo fazer osdois trabalharem bem


    Uso versao do MK 4.11

    Mesmo assim vou ficar procurando .


    Citação Postado originalmente por jacksonezidio Ver Post
    Não tenho nenhum tutorial que aborda o hotspot junto mas não tem segredo nenhum, se vc der uma olhada no fórum com certeza vc encontra!

    Abraço.

  9. #9

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    Isso mesmo amigo, você tem que ter uma rb para loadbalance, outro para hotspot e paralelo ao hotspot você ter o proxy.

    Para você desviar o trafego para o proxy você faz um dst-nat. Na aba extra você vai em hotspot e deixa auth, e na aba action você joga o ip do servidor e a porta do proxy.


    Citação Postado originalmente por jmathayde Ver Post
    To um bom tempo olhando , mais nadinha nao acho um que realmente funcione sempre da algum tipo de problema , quando ativo para a rede hotspot ir pro cache , pufts depois de logar o cliente nao sai dolugar a tela fica branca , branca mesmo nao aparece erro nenhum so fica branca.

    Estava tentado fazer LB com o Hotspot ja desisti comprei um RB so pra LB funcionando por enquanto , mais estou com uma maquina parada para proxy pois nao consigo fazer osdois trabalharem bem


    Uso versao do MK 4.11

    Mesmo assim vou ficar procurando .

  10. #10

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    to ate com medo de fazer isso kkk , mais vamos la , este forma nao tentei ainda .depois posto os resultados .

    so mais uma coisa ,e as regras criadas automaticamente pelo MK , nao influencia ? regras dinamicas que sao criadas pelo hotspot

  11. #11

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    bom tarde estou com um problema aqui na minha configuracao gostaria que os amigos se pudece me ajudace nessa caminhada , quando o mikrotik vai buscar as paginas no squid o navegador retorna
    ERROR

    The requested URL could not be retrieved

    gostaria de saber o que estou errando.


    tenho um mikrotik 3.30 com 3placas 1para o link , 1 para o proxy squid e 1 para os clientes de redes e um serve squid com uma placa de rede,

    o modelo do meu squid ta assim

    http_port 172.1.1.2:2608 transparent

    #hierarchy_stoplist cgi-bin ?
    #acl QUERY urlpath_regex cgi-bin \?
    #cache deny QUERY
    #acl apache rep_header Server ^Apache
    #broken_vary_encoding allow apache
    cache_mem 512 MB
    cache_swap_low 80
    cache_swap_high 85
    maximum_object_size 50 MB
    maximum_object_size_in_memory 256 KB
    cache_dir ufs /var/spool/squid 20000 16 256
    #access_log /var/log/squid/access.log squid
    acl all src all
    acl manager proto cache_object
    acl localhost src 127.0.0.1/32
    acl to_localhost dst 127.0.0.0/8
    acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
    acl localnet src 172.1.1.2/26 # RFC1918 possible internal network
    acl SSL_ports port 443 # https
    acl SSL_ports port 563 # snews
    acl SSL_ports port 873 # rsync
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 443 # https
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl Safe_ports port 631 # cups
    acl Safe_ports port 873 # rsync
    acl Safe_ports port 901 # SWAT
    acl purge method PURGE
    acl CONNECT method CONNECT
    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow localnet
    http_access deny all
    icp_access allow localnet
    icp_access deny all
    #http_port 3128
    #hierarchy_stoplist cgi-bin ?
    access_log /var/log/squid/access.log squid
    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
    refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880
    refresh_pattern . 0 20% 4320
    acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9]
    upgrade_http0.9 deny shoutcast
    acl apache rep_header Server ^Apache
    broken_vary_encoding allow apache
    extension_methods REPORT MERGE MKACTIVITY CHECKOUT
    hosts_file /etc/hosts
    coredump_dir /var/spool/squid


    so que dar erro quando busco o cache no linux





    minhas regras no mikr



    nat
    chain =srcnat
    action= masquerade

    general
    chain = srcnat
    src.address= 10.1.1.0/26
    action=masquerade

    general
    chain=dstnat
    protocol=6 tcp
    dst port =80
    action=dst-nat
    to addresses=172.1.1.2
    to ports = 2608

  12. #12

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    Bom dia meus amigos, fiz tudo a risca e funcionou!!

    Só tem um problema, ele me mostra que só existe um usuariário que é o IP do Mk que vai para o Proxy.

    Tem como fazer o log mas mostrando os IPs da rede Interna?

  13. #13

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    Os erros que dao neste sistema . sobre as url grandes. e basicamento . nas pastas de log do squid. dentro da pasta var..... eles e que dao problema. .. tenho o sistema implantado aqui a 1 ano. e enquanto nao limitei o tamanho destes logs tive que muitas vezes refazer os servidores. vai uma dica. para quem usar o sistema. limite o cache em 1000 16 256 no seu squid para ele nao ficar lerdo. e tambem . a limpesa do cache ser mais rapida. e nao proporcionar muito relatorio o que fara que o squid pare por algumas vezes..

  14. #14

    Padrão Re: Mikrotik com Proxy Squid em Linux paralelo com geração de relatórios por IP

    Alou pessoal estou iniciando nesta conectividade do Mikrotik com o Squid, fiz todos os passos e navega normalmente, agora sites com https ele não abre dá erro o que pode ser???

    Valeu!!!