Squid 2.7.STABLE9 no Slackware


Atualização da dica de instalação do Squid 2.7.9 no Slackware.

Não sei o porque mas o Squid3 e eu não nos damos bem! até certo tempo atrás tinha um .conf até que bonzinho utilizado no Arch Linux, mas o perdi e até então venho penando nas mãos do Squid3, utilizando a configuração padrão ele até funciona, mas basta começar a mexer com ela que começam os problemas… a reclamação principal é na demora no desligamento do sistema (independente de distribuição) e no reinício do programa (se necessário), em razão disso continuo utilizando o Squid 2.7STABLE9 no Debian e resolvi fazer o mesmo no Slackware e demais distros que tenho aqui. De novo agora apenas a aplicação de um patch.

Vamos aos passos:

Download do source e patch direto do ftp do Debian…

$ wget http://ftp.de.debian.org/debian/pool/main/s/squid/squid_2.7.STABLE9.orig.tar.gz
$ wget http://ftp.de.debian.org/debian/pool/main/s/squid/squid_2.7.STABLE9-2.1.diff.gz

Descompactação do arquivo…

$ tar -xzvf squid_2.7.STABLE9.orig.tar.gz

Entrada no diretório de trabalho…

$ cd squid-2.7.STABLE9

Aplicação do patch…

$ zcat ~/squid_2.7.STABLE9-2.1.diff.gz | patch -p1

Configuração inicial…

$ ./configure --prefix=/usr/local/squid 
 --enable-err-languages=Portuguese 
 --mandir=/usr/share/man 
 --enable-auth="basic,digest,ntlm" 
 --enable-removal-policies="lru,heap" 
 --enable-digest-auth-helpers="password" 
 --enable-basic-auth-helpers="getpwnam,YP,NCSA,MSNT" 
 --enable-external-acl-helpers="ip_user,unix_group,wbinfo_group" 
 --enable-ntlm-auth-helpers="fakeauth,no_check" 
 --enable-removal-policies 
 --enable-linux-netfilter 
 --enable-ident-lookups 
 --enable-useragent-log 
 --enable-cache-digests 
 --enable-delay-pools 
 --enable-referer-log 
 --enable-async-io 
 --enable-truncate 
 --enable-arp-acl 
 --with-pthreads 
 --enable-icmp 
 --enable-htcp 
 --enable-carp 
 --enable-poll 
 --enable-snmp 
 --enable-wccp 
 --enable-ssl

Compilação…

$ make

Instalação…

# make install

E pronto! (ou quase)… passemos a configuração do squid.conf localizado em /usr/local/squid/etc, aqui deixei-o assim:

http_port 3128
visible_hostname slackware

dns_nameservers 208.67.222.222
dns_nameservers 208.67.220.220

cache_mem 64 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 768 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /usr/local/squid/var/cache 2048 16 256
cache_access_log /usr/local/squid/var/logs/access.log

refresh_pattern ^ftp: 144000 20% 1008000
refresh_pattern -i .(gif|png|jpg|jpeg|ico|bmp)$ 260000 90% 260009 override-expire
refresh_pattern -i .(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv|mpg|wma|ogg|wmv|asx|asf)$ 260000 90% 260009 override-expire
refresh_pattern -i .(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|ppt|doc|tiff|pdf|uxx)$ 260000 90% 260009 override-expire
refresh_pattern -i .index.(html|htm)$ 1440 90% 40320
refresh_pattern -i .(html|htm|css|js)$ 1440 90% 40320
refresh_pattern (/cgi-bin/|?) 0 0% 0
refresh_pattern . 0 20% 4

error_directory /usr/local/squid/share/errors/Portuguese/
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 21 80 443 563 70 210 280 488 591 777 901 1025-65535
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

# Opcional (bad sites).
# acl squidlist url_regex -i "/usr/local/squid/etc/squidlist"
# http_access deny squidlist

# Opcional (bloqueio por horário).
# acl net_local src 192.168.0.0/255.255.255.0
# acl sites url_regex -i "/usr/local/squid/etc/sites.txt"
# acl h_liberado time SMTWHFA 07:00-17:00
# http_access deny sites !h_liberado

acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal
http_access deny all

Feito isto, passemos para a criação das pastas de cache e log:

# mkdir -p /usr/local/squid/var/cache
# mkdir -p /usr/local/squid/var/logs
# chmod 777 -R /usr/local/squid/var/cache
# chmod 777 -R /usr/local/squid/var/logs

E continuo com a criação do script de inicialização do Squid a ser criado em /etc/rc.d:

# nano /etc/rc.d/rc.squid

A seguir colo o seguinte conteúdo no arquivo:

#!/bin/sh
# Start/stop/restart/reload the Squid Internet Object Cache (squid)
# To make Squid start automatically at boot, make this
# file executable:  chmod 755 /etc/rc.d/rc.Squid
#
# Written for Slackware Linux by Erik Jan Tromp
# Modified by David Somero <xgizzmo@slackbuilds.org>

SQUIDCFG=/usr/local/squid/etc/squid.conf
SQUIDCMD=/usr/local/squid/sbin/squid

if [ ! -r $SQUIDCFG ]; then
  echo "Please set the correct path to $SQUIDCFG"
  exit 1
fi

if [ ! -x $SQUIDCMD ]; then
  echo "$SQUIDCMD not found"
  exit 1
fi

squid_start() {
  # Create cache directory hierarchy if needed
  ALL_DIRS=$(awk '/^cache_dir/ {print $3}' $SQUIDCFG)
  [ -z "$ALL_DIRS" ] && ALL_DIRS=/var/cache/squid

  for CACHE_DIR in $ALL_DIRS ; do
    if [ ! -d $CACHE_DIR/00 ] ; then
      echo "Creating swap directories:  $SQUIDCMD -z"
      $SQUIDCMD -z 2> /dev/null
      break
    fi
  done

  echo "Starting Squid:  $SQUIDCMD -F"
  $SQUIDCMD -F
}

squid_stop() {
  COUNTDOWN=$(awk '/^shutdown_lifetime/ {print $2}' $SQUIDCFG)
  [ -z "$COUNTDOWN" ] && COUNTDOWN=30

  echo -n "Shutting down Squid in $COUNTDOWN seconds:  "
  $SQUIDCMD -k shutdown 2> /dev/null
  while $SQUIDCMD -k check 2> /dev/null ; do
    sleep 1
    echo -n .
    COUNTDOWN=$[ $COUNTDOWN - 1 ]
    if [ $COUNTDOWN -le 0 ] ; then
      $SQUIDCMD -k interrupt 2> /dev/null
      sleep 1
      break
    fi
  done
  echo
}

squid_restart() {
  squid_stop
  sleep 1
  squid_start
}

squid_reload() {
  $SQUIDCMD -k reconfigure 2> /dev/null
}

case "$1" in
'start')
  squid_start
  ;;
'stop')
  squid_stop
  ;;
'restart')
  squid_restart
  ;;
'reload')
  squid_reload
  ;;
*)
  echo "usage: $0 start|stop|restart|reload"
esac

Após salvar o arquivo, torno-o executável com o seguinte comando:

# chmod 755 /etc/rc.d/rc.squid

E concluindo, adiciono as seguintes linhas no arquivo /etc/rc.d/rc.local:

# Start SQUID (Squid proxy server): 
if [ -x /etc/rc.d/rc.squid ]; then 
 . /etc/rc.d/rc.squid start 
fi

Feito isto, para iniciar o Squid use:

# /usr/local/squid/sbin/squid -z
# /etc/rc.d/rc.squid start

Squid iniciado… basta configurar seu navegador e monitorar o uso com:

# tail -f /usr/local/squid/var/logs/access.log

Antes que venham a me perguntar… utilizo o Squid em ambiente doméstico, portanto se precisa de algo para ser utilizado no meio corporativo sugiro a leitura dos artigos abaixo, através dos quais me baseei na elaboração deste:

http://mundodacomputacaointegral.blogspot.com.br/2011/12/configurando-servidor-proxy-autenticado.html
http://mundodacomputacaointegral.blogspot.com.br/2011/11/configurando-servidor-proxy-com-squid.html

Anúncios
Squid 2.7.STABLE9 no Slackware

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s