Soporte básico necesario:
# apt install arj bzip2 xz-utils cabextract cpio file lzma lhasa lzop rpm2cpio gzip nomarch \ pax lzop rar unrar unzip zoo unace razor pyzor tnef ripole zip xz-utils lzma p7zip-full mc \ multitail ccze
Instalar binarios necesarios para compilar Squid4:
# apt install logrotate acl attr autoconf bison nettle-dev build-essential libacl1-dev \ libaio-dev libattr1-dev libblkid-dev libbsd-dev libcap2-dev libcppunit-dev libldap2-dev \ pkg-config libxml2-dev libdb-dev libgnutls28-dev openssl devscripts fakeroot libdbi-perl \ libssl1.0-dev libcppunit-dev libecap3-dev libkrb5-dev comerr-dev libnetfilter-conntrack-dev \ libpam0g-dev libsasl2-dev
Configurando el sistema, si alguno de estos pasos da error de que existe o que ya está, no hay problemas, continuar adelante:
# groupadd -g 13 proxy # mkdir -p /var/spool/squid # mkdir -p /var/log/squid # mkdir -p /var/cache/squid # useradd --system -g proxy -u 13 -d /var/spool/squid -M -s /usr/sbin/nologin proxy # chown proxy:proxy /var/spool/squid # chown proxy:proxy /var/log/squid # chown proxy:proxy /var/cache/squid cd /opt wget -c http://www.squid-cache.org/Versions/v4/squid-4.6.tar.xz # tar xfv squid-4.6.tar.xz
Configuramos las opciones básicas que podamos necesitar:
./configure --srcdir=. --prefix=/usr --localstatedir=/var/lib/squid --libexecdir=/usr/lib/squid \ --datadir=/usr/share/squid --sysconfdir=/etc/squid4 --with-default-user=proxy --with-logdir=/var/log/squid \ --with-open-ssl=/etc/ssl/openssl.cnf --with-openssl --enable-ssl --enable-ssl-crtd --build=x86_64-linux-gnu \ --with-pidfile=/var/run/squid.pid --enable-removal-policies=lru,heap \ --enable-delay-pools --enable-cache-digests --enable-icap-client --enable-ecap --enable-follow-x-forwarded-for \ --with-large-files --with-filedescriptors=65536 \ --enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB \ --enable-auth-digest=file,LDAP --enable-auth-negotiate=kerberos,wrapper --enable-auth-ntlm=fake,SMB_LM \ --enable-linux-netfilter --with-swapdir=/var/cache/squid --enable-useragent-log --enable-htpc \ --infodir=/usr/share/info --mandir=/usr/share/man --includedir=/usr/include --disable-maintainer-mode \ --disable-dependency-tracking --disable-silent-rules --enable-inline --enable-async-io \ --enable-storeio=ufs,aufs,diskd,rock --enable-eui --enable-esi --enable-icmp --enable-zph-qos \ --enable-external-acl-helpers=file_userip,kerberos_ldap_group,time_quota,LDAP_group,session,SQL_session,unix_group,wbinfo_group \ --enable-url-rewrite-helpers=fake --enable-translation --enable-epoll --enable-snmp --enable-wccpv2 \ --with-aio --with-pthreads --enable-arp --enable-arp-acl
Si necesitamos saber que significa cada opción:
./configure --help
Compilamos con 4 núcleos[multiprocesamiento]:
# make -j 4
Instalando:
# make install
Ahora debemos crear un archivo de inicio[squid o squid4 como usted desée nombrarlo] para el squid:
cd /etc/init.d/ nano squid
Con el siguiente contenido:
#!/bin/sh
########################################################################
# squid4 Startup script for the SQUID HTTP proxy-cache.
#
# Version: @(#)squid4 init script 1.0 20-Feb-2019 leslie84@nauta.cu
########################################################################
### BEGIN INIT INFO
# Provides: squid
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Should-Start: $named
# Should-Stop: $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Squid HTTP Proxy version 4.x
### END INIT INFO
NAME=squid
DESC="Squid HTTP Proxy 4.x"
DAEMON=/usr/sbin/squid
PIDFILE=/var/run/$NAME.pid
CONFIG=/etc/squid4/squid.conf
SQUID_ARGS="-YC -f $CONFIG"
[ ! -f /etc/default/squid ] || . /etc/default/squid
. /lib/lsb/init-functions
PATH=/bin:/usr/bin:/sbin:/usr/sbin
[ -x $DAEMON ] || exit 0
ulimit -n 65535
find_cache_dir () {
w=" " # space tab
res=`sed -ne '
s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q' < $CONFIG`
[ -n "$res" ] || res=$2
echo "$res"
}
find_cache_type () {
w=" " # space tab
res=`sed -ne '
s/^'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q' < $CONFIG`
[ -n "$res" ] || res=$2
echo "$res"
}
start () {
cache_dir=`find_cache_dir cache_dir`
cache_type=`find_cache_type cache_dir`
#
# Create spool dirs if they don't exist.
#
if [ "$cache_type" = "coss" -a -d "$cache_dir" -a ! -f "$cache_dir/stripe" ] || [ "$cache_type" != "coss" -a -d "$cache_dir" -a ! -d "$cache_dir/00" ]
then
log_warning_msg "Creating $DESC cache structure"
$DAEMON -z -f $CONFIG
fi
umask 027
ulimit -n 65535
cd $cache_dir
start-stop-daemon --quiet --start \
--pidfile $PIDFILE \
--exec $DAEMON -- $SQUID_ARGS < /dev/null
return $?
}
stop () {
PID=`cat $PIDFILE 2>/dev/null`
start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
#
# Now we have to wait until squid has _really_ stopped.
#
sleep 2
if test -n "$PID" && kill -0 $PID 2>/dev/null
then
log_action_begin_msg " Waiting"
cnt=0
while kill -0 $PID 2>/dev/null
do
cnt=`expr $cnt + 1`
if [ $cnt -gt 24 ]
then
log_action_end_msg 1
return 1
fi
sleep 5
log_action_cont_msg ""
done
log_action_end_msg 0
return 0
else
return 0
fi
}
case "$1" in
start)
log_daemon_msg "Starting $DESC" "$NAME"
if start ; then
log_end_msg $?
else
log_end_msg $?
fi
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
if stop ; then
log_end_msg $?
else
log_end_msg $?
fi
;;
reload|force-reload)
log_action_msg "Reloading $DESC configuration files"
start-stop-daemon --stop --signal 1 \
--pidfile $PIDFILE --quiet --exec $DAEMON
log_action_end_msg 0
;;
restart)
log_daemon_msg "Restarting $DESC" "$NAME"
stop
if start ; then
log_end_msg $?
else
log_end_msg $?
fi
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit 3
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}"
exit 3
;;
esac
exit 0
Acá lo adjunto por si tienen dudas. Después de hacer esto debemos darle permisos de ejecución y hacerlo que inicie con el sistema:
chmod +x squid update-rc.d squid defaults
Ahora sólo nos queda editar el archivo de configuración para adaptarlo a nuestras necesidades. El archivo de configuración «squid.conf» se encuentra en /etc/squid4, y es donde configuraremos los métodos de autenticación, ACLs, puertos permitidos, etc.
cd /etc/squid4 nano squid.conf
Si observamos detenidamente las directivas el archivo de configuración de Squid, veremos que esta listo para funcionar, pero… No logueará info acerca de la navegación, no tendra ACLs limitando la conectividad y estará configurado en modo transparente, es decir, no pedirá autenticación y se navegará sin ningun tipo de restricción.
En squid4, al compilar desde fuentes, se genera un «squid.conf.documented» que contiene todas y cada una de las opciones usadas bien explicadas, por si existen dudas. Ahora bien, hagamos algo, añadamos lo suguiente, e iré documentando cada opción:
# Apurar reinicio de Squid shutdown_lifetime 1 seconds # Puertos e interfaces por los que escuchará squid http_port 0.0.0.0:3128 http_port 0.0.0.0:8080 # Logueo de información acerca de la navegación cache_log stdio:/var/log/squid/cache.log access_log stdio:/var/log/squid/access.log cache_store_log stdio:/var/log/squid/store.log netdb_filename stdio:/var/spool/squid/netdb.state
Guardamos y listo. Ahora reiniciamos squid:
/etc/init.d/squid restart
Y ejecutamos lo siguiente para que systemd actualice configuraciones:
systemctl daemon-reload
Luego de hecho esto, yo prefiero reiniciar el sistema.
Una vez reiniciado el sistema, podemos empezar a configurar el Squid4 normalmente, pero primero revisemos nos logs. Si todo inicia con normalidad, proseguimos, si no, revisemos lo que hemos hecho hasta ahora y corrijamos los posibles errores.
Ahora hacemos un alto acá. Haremos uso de dos herramientas muy importantes, «multitail» y «ccze». Multitail permite ver en tiempo real[tail -f] la salida estándard de varios archivos de logs, en este caso de logs, se sale de su entorno con la letra «q». Ccze cuando es acompañado de «tail -f» nos permite colorear los logs en la salida estándar, indicando con color «rojo» los errores y fallas que se detecten y se detiene su ejecución con Ctrl + C.
Por ejemplo:
multitail /var/log/syslog /var/log/daemon.log tail -f /var/log/squid/access.log | ccze
Estos dos comandos nos serán muy utiles a la hora de depurar errores en un servicio determinado[squid, postfix, bind, ejabberd, syslog, etc], pues nos ayudan a localizar los errores sólo mirando las salidas de los daemons. Los errores, como ya dije más arriba, salen en color «rojo».
Por el momento es todo, en un próximo post, continuaré vinculando Squid contra samba4 usando grupos y demás. Espero les sirva. Saludos a todos.







Saludos Koratsuki y todos los involucrados en este blog, necesito evacuar algunas dudas que tengo con respecto a LDAP, DOVECOT Y POSTFIX, por favor enviáme un mensaje a estos correos oniel.gzlez@gmail.com y oniel2015@nauta.cu, Gracias
Hola Koratsuki:
Tendras hecho un backup de proxmox de esta maquina? de ser asi, de donde lo puedo descargar, mega por ejemplo.
Saludos
Lo que tengo es una máquina virtual en VMWare Player 15, es decir, un vmdk. Si te sirve, te lo copio, aunque hacer uno con el tutorial en Proxmox es 10 minutos, no creo que sea tan difícil…
la cosa es que me dice que faltan paquete a la hora de hacer el update y despues no encuentra ekl chorro de paquete de las dependencias
Socio, revisa la integridad del repo que tienes, que parece ser el problema…
Bueno yo hice todo esto en proxmox con un template de debian 9 y todo al quilo sin lio, ni problemas,
Saludos
amigo tu explicación excelente pero estoy teniendo problemas con https