Você está na página 1de 5

UnderLinux

Como Montar um Servidor Proxy/Cache


Autoria de
11 de novembro de 2005

Este artigo mostra de maneira fácil e simplificada o passoa a passo para criação de um Servidor com Proxy feito pelo
squid.
Para implementarmos esta solução utilizei como base o Red Hat 9.0 ou mesmo o Conectiva 8.
Este artigo reúne de maneira simplificada os passos a seguir, para montagem de um Servidor com Proxy/Cachê.

Não estarei abordando a instalação do Sistema Operacional, estarei considerando o mesmo já instalado, apenas
colocarei algumas considerações importantes.
A instalação do Linux deve ser básica, e em modo personalizado. O sistema de particionamento deve ser o seguinte:
(Estamos considerando um H.D. de 20 Gb)
- swap – 512 Mb
- /boot – 75 Mb
- / - O restante do HD

Durante a instalação será pedido os IPs das interfaces de rede. Deixe a eth1 para o IP da internet e a eth0 o IP de sua
rede interna. Na eth1 defina o IP, o gateway, a máscara de sub-rede e os endereços de DNS do seu provedor. Já para
eth0 vamos colocar como IP, 192.168.0.1 e máscara de sub-rede 255.255.255.0, o restante deixaremos em branco.

Concluída a instalação do Sistema Operacional devemos plugar o cabo que vem da rede interna na interface eth0 (Utilize
o comando mii-tool para identificar se houve link nas mesmas) e o cabo que vem do seu roteador, ou mesmo medem,
na eth1.

Bom, agora teremos que colocar Internet no servidor, afim de atualizarmos alguns pacotes e baixarmos outros.
Devemos adicionar a rota padrão para o gateway, para isso utilizaremos o seguinte comando:

#route add –net default gw

Devemos agora, ativar o repasse de pacotes do kernel

Edite o arquivo sysctl.conf, que se encontra em: /etc/sysctl.conf

#vi /etc/sysctl.conf

Altere a linha net.ipv4.ip_forward = 0, para o valor 1, ficando assim: net.ipv4.ip_forward = 1.

Depois dessas alterações você terá que pingar para fora. Dê um ping www.underlinux.com.br, verifique se houve
respostas, caso contrário, cheque suas configurações DNS, no arquivo resolv.conf, que se encontra em /etc/resolv.conf.
Caso não esteja setado os endereços de DNS, edite o arquivo e adicione as seguintes linhas:

nameserver 200.xxx (DNS Primário ou pincipal)


nameserver 200.xxx (DNS Secundário ou alternativo)

Passaremos agora a baixar os aplicativos para construção do Servidor, os mesmos devem ser baixados da Interrnet afim
de termos os pacotes mais atualizados. Para isso, teremos que instalar o APT, software que irá nos auxiliar no
processo de instalação dos aplicativos.

Para o Red Hat 9.0, iremos baixar o APT da seguinte maneira:

#wget http://ftp.freshrpms.net/pub/freshrpms/redhat/9/apt/apt-0.5.5cnc6-fr1.i386.rpm

Após baixá-lo, iremos descompactar o arquivo.

#rpm –ivh apt-0.5.5cnc6-fr1.i386.rpm


(Estamos considerando que o pacote baixado é rpm).

Agora que o aplicativo APT encontra-se instalado, iremos atualizar a árvore de pacotes

#apt-get update

Vamos agora, fazer a instalação do aplicativo Squid, que é responsável pelo funcionamento do Proxy/Cache.

http://www.underlinux.com.br Powered by Joomla! Gerado em: 26 July, 2006, 14:22


UnderLinux

#apt-get install squid


(Qualquer outra instalação de pacotes, pode ser feita seguindo esse procedimento, apenas substituindo o squid, pelo
aplicativo a ser instalado).

Vamos agora acessar o diretório do squid, para realizarmos as configurações necessárias


O arquivo de configuração do squid, squid.conf, encontra-se no diretório /etc/squid.
Acesse esse diretório. Dentro dele vamos criar outro para colocarmos as blacklists. (Conjunto de palavras que serão
recusadas para o squid).

Crie um diretório chamado bloqueados.

# mkdir bloqueados

Dentro desse diretório, iremos criar os seguintes arquivos, block.txt, unblock.txt


Para criar os arquivos, dê o seguinte comando:

#touch block.txt
#touch unbloc.txt

No arquivo block.txt serão adicionadas todas as palavras proibidas de serem acessadas. Já no arquivo unblock.txt,
serão adicionadas as exceções.

Agora passaremos para a configuração do squid propriamente dito.

O squid.conf é um arquivo que vem com muitos comentários em inglês, portanto iremos limpar o squid.conf, afim de
melhor compreendermos e trabalharmos com as regras do mesmo.
Antes da limpeza, faça uma cópia de segurança do squid.conf.

#cp squid.conf squid.conf.defaults

O comando para limpeza do squid.conf é o seguinte:

#egrep -v "^#|^$" squid.conf.defaults > squid.conf

Feito isso, vamos editar o squid.conf


Faça as mudanças no mesmo assim como segue o exemplo abaixo.

#Porta utilizada pelo squid


http_port 3128
#Nome do seu servidor (sem espaços)
visible_hostname nameserver.seudominio.com.br
#Memória utilizada para objetos em trânsito – Não mexer
cache_mem 64 MB
#Não altetar as linhas abaixo
maximum_object_size_in_memory 10 MB
maximum_object_size 10 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
#Local onde sera armazenado o cache do squid
#O valor 1000 indica a quantidade em Mb que o cachê do squid #irá utilizar. Como podem ver, criamos 6 partições de
cachê com 3Gb cada uma. Você adapta pro tamanho do seu HD.

cache_dir ufs /var/spool/squid/cache1 3000 16 256


cache_dir ufs /var/spool/squid/cache2 3000 16 256
cache_dir ufs /var/spool/squid/cache3 3000 16 256
cache_dir ufs /var/spool/squid/cache4 3000 16 256
cache_dir ufs /var/spool/squid/cache5 3000 16 256
cache_dir ufs /var/spool/squid/cache6 3000 16 256

#Local onde sera guardado os logs do squid


cache_access_log /var/log/squid/access.log
#Converte as mensagens geradas pelo squid par o Português
error_directory /usr/share/squid/errors/Portuguese
refresh_pattern ^ftp: 15 20% 2280
http://www.underlinux.com.br Powered by Joomla! Gerado em: 26 July, 2006, 14:22
UnderLinux

refresh_pattern ^gopher: 15 0% 2280


refresh_pattern . 15 20% 2280

acl all src 0.0.0.0/0.0.0.0


acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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 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

#Definiremos aqui as regras para bloqueio dos sites pelas #palavras adicionadas no arquivo block.txt
acl blockedsites url_regex -i "/etc/squid/bloqueados/block.txt"
acl unblockedsites url_regex -i "/etc/squid/bloqueados/unblock.txt"
http_access deny blockedsites !unblockedsites

#Aqui você irá definir o IP da sua rede interna


acl redelocal src 192.168.0.0/24
http_access allow redelocal

http_access allow localhost

# Bloqueia navegacao. So libera pra faixa definida na "acl redelocal".


http_access deny all

# Proxy Transparente
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
--------------

Vale lembrar que os arquivos block.txt e unblock.txt devem ter conteúdo antes de inicializar o squid. No arquivo
block.txt coloque as palavras bloqueadas: sexo, pornô e etc. Já no arquivo unblock.txt você irá adicionar as exceções,
como por exemplo sexoesaude.

Vamos agora iniciar o squid, se tudo estiver configurado cerretamente, irá aparecer um OK, após o seguinte comando:

# service squid start

Bom, o proxy está pronto, não esquece de habilitar o squid na inicialização, caso você não saiba como, adicione a
seguinte linha no firewall que iremos criar.

#service squid start

Para criarmos o firewall, iremos criar um diretório dentro de etc, chamado firewall, e dentro do mesmo criaremos um
arquivo com o mesmo nome.
http://www.underlinux.com.br Powered by Joomla! Gerado em: 26 July, 2006, 14:22
UnderLinux

Dentro do diretório firewall, dê o seguinte comando:

#touch firewall

Agora iremos adicionar os módulos do kernel que deverão ser carregados na inicialização. Esses módulos serão adicionados
dentro do arquivo firewall.
Dê um vi firewall e coloque as seguintes linhas:

#! /bin/bash

echo " INICIANDO FIREWALL "

# Ativa modulos
# -------------------------------------------------------
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
echo "Carga dos Modulos OK!"

# Zera regras
# -------------------------------------------------------
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -F -t nat
/sbin/iptables -X -t nat
/sbin/iptables -F -t mangle
/sbin/iptables -X -t mangle
echo "Flush das regras OK!"

# Proxy Transparente
# -------------------------------------------------------
# Nessa linha iremos mascarar os pacotes de saída para internet.
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# Nessa regra iremos redirecionar todo tráfego da porta 80 da eth0 para a porta 3128 do squid.
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "Carga do Proxy Transparente OK!"

Salve o arquivo e dê permissão de execução para o mesmo, com o seguinte comando:

#chmod +x firewall

Agora teremos colocar a chamada a esse arquivo no arquivo rc.local, par ser inicializado junto com o sistema. O arquivo
rc.local encontrase em /etc/rc.d/rc.local
Acesse o mesmo (vi rc.local) e coloque a chamada para o firewall:

#/etc/firewall/firewall
(É a localização do nosso arquivo)

Após esse procedimento, reboot o servidor. Aguarde seu reinicio observando os processos, afim de verificar se não houve
nenhuma falha.
Proto!! Seu servidor com Cachê/Proxy está pronto.

As máquinas da rede interna devem ser configuradas da seguinte forma:

Endereço IP: 192.168.0.2 até 192.168.0.254


Máscara de Sub-rede 255.255.255.0
Gateway: será o IP da interface eth0 (rede interna) 192.168.0.1
DNS: Os DNS do seu provedor.

Quaisquer dúvidas, ou possíveis erros, por favor, postem no site.


http://www.underlinux.com.br Powered by Joomla! Gerado em: 26 July, 2006, 14:22
UnderLinux

Flávio Augusto Batistela

http://www.underlinux.com.br Powered by Joomla! Gerado em: 26 July, 2006, 14:22

Você também pode gostar