Este artigo é um resumo de "TCC Projeto Squid", pela qual juntamente com mais dois grandes amigos, Cristiano

e Gilberto, obtivemos o título de Bacharel em Ciência da Computação. Portanto espero que possa ajudar os demais amigos, seja como material de pesquisa ou idéias para possíveis soluções pertinentes ao proxy Squid.

Resumo
Este trabalho apresenta um estudo a respeito dos servidores Proxy e do desempenho do Squid, um servidor Proxy Livre, que possui características que o tornam um dos melhores. É feito um detalhamento a respeito de sua implementação e como ele é usado como servidor de Proxy e sistemas para esta finalidade. Apesar das operações do mesmo (contém um problema em específico que é o seu desempenho no recebimento de um número elevado de requisições), este é o objetivo deste trabalho, onde apresentamos soluções para a resolução desta deficiência.

Sumário
1. Introdução 2. Objetivo 3. Estrutura 4. Proxy
o o o o o o o o o o o o o o o o o o o

Origem do Proxy Tipos de Proxy Squid Delegate Oops Dansguardian Principais Características dos Proxy Proxy Transparente Proxy Controlado Proxy Transparente X Proxy Controlado Vantagens do Proxy Transparente Desvantagens do Proxy Transparente Vantagens do Proxy Controlado Desvantagens do Proxy Controlado Arquitetura do Proxy Cache Autenticação Listas de controles de acesso Proxy para SSL

5. Squid
o o o o o o o o o

Características do Proxy Squid Restrições de acesso Arquivo de configuração Função do Proxy Squid Progresso do Squid Tipos de protocolos Proxy transparente no Squid Listas de controle de acesso Squid como servidor

o o o o

Estrutura de Hardware Tags Referências de conexão Vantagens

6. Conhecendo algumas soluções
o o o o o

Configuração HDparm Banco de Dados Alteração do Código fonte Compilação do Kernel

7. Aplicando a solução escolhida
o o o o o o o o o

A escolha Desenvolvendo a solução Detalhamento do processo Introdução ao Perl Características do Perl Introdução ao PostgreSQL Outras soluções aplicadas HDparm Kernel

8. Conclusão 9. Lista de anexos 10. Referências

no português do Brasil) relativamente à periferia. Browser: (também conhecido como web browser) é um programa que habilita seus usuários a interagirem com documentos HTML hospedados em um servidor Web. caso haja algum problema.Sistema de Nomes de Domínios): É um sistema de gerenciamento de . interno a um sistema. Cache: É um dispositivo de acesso rápido. CGI (Common Gateway Interface): Consiste numa importante tecnologia que permite gerar páginas dinâmicas permitindo a um navegador passar parâmetros para um programa alojado num servidor web. DNS (Domain Name System . uma tecnologia de comunicação de dados que permite uma transmissão de dados mais rápida através de linhas de telefone do que um modem convencional pode oferecer. É normalmente uma lista de princípios com os tipos de acesso definido para cada usuário ou grupo. A vantagem principal na utilização de uma cache consiste em evitar o acesso ao dispositivo de armazenamento . espinha dorsal) designa o esquema de ligações centrais de um sistema mais amplo. o ISP encarrega-se de fazer o routing para a Internet.Lista de siglas e abreviaturas ACL (Access Control List ou Lista de Controle de Acesso): definida pela área de ciência da computação como uma lista que define quem tem permissão de acesso a certos serviços. A partir desse momento. tipicamente de elevado débito (velocidade.que pode ser demorado .e que vale a pena armazenar as informações procuradas em meio mais rápido. que serve de intermediário entre um operador de um processo e o dispositivo de armazenamento ao qual esse operador acede. ADSL (Asymmetric Digital Subscriber Line): é um formato de DSL. Dial-up: É um tipo de acesso à Internet no qual uma pessoa usa um modem e uma linha telefônica para se ligar a um nó de uma rede de computadores do ISP. Isso é para quem um servidor deve permitir ou negar determinada tarefa. Backbone: No contexto de redes de computadores. Backup: Refere-se à cópia de dados de um dispositivo para o outro com o objetivo de posteriormente os recuperar (os dados). o backbone (traduzindo para português.

Expressão regular: Um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras.Linguagem de Formatação de Hipertexto): Trata-se de uma linguagem de marcação utilizada para produzir páginas na Internet. Firewall: É o nome dado ao dispositivo de rede que tem por função regular o tráfego de rede entre redes distintas e impedir a transmissão de dados nocivos ou não autorizados de uma rede a outra. . Dentro deste conceito incluem-se. Gopher: É um protocolo de redes de computadores que foi desenhado para indexar repositórios de documentos na Internet. já que serve de intermediário também. separar domínios de colisão. De modo geral são documentos de texto escritos em códigos que podem ser interpretados pelos browsers para exibir as páginas da World Wide Web. como roteadores.MAC) do modelo OSI. FTP (File Transfer Protocol . Os hosts variam de computadores pessoais a supercomputadores.nomes hierárquico. Gateway: É uma máquina intermediária geralmente destinada a interligar redes. A Ethernet foi padronizada pelo IEEE como 802. sendo uma das mais usadas na internet. HTML (HyperText Markup Language . É um meio preciso de se fazer buscas de determinadas porções de texto. Um Proxy também pode ser interpretado como um gateway (embora em outro nível. Ela define cabeamento e sinais elétricos para a camada física.Protocolo de Transferência de Arquivos): É uma forma bastante rápida e versátil de transferir arquivos. ou mesmo traduzir protocolos. Host: É qualquer máquina ou computador conectado a uma rede.3.baseada no envio de pacotes. FDDI e ARCNET. A partir dos anos 90. e formato de pacotes e protocolos para a camada de controle de acesso ao meio (Media Access Control . os filtros de pacotes e Proxy de protocolos. Ethernet: É uma tecnologia de interconexão para redes locais . ela vem sendo a tecnologia de LAN mais amplamente utilizada e tem tomado grande parte do espaço de outros padrões de rede como Token Ring.Local Area Networks (LAN) . já que ambos servem de intermediários entre o utilizador e a rede. aquele da camada em que opera). dentre outros equipamentos. geralmente. Exemplos de gateway podem ser os routers (ou roteadores) e firewalls.

IMAP (Internet Message Access Protocol): É um protocolo de gerenciamento de correio eletrônico superior em recursos ao POP3 . discos. numa tradução literal. ou ICP-Brasil. bem como se responsabilizando pela emissão de tais certificados. baseando-se no princípio da terceira parte confiável. impressoras. assumindo-se então como a parte confiável destas transações. sons e textos). O mesmo transfere dados de hiper-midia (imagens. cerne. A infra-estrutura de chaves públicas do Brasil é a Infra-Estrutura de Chaves Públicas Brasileira. sendo responsável por gerenciar os recursos do sistema computacional como um todo. Link: É uma referência num documento em hipertexto a outro documento ou a outro recurso. IP (Internet Protocol .protocolo que a maioria dos provedores oferece aos seus assinantes. tais como "e-mail".HTTP (HyperText Transfer Protocol . agregando a ele outros serviços relacionados. Resumidamente. É no kernel que estão definidas funções para operação com periféricos (mouse. A última versão é o IMAP4. Esse é o protocolo da World Wide Web (www).Protocolo de Transferência de Hipertexto): É um protocolo da camada de "Aplicação" do modelo OSI. utilizado para transferência de dados na World Wide Web. ISP (Internet Service Provider): Oferece principalmente serviço de acesso à internet. o kernel é um conjunto de programas que fornece para os programas de usuário (aplicativos) uma interface para utilizar os recursos do sistema. . ICP (Infra-estrutura de Chaves Públicas): Uma Infra-Estrutura de Chaves Públicas é um órgão ou inciativa pública ou privada para a organização de uma estrutura de emissão de chaves públicas. gerenciamento de memória. utiliza a porta 80 e é usado para a comunicação de "sites". interface serial/interface paralela). Ele representa a camada mais baixa de interface com o Hardware. entre outros. Algumas de suas características são: geralmente este protocolo. oferecendo uma mediação de acreditação e confiança em transações entre partes que utilizam certificados digitais. "hospedagem de sites" ou blogs. entre outros. ICQ: É um programa de comunicação instantânea pela Internet que foi o mais popular durante anos. O mais interessante é que as mensagens ficam armazenadas no servidor e o internauta pode ter acesso a suas pastas e mensagens em qualquer computador.Protocolo de Internet): É um protocolo usado entre duas máquinas em rede para encaminhamento dos dados. Kernel: É entendido como o núcleo do Sistema Operacional ou.

Geralmente os sistemas computacionais solicitam um login e uma senha para a liberação do acesso. com a finalidade de duplicação (redundância. Logs: É o termo utilizado para descrever o processo de registro de eventos relevantes num sistema computacional. SMTP (Simple Mail Transfer Protocol): É o padrão de fato para envio de e-mail através da Internet. NAT (Network Address Translation): Também conhecido como masquerading é uma técnica que consiste em reescrever os endereços IP de origem de um pacote que passam sobre um router ou firewall de maneira que um computador de uma rede interna tenha acesso ao exterior (rede pública). NFS (Network File System): É um modelo de sistema de arquivos. NNTP (Network News Transfer Protocol): É um protocolo da internet para grupos de discussão da chamada usenet. SCSI (Small Computer System Interface): A tecnologia SCSI foi criada para acelerar a taxa de transferência de dados entre dispositivos de um computador.Conjunto Redundante de Discos): É um meio de se criar uma unidade virtual composta por vários discos individuais. SSL (Secure Sockets Layer): É um protocolo criptográfico que provêem comunicação segura na Internet . que tem como função centralizar arquivos em um servidor. desde que tais periféricos sejam compatíveis com o padrão. formando assim um diretório virtual. OSI (Open Systems Interconnection): É um conjunto de padrões ISO relativo à comunicação de dados. MIME (Multipurpose Internet Mail Extensions): É uma norma da Internet para o formato das mensagens de correio eletrônico.Login: É um conjunto de caracteres solicitado para os usuários que por algum motivo necessitam acessar algum sistema computacional. recuperação de falhas) ou balanceamento (operações I/O em paralelo). RAID (Redundant Array of Independent Disks . POP (Post Office Protocol (POP3)): É um protocolo utilizado no acesso remoto a uma caixa de correio eletrônico.

uma vez que são numerosos os fatores que envolvem uma única transação Web. ou uma rede corporativa. tendo uma marca de início e outra de fim. alguns métodos podem ser adotados como a utilização de um servidor mais rápido. A versatilidade e robustez deste protocolo tornou-o adequado para redes globais. tamanho do documento. roteadores. URL (Universal Resource Locator . TCP (Transmission Control Protocol): É um dos protocolos sob os quais assenta o núcleo da Internet nos dias de hoje. switches. WEB: É uma rede de computadores na Internet que fornece informação em forma de hipertexto. 255). navegação por páginas. O número de usuários que se conectam na rede cresce de forma acentuada. na seqüência apropriada e sem erros. já que este verifica se os dados são enviados de forma correta.Localizador Universal de Recursos): É o endereço de um recurso. TTL (Time to Live): Significa o número de máquinas que os pacotes podem demorar numa rede de computadores antes de serem descartados (máx. etc) de forma que se aumente a banda. Introdução A popularização da Web1 tem provocado sérios problemas de desempenho nos acessos à Internet. de forma que a redução do tempo tem se tornado um fator extremamente relevante.para coisas como e-mail. Alternativas como o cache de páginas Web. O tempo para se recuperar um documento Web depende de determinados fatores (tipo de conexão. localização do mesmo). como o serviço de entrega que o IP dá. disponível em uma rede. espelhamento de arquivos entre outros têm sido aplicados para resolver determinadas situações inerentes à rede. Tag: São estruturas de linguagem de marcação que consistem em breves instruções. e outros tipos de transferência de dados. baseado em TCP. UDP: Dá às aplicações acesso direto ao serviço de entrega de datagramas. uma intranet. . Telnet: É um protocolo cliente-servidor de comunicações usado para permitir a comunicação entre computadores ligados numa rede. seja a Internet. pela rede. isto além de não ser economicamente viável. pode não resolver o problema. Para minimizar as conseqüências deste crescimento. Contudo. alteração dos meios físicos (cabos.

Assim. controle de conteúdo. etc) são requisitados mais de uma vez. fotos. bloqueando assim requisições consideradas impróprias a política adotada. imagens e arquivos da Internet. Se este tem a cópia e ela não expirou. Este filtro é usado para permitir ou negar o acesso à Internet ou a determinados sites. Uma das funções do Proxy é denominada de Filtro. haverá o que chamamos de conceito cache miss. arquivos. Se a página URL1 não é encontrada. O filtro podem conter regras simples baseados em uma lista de páginas Web. 2HTML: É um dispositivo de acesso rápido. ele a requisita para o servidor Proxy local. Caso esta não esteja no cache. eles podem ser configurados para se conectar a um servidor Proxy. porque muitos deles (páginas Web. entretanto. podem melhorar a qualidade do serviço fornecido aos usuários. ou seja. redes e URL do objeto requisitado.O procedimento de implantação de um sistema de cache de navegação que armazene localmente objetos como páginas HTML2 (HyperText Markup Language). caracterizando desta forma o conceito de cache hit. caso contrário às requisições são atendidas de forma local. interno a um sistema. ou seja. Os servidores de Proxy ajudam a diminuir de forma significativa o tempo médio de acesso a páginas e a transferência de arquivos. mantendo uma cópia opcional em seu cache e enviando uma cópia para a máquina do usuário. Entretanto. Administradores podem criar regras conforme suas políticas de segurança para filtrar requisições baseadas no endereço IP2 (Internet Protocol) do cliente. 1Web: Rede de computadores na Internet que fornece informação em forma de hipertexto. exceto na primeira vez estas requisições são feitas remotamente. que serve de intermediário entre um operador de um processo e o dispositivo de armazenamento. bem como conter regras mais complexas. ele entrará em contato com o servidor remoto e fará a transferência. De uma forma geral os visualizadores de páginas Web conhecidos como browsers fazem conexão direta com os servidores remotos. o browser primeiramente verifica seu cache local. . Tais funcionalidades são usadas principalmente em escolas e em organizações que utilizam o critério de permissão para o acesso a páginas que realmente sejam de seu interesse. domínios. neste caso. as páginas são carregadas direto do servidor que estão hospedadas. ele a retorna imediatamente. quando um usuário requisitar uma página.

disponível em uma rede. ou uma rede corporativa ou uma intranet. Estrutura Para atingir este objetivo o trabalho foi estruturado da seguinte forma: • • • • Proxy. Squid. O seu desempenho se torna crítico quando a quantidade de usuários conectados ao Proxy é grande e ao carregar uma black-list muito grande que leva ele a travar. pois a cada demanda de processos é necessário ajustar o hardware. .1URL: É o endereço de um recurso. Objetivo O objetivo deste trabalho é a implementação e a otimização do Proxy Squid que apesar de funcionar de uma forma completa e atender determinadas necessidades apresenta um fator relevante. que é o seu desempenho quanto ao processamento de requisições ACL1 (Access Control List). O Squid possui esta deficiência. Conhecendo algumas possíveis soluções. 1. é necessário disponibilizar um computador mais potente o que acaba onerando os custos significativamente. o que estamos propondo é minimizar esta situação aplicando soluções que são a melhora do programa do Squid como um front-end ideal para a solução e também melhorando a entrada e saída do disco rígido. e aplicando uma configuração ideal para o hardware diretamente no kernel influenciando diretamente no desempenho do mesmo e diminuindo a sobrecarga da memória efetuada durante o trabalho do Proxy. Aplicando a solução escolhida. e para compensar tal situação. seja a Internet. 2IP: É um protocolo usado entre duas máquinas em rede para encaminhamento dos dados. ACL: É normalmente uma lista de princípios com os tipos de acesso definido para cada usuário ou grupo. a partir desta quantidade ele passa a consumir um valor considerável de memória.

ou seja. RAM: Randomic Access Memory 2. com pelo menos suporte à HTTP2. HTTP: É um protocolo da camada de "Aplicação" do modelo OSI. Tipos de Proxy Existem vários softwares diferentes com as características de Proxy. Geralmente. Delegate.Origem do Proxy O Proxy surgiu da necessidade de conectar uma rede local à Internet através de um computador da rede que compartilha sua conexão com as máquinas da rede. por sua vez. não têm uma conexão direta com a Internet. FTP: É uma forma bastante rápida e versátil de transferir arquivos. Dentre os vários Proxy existentes para o sistema operacional Linux. repassando a resposta da solicitação para a máquina da rede local. como filtragem de controle de conteúdo e firewall. HTTPS3 e FTP4. com implementação de segurança. . máquinas da rede interna não possuem endereços válidos na Internet. realiza o contato com o host desejado. 1. sendo uma das mais usadas na internet. Assim. Conforme Peter (Thoeny 2002). outros mais especializados em otimização de cache em RAM1 ou disco rígido. este. primeiro pelo fato da segurança nas redes privadas e também devido à falta de IPs válidos. Dansguardian. alguns mais especializados em somente alguns protocolos. Oops entre outros. 3. a conexão com a Internet. toda solicitação de conexão de uma máquina da rede local para um host da Internet é direcionada ao Proxy. se considerarmos que a rede local é uma rede interna e a Internet é uma rede externa. conforme citado por Peter Thoeny (2002) destaca-se Squid. É comum termos o Proxy como conexão direta com a Internet. utilizado para transferência de dados na Internet. podemos dizer que o Proxy é quem permite que outras máquinas tenham acesso externo. outros com mais funcionalidades. portanto. HTTPS: É um protocolo da camada de "Aplicação" do modelo OSI. 4.

ou inconveniente. ineficiente. O Delegate interliga uma comunicação entre usuários e clientes. na qual possui vários programadores como desenvolvedores do projeto pelo mundo. NNTP2. ICQ: É um programa de comunicação instantânea pela Internet. IMAP4. LDAP: Serviço de rede que disponibiliza integração de senhas para qualquer serviço. 1. Para outros protocolos como correio eletrônico (SMTP2 e POP3) e ICQ4. onde uma comunicação direta é impossível. FTP e Gopher1. É geralmente disponibilizado por padrão pela maioria dos sistemas operacionais Linux. DNS8. baseado em TCP. LDAP6. de autoria de Yutaka Sato (2006). SMTP: é um protocolo relativamente simples. incluindo o HTTP. 2.Squid Foi originado de um projeto denominado Harvest entre o governo americano e a Universidade de Colorado. SSL9 e Socks10. baseado em texto simples. 1. 4. 3. LPR: É a porta de impressão em Linux. IMAP: É um protocolo de gerenciamento de correio eletrônico superior em recursos ao POP3 5.servidor de comunicações usado para permitir a comunicação entre computadores ligados numa rede. conforme Sato (2006). o Delegate é um Proxy Server 5multiplataforma com relays e vários protocolos de aplicação em TCP/IP ou em UDP/IP. Delegate Este também é um Proxy interessante. ICP7. Telnet: É um protocolo cliente. 3. POP: É um protocolo utilizado no acesso remoto a uma caixa de correio eletrônico. fornecendo todas as funcionalidades de um Proxy comum. SMTP: É o padrão de fato para envio de e-mail através da Internet. SMTP3. Telnet1. Atualmente é o Proxy mais popular e mais usado como controle de conteúdo. Permite atuar como Proxy para os protocolos HTTPS. HTTP. em que um ou vários destinatários de uma mensagem são especificados. 6. LPR5. 4. . NNTP: É um protocolo da internet para grupos de discussão da chamada usenet. sendo depois a mensagem transferida. 2. Gopher: É um protocolo de redes de computadores que foi desenhado para indexar repositórios de documentos na Internet. FTP.

• • Filtros de domínios ou URLs com um desempenho visivelmente superior a outras ferramentas. acesso. etc. • • • • • 1. 9. possui filtros com as seguintes características. Reconfiguração limpa em Sighup1 e sem sessões quebradas. é: • • • HTTP/1. . Arquivo de configuração e ACLs fáceis de ler e entender. filtragem de URL. relato de erros. Objetos são armazenados em arquivos grandes e sem esquema de objeto por arquivo. SSL: É um protocolo criptográfico que provêem comunicação segura na Internet para coisas como e-mail. Controle de largura de banda. Dansguardian É uma ferramenta capaz de filtrar acessos a Internet com base em diferentes critérios. trata-se de um poderoso Proxy com cache. novas configurações aplicadas a novas conexões. Surgiu como uma alternativa ao Squid. 8. embora.1 (ainda sem conexões persistentes) e FTP. Oops É um Proxy mais simples que os anteriores. Socks: é um protocolo de internet que permite que aplicações cliente-servidor usem transparentemente o serviço de uma rede ao firewall. e outros tipos de transferência de dados 10. Diversos tipos de módulos existem como geração de logs. Filtros baseados em frases associadas à pornografia ou consideradas inapropriadas. Suas principais características conforme (Cipriano 2006). Esses arquivos grandes podem ser dispositivos como (/dev/hda). ICP: Uma Infra-Estrutura de Chaves Públicas é um órgão ou inciativa pública ou privada para a organização de uma estrutura de emissão de chaves públicas. enquanto servem pedidos diretamente da rede. Armazenamentos em disco são checados em segundo plano. saída. DNS: É um sistema de gerenciamento de nomes hierárquico.7. Sighup: Define-se como a reinicialização de um processo sem a necessidade de reiniciar a máquina. navegação por páginas. conforme descrito por Silva (2006). Oops é leve. Ele está pronto para servir pedidos imediatamente após iniciado.

exe. existe uma ordem pré-estabelecida. Filtros por extensão de arquivos. aplica as restrições estabelecidas ou as exceções configuradas e.• • • Filtros por figuras ou por tipo de conteúdos (MIME1). 1. . No processamento interno de arquivos contendo proibições e exceções. uma vez que o objetivo deste trabalho é demonstrar os diversos tipos de aplicações para otimização do Proxy Squid. OpenBSD. . portanto é obrigatório o uso de um servidor Proxy para que a ferramenta seja implementada. consequentemente passa a utilizar muita memória e se torna lento demais sobrecarregando consideravelmente a rede. embora ele tenha sido citado neste trabalho por ser relevante suas funções. . pois quando o Squid utiliza uma base muito extensa (Black-list1). podendo ser instalado em sistemas operacionais Linux. Mac OSX e Solaris. Pois. MIME: É uma norma da Internet para o formato das mensagens de correio eletrônico. o filtro de conteúdo recebe as requisições do navegador do usuário.scr. Este faz o seu papel que é a intermediação entre o cliente e o servidor a ser acessado. Este filtro de conteúdo funciona em conjunto com qualquer Proxy. Apesar do Dansguardian não ter características de Proxy o mesmo foi citado apenas para fim de conhecimento. faz uma varredura do conteúdo de cada página acessada por seus usuários e não somente uma liberação ou proibição do nome do site ou da URL acessada. O Dansguardian não tem características de Proxy. passa a requisição para o Proxy. em seguida. como: . Filtro com características em que é possível bloquear ou limitar upload na Internet.dll. mas também como um efetivo filtro de conteúdos de páginas Web. NetBSD. FreeBSD. Nas soluções comumente encontradas no mercado. A ferramenta difere da maioria disponível no mercado pelo fato de não funcionar apenas como filtro de URL. etc. procurando a melhor solução para desempenho do mesmo tornando-o tão eficiente quanto o Dansguardian no processo de filtro de conteúdos.

e a sua configuração deve estar como padrão em todos os browser com o IP do servidor Proxy. Com o Proxy transparente não é preciso configurar o navegador como por exemplo o Internet Explorer ou o Firefox. 1. Assim. Isto é realizado através de configurações no roteador ou no firewall padrão da rede local. como Proxy Transparente e Proxy Controlado. Proxy transparente Nele é simplesmente feito um encaminhamento de pacotes vindos da Internet para uma máquina que esta na rede interna. sendo que a interface do modem é a interface de saída para Internet. é a interface de acesso às máquinas da rede local. Existem duas características principais de Proxy. geralmente um modem e uma interface Ethernet. ou seja listas de acesso previamente definidas. Mas um bom Proxy deve ainda prover várias outras funcionalidades complementares conforme Peter Thoeny (2002). enquanto a interface de rede. com ele também é possível implementar o controle de conteúdo com base em ACL (Access Control List). facilitando a administração da rede.Principais características dos Proxy Um exemplo muito comum de compartilhamento de Internet é baseado em um servidor Proxy com duas interfaces de rede. Proxy controlado Esta é uma característica dos softwares especializados em agir como servidores Proxy. sem necessidade de configuração. . na qual são definidos. Eles possuem certas opções que o Proxy Transparente para facilitar o controle de quem pode ou não utilizar o Proxy. O compartilhamento de Internet apresentado se refere ao serviço básico de um Proxy. de forma que toda solicitação de tráfego externo é direcionada para o Proxy. como o próprio Squid. o Proxy funciona de forma transparente para o usuário. Black-list: Arquivo contendo nome de sites proibidos. Conforme Thoeny (2002). conforme Martins (2006).

Vantagens do proxy transparente É mais simples de ser configurado quando já está habilitado no Kernel. • • • . isto sem dúvida é bem vindo em uma grande rede. Entre outras vantagens. Outro recurso do Proxy transparente é que ele funciona como uma maneira de bloquear acesso evitando que aqueles usuários mais espertos retirem as definições do Proxy de dentro do navegador. como um administrador de rede. E-mail. você pode fazer uso de outros serviços como: SSH. Como já dito anteriormente. Com a configuração do Proxy transparente. o uso do Proxy transparente força o cliente a passar pelo Proxy. vão existir casos em que um Proxy Transparente vai oferecer o suficiente para as regras de certa empresa e vão existir casos em que irão ser necessário as funções que somente um Proxy controlado pode oferecer. Programas como ICQ funcionam plenamente com ele e não precisa que as máquinas clientes sejam configuradas. Telnet. conforme citado por Martins (2006): • Não é necessário a configuração do navegador do cliente. todos os serviços ficam disponíveis aos seus clientes. Afinal de contas. logo o intermediário transparente é o Proxy onde não é necessário a configuração do navegador. vai ter que decidir qual tipo de Proxy utilizar e qual o melhor para a situação. ou seja.Proxy transparente X Proxy controlado Vantagens e desvantagens estão relacionadas com o seu tipo de caso. Configurado o Proxy transparente. o cliente é forçado a utilizar o Proxy. podendo assim visitar sites proibidos. lembrando que o Squid só trabalha com os protocolos HTTP e FTP. etc. quando não está habilitado no kernel o mesmo deve ser reinstalado com o suporte ativo para que seja usado. qual é a idéia de Proxy transparente? Sabemos que a tradução de Proxy para nossa língua é intermediário. Também é possível através do Proxy transparente fazer com que todo o acesso do cliente à Internet fique submetido ao Proxy. onde em uma situação hipotética você poderá ter uma empresa em que os administradores preferem colocar o IP do Proxy em cada máquina e também pode acontecer que em certos casos o administrador de departamento de informática deseja não colocar nenhuma informação nos navegadores dos usuários.

conforme Lima. o Proxy permite armazenar nele próprio as páginas visitadas com mais freqüência. ou seja. pode ser utilizado para uso com SSL. Desvantagens do proxy transparente Possui menos recursos que um Proxy Controlado. juntamente com a sua data. Caso o usuário. Precisa de configurações no Kernel e. o que o torna mais lento em uma rede. pois qualquer usuário das maquinas clientes podem remover as configurações de Proxy. Vantagens do proxy controlado Com ele você pode utilizar listas de controles de acesso (ACL's) para controlar quem usa e quem não usa o seu Proxy. o Proxy armazena o seu conteúdo em cache. Não possui nenhuma segurança de acesso e não possui um sistema de (caching). em alguns casos. e assim fica virtualmente impossível de sair para a Internet. Cache Conforme descrito por Thoeny (2002). possui um sistema de (caching). Desvantagens do proxy controlado Alguns programas como ICQ e o protocolo SMTP não funcionam muito bem com ele. principalmente. o Proxy obtém a data da página remota e caso não seja mais atual que a página que está em cache. solicite-a novamente. E outra particularidade é a sua falta de segurança quanto à estabilidade da conexão. pode servir para liberação de Internet mediante autenticação do usuário e. quando um usuário solicita um site na Internet. este fornece para o cliente a página em cache. possuindo um desempenho na rede geralmente melhor. sem a necessidade de baixar novamente a página . depois de um certo tempo.Com o Proxy transparente todas as requisições feitas á porta 80 são automática redirecionadas para a porta do Squid. no entanto não será possível a sua navegação. é necessária a recompilação do Kernel do sistema.

palavras-chave no conteúdo do site.solicitada. Proxy para SSL Permite que um navegador e um servidor Web estabeleça uma comunicação segura para realizar transações. as máquinas clientes precisam somente estar com os seus (gateway) padrões apontados para o servidor Proxy. etc. O SSL é uma camada de criptografia do protocolo HTTP. palavras-chave na URL. que faz operação de Proxy de Web e FTP. Os critérios conforme descrito por Thoeny (2002) podem ser expressos em regras baseadas no login. Listas de controles de acesso Também conhecidas como ACL's. Windows ou outros) acessem páginas Web e sites FTP através do servidor Linux. por isto quando utilizados em conjunto é chamado também de HTTPS (HTTP seguro). completamente livre e com excelente suporte para operação em servidores Linux. e fazer com que outras máquinas clientes (usando sistemas operacionais como: Linux. Com o Squid você pode instalar um servidor Linux com acesso à Internet. e com base nesta autenticação de regras estabelecidas pelas ACL o usuário poderá ter ou não acesso a página requisitada. . uma vez que o acesso em cache local é muito mais rápido que o acesso remoto. horário de acesso. Squid O Squid caracteriza-se em um software especializado. Esta funcionalidade aumenta bastante o desempenho de acesso às páginas. Autenticação Ao requisitar uma página será exibido uma caixa solicitando ao usuário um login e uma senha. permite que o administrador restrinja o acesso a determinados sites baseados em critérios estipulados em listas de controles.

Como em geral o Link entre as máquinas clientes e o servidor Proxy é de alta velocidade (rede local ethernet ou similar) e o link entre o Proxy e a Web é mais lento. O recurso que mais atrai atenção no Squid é o cache de páginas. entre as quais se incluem a segurança e o controle de acesso (através de mecanismos de restrição e de Log). você pode por exemplo definir que em uma escola alunos do laboratório (A) não podem acessar determinados sites. . Desse jeito pode-se criar restrições específicas em determinadas horas. e o protocolo HTTP tem recursos suficientes para reconhecer páginas que não devem ser guardadas no cache e precisam ser buscadas novamente a cada requisição. Devemos entender que um serviço de Proxy exige bastante memória e espaço em disco rígido. Restrições de acesso Você pode definir listas de controle de acesso baseado no endereço de destino ou na origem da requisição. O sistema deve ser dimensionado de forma adequada. de forma a não ter que buscar novamente na Internet uma página que tenha sido recentemente vista por outro usuário da mesma rede. Utilizando um script externo de filtragem você pode até mesmo criar regras baseadas no horário de acesso. é bastante interessante à possibilidade que o Squid oferece de armazenar localmente as últimas páginas acessadas. na qual se pode bloquear arquivos de vídeo e em outra tabela de horário pode-se permitir.O Squid dá acesso a serviços como HTTP. Mesmo em redes onde seria possível instalar IP (masquerading). por várias razões. Assim. que possuem o seu link Internet saturado com acessos a sites remotos que não estão relacionados à finalidade da sua rede e a possibilidade de definir listas de bloqueios para restrições destes acessos indevidos. Naturalmente você pode configurar o tempo de armazenamento de cada página no cache. enquanto que os alunos do laboratório (B) acessam sem restrições. HTTPS e FTP. Características do Proxy Squid O controle de acesso é uma das característica do Squid muito útil para administradores que lidam diariamente com grandes acessos públicos. muitos administradores optam por limitar o acesso direto das máquinas internas à Web.

mas de um modo geral todos eles têm suporte a Proxy. conforme Campos(2006). economizando assim a sua banda com o provedor de Internet. Cada navegador tem sua própria maneira de configurar conforme citado por Campos(2006). contata o site da Internet e transfere o arquivo ou página desejados. automaticamente ele muda a sua forma de operação. que. De acordo com Campos(2006).conf impediriam que qualquer pessoa da sua rede acesse sites. Sendo assim. ele terá a resposta mais rápida. entregando-os ao navegador que fez a requisição e armazenando uma cópia temporária no Cache. quando bem configurado. os computadores da rede local não precisam ter nenhuma forma de acesso direto à Internet para entrar na Web e usar o FTP. O Proxy. Ao configurar um navegador ou um aplicativo que estará utilizando um Proxy para estar conectando a Internet. normalmente o Proxy Squid exige alterações na configuração do seu navegador Web. cuja URL contenha a palavra playboy e sexo: acl porno url_regex playboy acl livre url_regex sexta http_access deny porno http_access allow livre http_access allow all Ao contrário de outras técnicas de conexão. as seguintes linhas no arquivo /etc/squid. você pode concentrar seus esforços de segurança e administração de rede na máquina que roda a Proxy. ele é fornecido a partir do cache. e caso outra máquina da rede solicite o mesmo documento. Ao invés de tentar contatar diretamente os servidores Web da Internet. como o roteamento simples e o IP (masquerading). por sua vez. Outra vantagem importante é o nível de controle oferecido. maximiza o aproveitamento do seu canal de conexão com a Internet. ele contata o Proxy e informa a ele a URL que deseja transferir.Por exemplo. O Squid permite criar regras avançadas de . Uma das maiores vantagens do Proxy sobre outras alternativas de conexão como o IP (masquerading) é a existência do cache. Se você tiver um Proxy baseado no Squid. caso algum outro computador da rede requisite a mesma página em um intervalo de tempo configurável. páginas HTML geradas estaticamente) solicitados por qualquer uma das máquinas da sua rede ficam armazenados também no servidor. que normalmente é de velocidade bem mais baixa do que a rede local que liga as máquinas clientes ao servidor Proxy. Os documentos estáticos (imagens.

o sistema é que faz solicitações em nome dos outros. ocupação de memória e quanto ao prazo de validade dos arquivos do cache são funções que estão definidas dentro do (squid. por exemplo. Estas regras podem variar de acordo com o horário. Quando ele entrar em operação. ou seja. As políticas de acesso. as rotas e interfaces de rede da máquina já devem estar ativadas. sem que para isto tenham uma ligação direta com esta. e liberem nos horários de menor demanda. Um servidor Proxy para o protocolo HTTP. Este conceito é chamado de . Arquivo de configuração A configuração do Squid fica gravada em um arquivo chamado (squid. Contudo. O servidor Proxy costuma ser instalado em uma máquina que tenha acesso direto à Internet. efetuados por quaisquer máquinas da rede. é muito útil armazenar localmente as páginas que foram solicitadas. o objetivo principal de um servidor Proxy é possibilitar que máquinas de uma rede privada possam acessar uma rede pública.restrição de acesso. possam ser otimizados. e outros ainda podem acessar qualquer site. podendo definir que determinados micros terão acesso irrestrito. rede local ou qualquer outra suportada pelo Linux de acordo com Campos (2006). Função do proxy Squid O Squid depende da infra-estrutura de sua rede. outros podem acessar apenas um determinado conjunto de sites. Visto que todas as solicitações de páginas efetuadas pelas máquinas da rede privada serão feitas através dele. pode ter outras funcionalidades implementadas.conf). sejam elas sobre uma linha discada.conf). é que este tipo de servidor é chamado de Proxy. uma conexão sob demanda discada. Justamente. por isto. uma conexão através de um roteador dedicado. geralmente no diretório (/etc ou /etc/squid) dependendo do sistema operacional usado. permitindo que os próximos acessos. como a Internet. Conforme definição de Andrade (2006). sendo que as demais efetuam as solicitações através desta. É possível restringir um determinado conjunto de sites cuja URL possua uma determinada palavra ou expressão regular. basta habilitar as funções neste arquivo. permitindo a criação de regras que restrinjam o tráfego no horário de expediente. pois é um procurador.

O Squid. evitando ter que baixá-la da Internet. Visto que não só é função do firewall trabalhar com o NAT (Network Address Translation). seu baixo custo. gerar relatórios. como também não faz sentido criar caches de e-mails pessoais e mensagens do ICQ. O Squid trabalha apenas com FTP. Podemos ainda citar a capacidade de clustering. mesmo que as . e o ICP para conversa entre servidores de cache. Para cada servidor ou cliente. O sistema é totalmente aberto. conforme Bastos (2006). além de adicionar novas características e ter uma excelente estabilidade em condições extremas.(caching). ICQ. é claro. Sua compatibilidade com várias plataformas e a imensa gama de software para analisar logs. possibilitando a sua otimização à nível de código fonte. cache de FTP e. Proxy transparente no Squid Proxy Transparente é um recurso muito útil para evitar que os usuários removam as configurações do Browser. transparent Proxy. a configuração do Squid precisa fornecer uma única porta sobre a qual o Squid irá enviar as requisições TCP ou ICP e ouvir as respostas. não configura acesso a e-mails. Tipos de protocolos O Squid busca por comunicação TCP (Transmission Control Protocol) e ICP ( Internet Cache Protocol) em portas específicas. Conforme Bastos (2006) os usuários serão obrigados a passar pelo Proxy. IRC. além da otimização via configuração. na qual a página é baixada imediatamente para o cliente a partir do servidor Proxy. Gopher e HTTP. O TCP é usado para comunicação entre webservers e clientes. melhorar o desempenho e adicionar seguranças providos pela comunidade open source. etc. combinados com ferramentas de administração simplificada e baseadas em Web agregam grande valor ao produto. Progresso do Squid O Squid está continuadamente melhorando sua performance.

Outra função essencial no Squid e o suporte a autenticação que para isso se usa um recurso chamado de (ncsa_auth).máquinas não estejam configuradas para tal. Algumas pessoas desejam trabalhar ao mesmo tempo com autenticação e Proxy transparente. horários e sites são configuradas em ACLs. . que é a alternativa mais simples. A ACL é muito útil. por isso a Acl que bloqueia os sites deve ser a primeira. por nos permitir trabalhar com níveis de acesso baseados em diversas informações. Ele está disponível junto com o Squid e pode ser implementado rapidamente. A ordem em que as ACLs aparecem é muito importante. principalmente em casos de bloqueio de sites ou limitação de banda. Todas as configurações de usuários. grupos. Não é incomum que em uma instalação do Squid algumas situações podem acontecer. Isso é possível de ser feito com uma interação entre o firewall e um CGI1. Extremamente recomendado. podemos fazer todas essas restrições. 1CGI: Consiste numa importante tecnologia que permite gerar páginas dinâmicas permitindo a um navegador passar parâmetros para um programa alojado num servidor web. Graças ao uso de ACLs e um pouco de conhecimento. pois ao ser feita uma configuração no arquivo fonte do Squid ele respeita a regra que vem primeiro ou o arquivo de bloqueio. Listas de Controle de Acesso O conceito de ACL (Access Control Lists) é utilizado no Squid para estar controlando o que cada usuário acessa no navegador. a gerência que não pode acessar determinados sites e os funcionários da fabrica que pode acessar apenas o site da empresa e de parceiros. como exemplo poderíamos citar a diretoria que pode acessar qualquer site. Experiências do grupo comprovam que usuários com um pouco mais de conhecimentos irão remover a configuração de Proxy. É a solução ideal para pequenas e médias instalações e redes com arquitetura de grupo de trabalho.

Para facilitar a vida dos usuários e do administrador. Se a leitura desse arquivo retorna um (allow) ou permitido . via de regra. Isso significa que se 10 usuários da sua rede tentarem acessar um mesmo site ao mesmo tempo. Uma ACL externa pode ser escrita em qualquer linguagem. sendo interessante averiguar exatamente o que irá precisar com base no plano de regras. então o acesso é liberado. Dessa forma todos terão seu Proxy reconfigurado dinamicamente em caso de mudanças. Existem diversos métodos de autenticação. chama-se (proxy.pac). Para controlar o acesso por usuários e grupos. a latência da mesma ou seja a perda de banda. Esse arquivo deve ser acessível via Web e. Caso contrário se for um (deny) o acesso é negado. A utilização de sistemas de cache. Ela deve sempre retornar um valor de confirmação para o (stdout) caso a condição seja satisfeita. conseqüentemente. podemos configurar o Squid como PDC. ou retornar um erro para o (stdout). conforme citado por (Reguly 2006). Crie um arquivo chamado (proxyauth) no compartilhamento NETLOGON de seu PDC (dê preferência ao primário). . reduzindo o tráfego na rede e. O (smb_auth) lê o arquivo (\netlogon\proxyauth) que por padrão e localizado no Linux. O recurso de ACL externas é muito útil para um tratamento melhorado de algum recurso que não é compreendido por ACLs normais. somente uma das conexões realmente irá ser feita a esse site. Esse arquivo deve conter unicamente a palavra (allow) e dê permissão de leitura para os grupos e usuários que deseja permitir o acesso. tem se mostrado excelentes para aliviar certos sintomas. e em um dos controladores de domínio previamente informado. Toda a idéia por trás de um sistema de (caching) é criar um grande banco de dados onde os sites mais populares ou acessados recentemente sejam armazenados para futuras consultas. sem a necessidade de intervenção em cada máquina. Isso é um enorme ganho de desempenho para seu backbone local e para o backbone do ISP1 onde o site está armazenado e também para o servidor que hospeda o mesmo. pois permite que você crie ACLs individuais e gere logs de qualidade bem superior. caso ela não seja satisfeita.Este é um recurso bem interessante para controle pessoal de usuários. Todas as outras 9 vão se aproveitar do primeiro acesso e utilizar a página já em memória. podemos criar um arquivo de configuração automática que será colocado nos Browsers dos clientes. como o Squid.

Por outro lado. Transparência ou Ostensividade: São conceitos específicos e que se adaptam a cada caso. ou mesmo pais que queiram controlar o acesso de seus filhos a alguns sites. eliminação de ponto único de falha). Disponibilidade: De nada adianta um sistema veloz disponível apenas 2 horas por dia. Podemos definir um Proxy ou cache da seguinte forma: • Velocidade de acesso: A melhor forma de verificar se o seu cache está sendo eficiente é pela velocidade. órgãos com informações críticas. pela qual os usuários desta empresa resolvem enviar uma requisição de acesso a um determinado site. como (Redundância de servidores. entre outros. backup. Um sistema de cache que não agrega velocidade não está cumprindo o seu papel. agregando a ele outros serviços relacionados. conforme citado por (Bastos 2006) é preciso ter consciência de que um sistema bom é um sistema fácil de administrar. • Cache hierárquico é a extensão lógica do conceito de (caching). vão preferir a ostensividade. onde o usuário desconhece ou não se sente afetado (exceto pelo ganho de velocidade) pela presença de um cache. mais disponível e mais abrangente sistema de (caching) é totalmente inútil se somente uma pessoa no mundo souber lidar com ele.Com todas essas configurações habilitadas e funcionando corretamente é possível diminuir consideravelmente o fluxo de informações na banda e controlar ao máximo o conteúdo acessado pelos usuários. Como exemplo podemos citar o de uma empresa estabelecida em um prédio. "hospedagem de sites" ou blogs. Em casos de grandes instalações. • • 1. ISP: serviço de acesso à internet. Um grupo de caches podem se beneficiar do compartilhamento de seus dados entre si de várias formas. ainda é preciso ir mais a fundo. Simplicidade: Deixando um pouco de lado o usuário e focando no administrador. Isso é facilmente explicável quando pensamos em termos regionais. então é repassado esta . empresas com uma política de segurança mais rígida. tais como "e-mail". O mais rápido. Grandes instalações. sendo assim ele se adapta a qualquer situação. ISPs e empresas não preocupadas com que seus usuários vêem ou fazem na Internet devem preferir a transparência. ou mesmo que precise de um reboot a cada 2 semanas. • Capacidade de trabalhar com redes heterogêneas: Ele é capaz de trabalhar com diversos tipos de redes e não sendo necessário estar exclusivamente amarrado a de um fabricante de Software ou de hardware. buscando uma altíssima disponibilidade. Isso é especialmente verdade quando não sabemos que tipo de plataforma iremos utilizar em nossa instalação.

normalmente tem-se mais trocas de mensagens ICP do que HTTP. O ICP permite que um cache pergunte a outro se ele tem uma cópia válida de um determinado objeto. o ICP também gera indicações do estado da rede. todas sairiam ganhando. Além disso.com ! portalxpto.com cache_host_domain cache 2 portalxing. Adicionalmente. com cerca de 66 bytes. Seu objetivo é prover um método rápido e eficiente de obter-se comunicação entre servidores cache. a ordem de chegada de uma resposta ICP pode indicar quais hosts estão com uma distância lógica menor ou com menos carga. Mas quando falamos de grandes empresas e grandes backbone. O ICP foi desenvolvido como parte fundamental do projeto Harvest (Pai do Squid). aumentando a possibilidade de encontrar aquele objeto já (cacheado). Toda a comunicação entre os caches é feita via ICP. . essa prática entre pequenas empresas não existe. na qual baixa-se diretamente as informações sem precisar sair para a Internet para baixá-la. o Squid trabalha também com um conceito parecido com grupo de trabalho.com cache_host_domain cache 4 !portalxing. A configuração seria assim: cache_host_domain cache 1 portalxpto. onde existe um cache principal e outros ligados a ele. cada 1 MB economizado com (caching) é 1 MB ganho em outros serviços. Fica fácil de visualizar que se todas as empresas interligassem localmente seus Proxies. Além do controle de cache. Na realidade.requisição ao Proxy mais próximo. Roteamento por domínio e outra características de configurações do Squid pode favorecer muito no desempenho. onde todos os servidores se consultam mutuamente. o ICP permite que requisições trafeguem entre servidores filhos em uma estrutura de árvore. Além de trabalhar com o conceito de árvore conforme citado por (Bastos 2006). Em uma estrutura hierárquica.com Sendo que o cache 4 será o responsável por todos os domínios que não sejam os 3 anteriores. As mensagens ICP são geralmente bem pequenas. O não recebimento de uma resposta ICP normalmente indica que a rota está congestionada ou que outro Host não está ativo.com cache_host_domain cache 3 portalling.com !portalling.

prefira o nível 0 do que outros. Como normalmente. aliviando seu uso e provendo maior segurança. ao menos uma partição separada é extremamente recomendada. ele também pode armazenar objetos de um servidor Web interno. Já em empresas médias ou grandes que utilizam links de baixo custo. como ADSL3. Estrutura de Hardware Especificar o hardware é uma etapa muito importante no início do projeto. Em uma situação ideal. Se isso não for possível. uma opção que já fica inviável em instalações maiores. esse é o ponto de montagem para essa partição. conforme citado por Bastos (2006).Squid como servidor Uma situação muito útil. além de armazenar objetos remotos. deveria existir um cache de DNS na mesma máquina ou em uma máquina muito próxima. criando toda uma série de vantagens já discutidas aqui. O ideal é traçar um perfil de como é e de como será em 1 ano o volume de uso desse hardware. especialmente em memória e armazenamento. ao utilizar RAID2. o balanceamento de carga nos links é uma ótima opção. . Ao escolher devemos sempre utilizar um hardware que permita atualizações. Instalar servidores já com todos os bancos de memória usados ou no máximo de seus recursos sempre evitar. Em múltiplas rotas como em instalações com o ISP pode ser vantajoso definir suas rotas manualmente. Pequenas instalações dispensam disco rígido do tipo SCSI1. O desempenho das resoluções DNS é um ponto crítico e deve ser analisado como se segue. É interessante utilizar um disco rígido separado para os dados e para os logs do Squid. mas por vezes pouco explorada do Squid é a sua capacidade de trabalhar com Proxy reverso. para diminuir ao máximo o tempo de resolução dos nomes. visto que o mesmo é feito para desempenho. Conforme citação de Bastos (2006). Isso significa que. tanto os dados quanto os logs ficam abaixo do diretório (/var).

localizado por padrão no diretório /etc/squid/. cache_swap_low: Este parâmetro é especificado para quando o tamanho do diretório de Swap já estiver no mínimo. Alterações bem feitas e pensadas podem trazer um grande ganho para a performance do cache. 3. desde que tais periféricos sejam compatíveis com o padrão. por padrão costuma-se inserir o valor de 95.1. 2. mas está longe de ser uma solução ideal. SCSI: A tecnologia criada para acelerar a taxa de transferência de dados entre dispositivos de um computador. • http_port: Esta tag define qual porta ou portas do serviço do Squid estará aberta. O modo (off-line) irá funcionar para algumas destas redes. RAID: É um meio de se criar uma unidade virtual composta por vários discos individuais. enquanto um erro de configuração pode impedir o Squid de trabalhar ou até mesmo remover muitas de suas funcionalidades. por padrão é definida a 3128. Infelizmente muitas das funcionalidades do modo (off-line) do Squid parecem ter desaparecido durante o desenvolvimento da série Squid 2. Tags A seguir será mostrado algumas tags de configuração do Squid. cache_swap_high: Esta outra tag é para especificar o tamanho do diretório de Swap quando o mesmo já estiver no máximo. o modo (off-line) não tem quase nenhum efeito. Estas configurações são feitas editando o arquivo (squid. Na versão 2.3 STABLE4.x. . ADSL: Asymmetric Digital Subscriber Line. por que ao ser setado valores extremamente altos os outros serviços do sistema operacional serão prejudicados.conf). por padrão costuma-se inserir o valor de 90. com a finalidade de duplicação ou balanceamento. cache_mem: Especifica o ideal a ser usado pelo Squid de memória. levar em consideração a quantidade de memória usada. • • • Referências de conexão Em conexões intermitentes o Squid pode operar em redes (dial-up) ou (demand-dial).

ela ainda é boa). Se mesmo assim você estiver com problemas de espaço no cache a recomendação e adquirir um novo disco rígido com bem mais espaço e mais memória. Outros algoritmos estão disponíveis em versões mais atuais do Squid. dando acesso a informação que está em cache e assim reduzindo o uso do Link. uma abreviação para (if modified since) que significa. A página é considerada recente novamente. o Squid pode funcionar razoavelmente bem em conexões (dial-ondemand). perguntando (Ei. Se o cache ficar sem espaço. desde a última vez que o Squid verificou que a mesma é recente. Quando uma entrada cacheada de (Fully Qualified Domain Name). ela é removida do cache. o Squid configura os seus próprios. conforme Vesperman (2006). e o servidor de origem irá responder com (Sim. e possuem um TTL configurável. Páginas antigas são mantidas no cache. As páginas são consideradas antigas quando o seu TTL1(time to live) tiver sido expirado. mas discar cada vez que uma consulta tem que ser resolvida pode influenciar consideravelmente no custo. esta página mudou?). Páginas antigas que ficam no cache são validadas quando um cliente solicita a página. e quando a mesma pode ser considerada como página antiga. Este processo é chamado de solicitação IMS. as páginas antigas são descartadas em uma ordem (mais velha primeiro). ou (Não. O Squid foi projetado para conexões permanentes. Pesquisas DNS também são armazenadas em cache. Fazer o Squid funcionar em conexões intermitentes exige alterações no modo em que o Squid trabalha com as páginas Web antigas e pesquisas DNS antigas. seja uma nova página ou uma antiga. O Squid gasta uma solicitação. ou uma entrada IP DNS expira. se não há dados nos cabeçalhos.Ter um cache no lado intermitente do Link pode acabar com alguns dos problemas destas conexões. O Squid também possui informação padrão de validade. FQDN. Este algoritmo é chamado LRU2(least recently used). aqui está à nova página). Sem as correções do (patch). . Muitas páginas Web possuem valores de validade em seus cabeçalhos informando até quando a página pode se considerada atualizada.

iremos somente redefinir configurações pré-existentes para que estas se encaixem no objetivo proposto. Porém utilizando esta idéia. 2. (offline_mode on) que assinala ao Squid para nunca tentar uma validação. Nas páginas de anexos está o Squid proposto. gerar relatórios. transparent proxy. bem como a adição de segurança providos pela comunidade open source. é claro. LRU: Algoritmo Adaptativo de Substituição de Páginas. .1. seu baixo custo. e nunca renova páginas antigas. cache de FTP e. Podemos ainda citar a capacidade de clustering. e (offline_mode off) que assinala uma operação normal. além de adicionar novas funcionalidades e ter uma excelente estabilidade em condições extremas. TTL: Significa o número de máquinas que os pacotes podem demorar numa rede de computadores antes de serem descartados. Sua compatibilidade com várias plataformas e a imensa quantidade de softwares para analisar logs. Isto não é o que os usuários de (dial-up) e outros usuários com conexões intermitentes querem. Usando a configuração não modificada do Squid. O modo (off-line) também nunca expira informações de DNS que esteja no cache. Configuração Esta idéia surgiu da possibilidade de configurarmos o Squid de uma forma que o mesmo atinja o seu potencial máximo. Vantagens O Squid está continuadamente melhorando a sua performance. combinados com ferramentas de administração simplificada e baseadas em Web agregam grande valor ao produto. melhorar o desempenho.

caso o algoritmo utilizado atualmente pelo Squid não apresentasse uma melhor característica de performance. algumas vezes é deixado de lado o desempenho do hardware e é neste caso que entra programas como o HDparm. Pesquisamos métodos de ordenação e métodos de busca para verificar qual deste métodos seria o mais rápido em relação ao utilizado no Squid. Alteração do código-fonte Uma das soluções concentra a idéia de alteração do código fonte do Squid otimizando o mesmo.HDparm Aumenta a taxa de transferência de dados do discos rígidos IDE com o HDparm. ao pesquisarmos e nos aprofundarmos mais no assunto descobrimos a vantagem de utilização de bancos de dados. ou seja. A melhor proteção é fazer primeiro um backup do sistema e somente depois realizar teste para se chegar a um valor ideal de (multcount) que significa a quantidade de setores que ele está lendo por vez. a capacidade de armazenar uma grande lista diretamente no disco rígido e não em memória como acontece normalmente. A vantagem de utilizar o banco de dados é que sua indexação interna é mais rápida e dinâmica. A taxa de transferência de dados quintuplica com o uso dos novos parâmetros. Como as maiorias das distribuições Linux sempre adaptam o sistema operacional para que ele esteja totalmente compatível. no entanto. Como seria feita esta alteração?. esta idéia foi proveniente de um orientador. . seria aplicado um (patch) com a nossa implementação ou melhoramento da estrutura do próprio algoritmo já existente no código fonte. o que facilita a resposta do Squid para com o navegador. Banco de dados Quando pensamos em uma solução para resolver o problema proposto a principio a alteração no código fonte seria a opção mais viável. se a compararmos com a configuração padrão. O ganho de desempenho tende a ser muito grande mas o risco de perda de dados é diretamente proporcional a ele.

com um núcleo (kernel) mais enxuto e dedicado. para servir como (front-end) para o banco de dados que guardará a (black-list) do Squid. Sqlite. ou seja. Este programa é desenvolvido utilizando a linguagem de programação Perl. ela é excelente para a função de conexão com banco de dados. mas devido à falta de várias bibliotecas que são necessárias para executar esta conexão acabamos pesquisando outras linguagens e deparamos com a linguagem Perl. o banco de dados que utilizamos para armazenar a nossa (black-list) é o PostgreSQL. Mysql. que faz a intermediação entre o banco de dados e o Squid. é a compilação do Kernel com somente o necessário. Dentro desta escolha incluímos como solução requerida a implementação do HDparm e compilação do kernel e por ultimo incluímos nas listas de anexo o hardware ideal para a quantidade de usuários. Foi feito alguns testes para conexão de banco de dados utilizando linguagem de programação C para conectar ao banco de dados Postgres. A vantagem de utilizar a linguagem Perl é sua flexibilidade para trabalhar com qualquer banco de dados como: Oracle.Compilação do kernel Uma das opções que pode ser implementada no sistema operacional Linux que se encontra instalado o Squid. Postgres. A propriedade de conexão será da seguinte forma: o Proxy Squid através de um recurso chamado (redirect_program) que é uma tag interna do software Squid. A escolha Optamos por utilizar um banco de dados para armazenar nossa (black-list) e desenvolvemos um programa (Front-End). . Desenvolvendo a solução Utilizamos a linguagem de programação Perl. etc. se torna evidente que o mesmo ficará mais rápido pelo fato de não estar compartilhando outros recursos. aponta para o script feito em Perl que é nosso (front-end) e por sua vez o (front-end) faz um SELECT na lista (black-list) que está no banco de dados.

foi constatado isso através de testes utilizando os seguintes parâmetros tabela 3: 1. Testamos o (front-end) feito em Perl com o banco de dados Postgres e seu funcionamento é perfeito. Awk e à linguagem C). Fizemos um select dos dados armazenados. Todo este processo é feito através de um script Perl. Excluímos os dados. usada em aplicações de missão crítica em todos os setores. e está disponível para praticamente todos os sistemas operacionais. 3.Vantagem sugerida é que a (black-list . mas é usado mais comumente em sistemas Unix e compatíveis. A origem do Perl remonta ao (shell scripting. manipulação de texto e no (pattern .lista de URLs) não será carregada na memória e sim no banco de dados. 2. O Perl utiliza uma biblioteca chamada DBI que facilita esta conexão com o banco de dados. Inserimos dados no banco de dados.pl). e foi definido com o nome de (Bdblack) para o banco. domínio varchar (300)) Para o nosso (front-end) que será o intermediador entre o Squid e o banco de dados criado pela linguagem de programação Perl o nome dele é (consulta. Perl é uma das linguagens preferidas por administradores de sistema e autores de aplicações para a Web. Introdução ao Perl A Linguagem Prática de Extração e Geração de Relatórios (The Practical Extraction and Report Language) é uma linguagem de programação estável e multiplataforma. Detalhamento do processo O primeiro passo foi criar o banco de dados e inserir no mesmo as URLs para serem consultadas futuramente. e é bastante usada para desenvolver aplicações Web de todos os tipos. É especialmente versátil no processamento de cadeias (strings). então o Proxy Squid fará toda a consulta de URLs diretamente em cima do banco de dados não sobrecarregando a memória do computador. e sua tabela com o nome (sites) com a seguinte estrutura: create table sites (url varchar(300). O banco de dados usado como dito anteriormente é o Postgres. foi criada por Larry Wall em dezembro de 1987.

O módulo Perl (CGI. a sintaxe de um programa em Perl se parece muito com a de um programa em C. MySQL e outros. Todas as versões de Perl possuem gerenciamento de memória automático e tipamento dinâmico. blocos de código delimitados. atribuições. Sybase. e é bastante usada em desenvolvimento Web.pm). incluindo Oracle. finanças e bioinformática. Perl pode acessar bibliotecas externas em C e C++. por exemplo) e um modelo de programação orientada a objetos. A conversão entre tipos de variáveis é feita automaticamente em tempo de execução e conversões ilegais são erros fatais. Um dos melhores exemplos da utilidade desse recurso é a interpolação de variáveis diretamente no conteúdo de strings. PostgreSQL.matching) implementado através de expressões regulares. além de permitir tempos de desenvolvimento curtos. Essa marcação permite identificar perfeitamente as variáveis em um programa. Ela também possui recursos vindos da programação funcional (as funções são vistas como um outro valor qualquer para uma subrotina. O pacote DBI do Perl faz com que a integração com banco de dados Postgres seja muito simples. A linguagem Perl já foi portada para mais de 100 diferentes plataformas. expressões. Perl foi bastante influenciado pelas linguagens de shell script. . faz com que a manipulação de formulários HTML seja muito simples. parte da distribuição padrão de Perl. incluindo transações de comércio eletrônico. Características do Perl No geral. Sua interface de integração com base de dados (DBI) suporta muitos bancos de dados. Perl permite programação procedural e orientada a objetos. Os tipos e necessidades de cada objeto de dados no programa são determinados automaticamente. aonde quer que elas estejam. A memória é alocada ou liberada de acordo com o necessário. Perl também possui muitas funções integradas para tarefas comuns como ordenação e acesso de arquivos em discos rígidos. A linguagem suporta estruturas de dados arbitrariamente complexas. Perl pode manipular dados encriptados. existem variáveis. estruturas de controle e sub-rotinas. todas as variáveis são precedidas por um cifrão ($). Além disso.

operadores. SGBDOR1: Sistema gerenciador de banco de dados objeto relacional.Introdução ao PostgreSQL O PostgreSQL é um sistema gerenciador de banco de dados objeto-relacional (SGBDOR1). funções.2 desenvolvido pelo Departamento de Ciência da Computação da Universidade da Califórnia em Berkeley. por exemplo. baseado no POSTGRES Versão 4. métodos de índice. O HDparm Conforme a definição de (Thomas Wölfer 2004) o Hdparm é essencial para prover desempenho em discos rígidos IDE em sistemas Linux recém-instalados. o PostgreSQL pode ser utilizado. O PostgreSQL é um descendente de código fonte aberto do código original de Berkeley. linguagens procedurais. controle de simultaneidade multiversão. Além disso. integridade transacional. além de serem oferecidas muitas funcionalidades modernas. o PostgreSQL pode ser estendido pelo usuário de muitas maneiras como. comercial ou acadêmica. . adicionando novos: • • • • • • tipos de dados. visões. O POSTGRES foi pioneiro em vários conceitos que somente se tornaram disponíveis muito mais tarde em alguns sistemas de banco de dados comerciais. gatilhos. chaves estrangeiras. Devido à sua licença livre. modificado e distribuído por qualquer pessoa para qualquer finalidade. seja privada. que não utiliza o total de possibilidades oferecidas pelo hardware. como: • • • • • • comandos complexos . funções de agregação. livre de encargos. São suportados o SQL-92 e o SQL-1999.

este suporte pode ser configurado com a opção (-c). processador e buffer) que durante a leitura de informações calcula os valores de desempenho do disco desconsiderando as informações de dados do cache fornecendo uma medida eficiente do disco rígido que está sendo analisado. com um kernel compilado somente com o básico. É recomendável efetuar vários testes. algo ideal para aplicações que necessitem de respostas altas. que faz a negociação entre Hardware e Software). a opção (-u1) desativa o mascaramento de outras interrupções (umaskirq). Aplicando a opção (-k1) no comando evitamos que tal reset seja efetuado.O Hdparm consegue modificar a configuração do disco rígido obtendo o máximo do mesmo. a opção (-x66) ativa o ULTRADMA. com suporte no kernel somente aos hardware que estão disponíveis na . a fim de calcular uma média. Depois de efetuar a configuração que aplica o desempenho do disco rígido através do HDparm devemos salvar a mesma para que a configuração não perca durante a reinicialização do sistema. basta utilizar um script de inicialização do sistema. Kernel Para ganhar uma alta performance no sistema operacional Linux o ideal e compilar o Kernel (núcleo do sistema operacional. ou seja. desta forma dobramos a taxa de transferência de dados do disco rígido.local) ou outro nome dependendo da distribuição para que toda a configuração fique de forma permanente. obtemos resultados que demonstram grande desempenho do disco rígido. Algumas controladoras suportam 32 bits e estão rodando em 16 bits. chamado (rc. Através do comando (hdparm -Tt /dev/hdaX) podemos medir a velocidade do cache do disco (memória. mas talvez em algumas controladoras. é realizado um parâmetro chamado (IDE reset) pode-se ainda perder a configuração. com este comando o suporte a (I/0) é configurado para o modo 1 que seria 32 bits. entretanto é necessário que desabilitemos vários serviços no computador para que o mesmo não fique sobrecarregado durante os testes prejudicando a precisão dos dados analisados. Podemos observar que a taxa de transferência de dados quintuplica com o uso de novos parâmetros comparado a configuração padrão do computador. conforme segue (hdparm -c1 -mf6 /dev/hdaX). através da opção (-d1) ativamos o (flag) de utilização de acesso direto à memória (usingdma). Aplicando o HDparm de forma criteriosa podemos aumentar em até cinco vezes o desempenho do disco rígido. Aplicando o comando (Hdparm -d1 -x66-u1 -m16 -cd /dev/hdaX).

Entre no diretório que foi criado: $ cd module-init-tools-0.conf Kernel: É entendido como o núcleo do Sistema Operacional ou. Baixe o module-init-tools mais recente: • ftp://ftp. É necessário um conjunto novo de programas de gerenciamento de módulos (modprobe.tar. 1. Descompacte o arquivo com: $ tar -xvzf module-init-tools-0.15-pre4 4./configure --prefix=/ $ make moveold $ make $ su # make install 6. Os procedimento abaixo foi citado por Gustavo Paes (2004). 5. Usar programa (generate-modprobe.kernel. Leia o arquivo README se houver a necessidade.9.conf para /etc/modprobe./generate-modprobe.máquina.conf /etc/modprobe. numa tradução literal.conf) e converta o /etc/modules.15-pre4. etc).9.2. atualize o (Modutils/module-init-tools). à memória fica alocada somente para os aplicativos e serviços que o sistema operacional precisa.6. . a velocidade em processamento é aproveitada somente para as aplicações em uso. pois os que vêm com o Slackware 9 não funcionam para o kernel 2.gz 3.org/pub/linux/kernel/people/rusty/modules/ 2.conf: # . cerne. porém seus conceitos podem ser levados para outras distribuições. Antes de tudo. o foco é o kernel 2. Agora é a hora de compilar: $ . rmmod. insmod.6 com Linux Slackware 9.

6.local) descrito acima ou o (/etc/modprobe.6/linux-2. Baixe o kernel novo em: • http://www.2. 1. Em LOADABLE MODULE SUPPORT. Recrie o link simbólico "linux" apontando para a pasta do novo kernel: # ln -s /usr/src/linux-2. Opte por carregar como módulo.NOTA: Os procedimentos a seguir devem ser executados pelo usuário root.tar. isso necessita usar o (/etc/rc. habilite o carregamento automático de módulos.tar. como módulo (tecla M) e como parte do kernel (tecla Y). Configure os módulos do seu kernel: # make xconfig Existem duas formas de carregar os dispositivos no kernel.2 linux 4. Descompacte-o na pasta /usr/src/: # cd /usr/src # tar -xvjf linux-2.bz2 2.d/rc.6.org/pub/linux/kernel/v2.conf) para carregar os módulos automaticamente. isto acelera a velocidade.6.bz2 3.kernel. .2. Entre no diretório /usr/src/linux: # cd /usr/src/linux 5. ele vai tentar carregar as dependências de um módulo que você esteja tentando carregar. Resete as configurações do kernel: # make mrproper 6.

tenha em mãos o manual da placa mãe. ATI. Lembre-se na parte de sistemas de arquivos habilitar suporte ao EXT2. um kernel específico para o processador é bem mais rápido e estável que um de 486. Ative em LOGO CONFIGURATION todas as opções. ative o suporte a frame buffer. escolha o processador. ative o VGA 16Color e o VESA VGA. Ative o FRAMEBUFFER CONSOLE SUPPORT. Limpe os arquivos temporários e de instalação: . Em NETWORK SUPPORT. modem. Nesse ponto. Em SOUND. Não use o (i2c) como parte do kernel. EXT3 e ReiserFS. habilite a emulação de SCSI. etc. Em ATA/ATAPI/M. ative o VGA TEXT CONSOLE e o VIDEO MODE SELECTION SUPPORT. recomendamos também que na BIOS seja desabilitado Usb. 7. Recomendação é de usar estes drivers como parte do kernel. habilite os drivers da placa de rede. isso da futuros problemas na compilação do kernel. Em CONSOLE DISPLAY DRIVER SUPPORT. Em GRAPHIC SUPPORT. Sound. desabilite a placa de som. selecione também SELECT COMPILED-IN FONTE e marque as fontes 8x8. Porta paralela. placa de TV. Em CARACTER DEVICES. pois a maioria dos softwares de gravação para o GNU/Linux requerem que a gravadora esteja no modo SCSI. estes dois como parte do kernel. coloque os drivers para AGP. Ainda em frame buffer.Em PROCESSOR TYPE. 8x16 e 4x6. senão ficará difícil de atualizar depois. principalmente no caso da NVIDIA. placa de vídeo. etc). NVIDIA. Ative o driver de sua placa de vídeo como módulo (SIS.

conf e inclua as seguintes linhas no arquivo: image=/boot/Linux-2.6. Atualize o boot do sistema: # lilo .2 read-only 13.2/arch/i386/boot/bzImage /boot/linux-2.6.6.conf: # vi /etc/lilo. Instale os módulos do kernel: # make modules_install 11.2 12.# make clean 8. Edite o /etc/lilo.2 label=Linux-2. Copie a imagem gerada para o /boot/: # cp /usr/src/linux-2.6. Compile os módulos do kernel (isso mesmo só um make): # make 10. Compile a imagem do kernel: # make bzImage 9.

Conclusão Durante a pesquisa encontramos algumas aplicações. Com tudo isto que apresentamos neste trabalho. tanto em desempenho quanto na economia de hardware. conforme descrição anterior que foram implementadas. O programa fez a busca no banco de dados e retornou ao Squid com maior velocidade. adicionando o recurso de HDparm corretamente ao disco rígido. compilando o kernel somente com o mínimo e não compartilhando serviços.g2cinformatica. Nas pesquisas foram encontradas somente uma pessoa (Alvaro Mendes de Oliveira (2006) . controle de banda e relatórios) que implementou este método com o banco de dados MySQL. Nossos testes demonstraram que com um hardware especifico. na qual demonstrou que a sua implementação com o Squid pode ser uma boa alternativa. isto é. podemos concluir que ao utilizar estas ferramentas em conjunto (Front-end. redirector. podemos melhorar a performance do Squid sem alterar a estrutura do hardware. Gerson Raymond Linux user: #448673 http://www. e com a implementação do uso do banco de dados o aumento na velocidade de transferência e resposta do Squid é aumentada. a fim de aperfeiçoar o desempenho do Squid.Squid Plus com AD. com idéias simples economizamos um investimento em hardware que era o nosso objetivo inicial. deixou-se de utilizar consideravelmente a memória física do equipamento (RAM) e passou-se a utilizar o disco rígido (HD) utilizando para isto softwares como o Postgres para responder as requisições com muito mais velocidade. No entanto a nossa aplicação principal foi com o banco de dados PostgreSQL. compilação de Kernel).com . Assim sendo. HDparm.

6 no Slackware. Acesso em 11 de março de 2006.Yutaka. Acesso em 17 de Abril de 2006. RESENES. . Acesso em 15 abril de 2006. Linux . Cristiano Fernandes dos reis. Eri Ramos. Enciclopédia Bozolinux. Instalando e configurando o Squid. 2003. Squid. Jociel. ed. Stéfano. CAMPOS. Luis Alberto Garcia. Acesso em 15 de abril de 2006. redirector. Ruben e. MARTINS. Deitel.Guia do Administrador do Sistema. Bookman.Instalando e configurando o Squid. controle de banda e relatórios. Guia Sobre Squid/Proxy Transparente. BASTOS. Squid o Melhor Proxy. Configurando Dansguardian. Acesso em 02 de maio de 2006. Acesso em 15 de Agosto de 2006.Squid Plus com AD. Desenho de rede ideal de um serviço Proxy. JÚNIOR. Deitle. Alvaro Mendes de. Augusto C. 2005. Configurando um Squid Ninja. REGULY. Novatec. Nieto.Alvaro. Hiperquicksort: Uma Análise Prática com Implementação em MPI. CIPRIANO. Paes. SATO. ed. Acesso em 14 de março de 2006. Jonas. Configurando o Squid no Slackware. Acesso em 04 de março de 2006. Acesso em 18 de fevereiro de 2006.Referências ANDRADE. Oliveira. Walter Flávio Pimenta. Gustavo. 3.1. Acesso em 23 de setembro de 2006. São Paulo. Ferreira. REIS. Instalando e configurando os módulos do kernel 2. São Paulo. São Paulo. Mcphie. Configurando Oops. Acesso em 02 de maio de 2006. 2006. Acesso em 25 de abril 04 de 2006. Perl Como Programar.

dansguardian. pg. São Paulo: Setembro. THOENY. VESPERMAN. 36. Professional Linux Programando. Stones.Configurando o Dansguardian. set 2004. Instalando e Configurando o Squid. Neil. Aumente a taxa de transferencia de dados de seus discos IDE com o hdparm. 2002. São Paulo. Acesso em 11 de Março de 2006. Thomas. Richard. n 2. . http://www. Monografia Proxy. Jennifer. Makron Books. Hedwio Carvalho. ano 1. ed. Linux Magazine.org Acesso em 23 de Abril de 2006. 2. Matthew.SILVA. Wolfer.Peter. Acesso em 02 de Maio de 2006.

Sign up to vote on this title
UsefulNot useful