Lusca cache com autenticação
Pessoal,
testei o lusca cache e está ok funcionando transparent...agora preciso rodar ele com autenticação mas ao tirar o transparent e adicionar a linha de autenticação ele aparece o erro abaixo:
[root@samba ~]# squid -k reconfigure
FATAL: auth_param basic program /usr/lib/squid/ncsa_auth: (2) No such file or directory
realmente o ncsa não aparece no diretório acima...como resolver isso pois preciso do proxy autenticado.
Re: Lusca cache com autenticação
quando você foi instalar o programa você configurou para ativar esta opção?
Re: Lusca cache com autenticação
não..compilei conforme tutoriais na net então como faço para ativar essa opção na hora de compilar?
compilei assim:
./configure --libexecdir=/usr/lib/squid --localstatedir=/var --prefix=/usr --sysconfdir=/etc/squid --enable-async-io --with-pthreads --enable-heap-replacement --enable-coss-aio-ops --enable-ssl --enable-htcp --enable-arp-acl --enable-removal-policies=lru,heap --disable-hostname-checks --enable-default-err-language=Portuguese --enable-err-languages=Portuguese --enable-linux-netfilter --enable-snmp --disable-ident-lookups --with-maxfd=65536 --enable-storeio=aufs,null,coss --enable-epoll
Re: Lusca cache com autenticação
Procurando no google tem um tutorial que ensina a compilar somente ele então fui no diretório onde estão os arquivos do lusca e dei um make...assim ele gerou o ncsa-auth então copiei o módulo para a pasta /usr/lib/squid mas ao tentar dar um squid -k reconfigure ou parar o serviço aparece o erro abaixo:
[root@samba NCSA]# service squid stop
Stopping Lusca..
squid: ERROR: No running copy
[root@samba NCSA]# service squid start
Starting Lusca..
[root@samba NCSA]# squid -k reconfigure
squid: ERROR: Could not send signal 1 to process 2926: (3) No such process
[root@samba NCSA]# squid -k reconfigure
squid: ERROR: Could not send signal 1 to process 2973: (3) No such process
tem que compilar de outra forma? como?
Re: Lusca cache com autenticação
antes de executar este comando dá um 'ps ax | grep squid' e veja qual o PID do processo, depois execute 'squid -k reconfigure' e se der o mesmo erro veja se ele está se referindo ao mesmo PID.
dá uma olhada também no cache.log
qual comando você utiliza pra iniciar o squid?
Re: Lusca cache com autenticação
Os Pids são diferentes...para iniciar o lusca criei um script e inicio normal: /etc/init.d/squid start
mas no rc.local ele é levantado assdim:
squid -d 10 -D -N -F -X -f /etc/squid/squid.conf &
os pids do erro não aprecem no top quando dou o comando nem no ps aux |grep squid são pids diferentes...quando tiro a autenticação ele volta a funcionar normal.
Re: Lusca cache com autenticação
descobri uma coisa...ao adicionar as linhas abaixo não apresenta erro...
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 3
authenticate_ttl 10 minutes
authenticate_ip_ttl 0
agora quando adiciono uma acl para um usuario é quando apresenta o erro do PID:
#USER:Fernando
acl u_fernando proxy_auth fernando
testando para mostrar PIDS diferentes:
[root@samba ~]# squid -k reconfigure
squid: ERROR: Could not send signal 1 to process 3005: (3) No such process
[root@samba ~]# ps aux | grep squid
root 3034 0.0 0.0 63268 784 pts/0 S+ 14:49 0:00 grep squid
o que pode ser? a acl está identica ao squid(sem ser lusca) que tenho no squid 2.7.
Re: Lusca cache com autenticação
cara..
adapte este script a sua necessidade e coloque no /etc/init.d/squid
dê permissão de execução.
Código :
#! /bin/sh
#
# squid Startup script for the SQUID HTTP proxy-cache.
#
# Version: @(#)squid.rc 2.20 01-Oct-2001 [email protected]
#
NAME=squid
DAEMON=/usr/sbin/squid
LIB=/usr/lib/squid
PIDFILE=/var/run/$NAME.pid
SQUID_ARGS="-D -sYC"
echo 16384 > /proc/sys/kernel/msgmnb
echo 41 > /proc/sys/kernel/msgmni
echo 2049 > /proc/sys/kernel/msgmax
echo 32 > /proc/sys/kernel/shmmni
echo 2097152 > /proc/sys/kernel/shmmax
echo 3096 > /proc/sys/kernel/shmall
[ ! -f /etc/default/squid ] || . /etc/default/squid
PATH=/bin:/usr/bin:/sbin:/usr/sbin
[ -x $DAEMON ] || exit 0
grepconf () {
w=" " # space tab
sq=/etc/squid/squid.conf
# sed is cool.
res=`sed -ne '
s/^'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q' < $sq`
[ -n "$res" ] || res=$2
echo "$res"
}
grepconf2 () {
w=" " # space tab
sq=/etc/squid/$NAME.conf
# sed is cool.
res=`sed -ne '
s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q' < $sq`
[ -n "$res" ] || res=$2
echo "$res"
}
#
# Try to increase the # of filedescriptors we can open.
#
maxfds () {
[ -n "$SQUID_MAXFD" ] || return
[ -f /proc/sys/fs/file-max ] || return 0
[ $SQUID_MAXFD -le 4096 ] || SQUID_MAXFD=4096
global_file_max=`cat /proc/sys/fs/file-max`
minimal_file_max=$(($SQUID_MAXFD + 4096))
if [ "$global_file_max" -lt $minimal_file_max ]
then
echo $minimal_file_max > /proc/sys/fs/file-max
fi
ulimit -n $SQUID_MAXFD
}
fixperms () {
dir=$1
usr=$2
grp=$3
currusr=`/usr/bin/stat -c '%U' $dir`
currgrp=`/usr/bin/stat -c '%G' $dir`
if [ $currusr != $usr ]
then
chown $usr $dir -R
fi
if [ $currgrp != $grp ]
then
chgrp $grp $dir -R
fi
}
start () {
cdr=`grepconf2 cache_dir /var/spool/$NAME`
usr=`grepconf cache_effective_user proxy`
grp=`grepconf cache_effective_group proxy`
case "$cdr" in
[0-9]*)
echo "squid: squid.conf contains 2.2.5 syntax - not starting!" >&2
exit 1
;;
esac
#
# Create spool dirs if they don't exist.
#
if [ -d "$cdr" -a ! -d "$cdr/00" ]
then
echo "Creating squid spool directory structure"
/usr/sbin/squid -z
fi
if [ "$CHUID" = "" ]; then
CHUID=root
fi
maxfds
umask 027
cd $cdr
start-stop-daemon --quiet --start \
--pidfile $PIDFILE \
--chuid $CHUID \
--exec $DAEMON -- $SQUID_ARGS < /dev/null
sleep 1
}
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
echo -n "(waiting..."
cnt=0
while kill -0 $PID 2>/dev/null
do
cnt=`expr $cnt + 1`
if [ $cnt -gt 60 ]
then
#
# Waited 120 seconds now. Fail.
#
echo -n "failed)"
if [ "$1" = verbose ] ; then
echo "."
else
echo -n " "
fi
return
fi
sleep 2
echo -n "."
done
echo -n "done)"
if [ "$1" = verbose ] ; then
echo " $NAME."
else
echo -n " "
fi
else
[ "$1" = verbose ] && echo "$NAME."
fi
}
case "$1" in
start)
echo -n "Starting proxy server: "
start
echo "$NAME."
;;
stop)
echo -n "Stopping proxy server: "
stop verbose
;;
reload|force-reload)
echo -n "Reloading $NAME configuration files..."
start-stop-daemon --stop --signal 1 \
--pidfile $PIDFILE --quiet --exec $DAEMON
echo "done."
;;
restart)
echo -n "Restarting proxy server: "
stop
start
echo "$NAME."
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart}"
exit 3
;;
esac
exit 0
depois crie um link simbólico no rc2.rc
para iniciar ou parar use o comando invoke-rc.d squid (start|stop)
Re: Lusca cache com autenticação
uso o centos...o comando é o mesmo? coloquei o seu script no lugar do meu e tirei a linha que eu te falei do rc.local então reiniciei e fui testar seu script:
[root@samba ~]# service squid start
Starting proxy server: /etc/init.d/squid: line 116: start-stop-daemon: command not found
squid.
[root@samba ~]# /etc/init.d/squid start
Starting proxy server: /etc/init.d/squid: line 116: start-stop-daemon: command not found
squid.
Re: Lusca cache com autenticação
esse script é pra debian e derivados, não irá funcionar no centos.
Re: Lusca cache com autenticação
então..o script que eu tenho e funciona é esse:
#!/bin/sh
LUSCA_BIN="/usr/sbin/squid"
LUSCA_COREDIR="/var/log/squid/"
LUSCA_START_FLAGS="-D"
ulimit -n 65535
case $1 in
'start')
echo "Starting Lusca.."
cd ${LUSCA_COREDIR} && ${LUSCA_BIN} ${LUSCA_START_FLAGS}
exit 0
;;
'stop')
echo "Stopping Lusca.."
${LUSCA_BIN} -k shutdown
sleep 60
exit 0
;;
'rotate')
echo "Rotating Lusca Logfiles.."
${LUSCA_BIN} -k rotate
exit 0
;;
'reconfigure')
echo "Reconfiguring Lusca.."
${LUSCA_BIN} -k reconfigure
exit 0
;;
*)
echo "$0: {start|stop|rotate|reconfigure}"
exit 1
;;
esac
exit 0
funciona perfeitamente...como te disse o problema só aparece quando eu colocar para ficar o lusca cache autenticado.Ele transparente funciona perfeitamente então não acredito que o erra seja no script.
Re: Lusca cache com autenticação
veja o que aparece no cache.log quando você habilita a autenticação.
no squid.conf veja o caminho para o squid.pid e depois de iniciar o processo veja se o arquivo foi criado no caminho especificado. se for em um diretório distinto veja se o mesmo tem permissão de dono e grupo de trabalho do squid.
Re: Lusca cache com autenticação
no cache.log não aparece nada....meu squid.conf
http_port 3128
icp_port 0
cache_replacement_policy heap LFUDA
cache_dir aufs /var/cachesquid 20000 256 256
memory_replacement_policy heap GDSF
cache_mem 128 MB
maximum_object_size 256 MB
minimum_object_size 0 KB
maximum_object_size_in_memory 256 KB
cache_swap_low 90
cache_swap_high 95
ipcache_size 1024
fqdncache_size 1024
#REGRA AUTENTICACAO
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 3
authenticate_ttl 10 minutes
authenticate_ip_ttl 0
####################################################################
#
# Configuraç proxy estáca ------------------------------------------
#
ipcache_low 90
ipcache_high 95
#hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
mime_table /etc/squid/mime.conf
pid_filename /var/run/proxy.pid
debug_options ALL,1
log_fqdn off
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
acl all src 0.0.0.0/0
acl redeinterna src 10.33.0.0/24
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 82
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#=========================================================#
# Thunder 3
#=========================================================#
#acl thunder_lst url_regex -i "/etc/thunder/thunder.lst"
#cache deny thunder_lst
#cache_peer 10.33.0.1 parent 8080 0 proxy-only no-digest
#dead_peer_timeout 2 seconds
#cache_peer_access 10.33.0.1 allow thunder_lst
#cache_peer_access 10.33.0.1 deny all
http_access allow manager localhost
http_access allow redeinterna
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
cache_mgr localhost
cache_effective_user squid
cache_effective_group squid
visible_hostname localhost
dns_testnames registro.br
#acl snmppublic snmp_community public
#snmp_access allow snmppublic localhost
#snmp_access deny all
#snmp_incoming_address 0.0.0.0
#snmp_outgoing_address 255.255.255.255
# Configuraç de LOG
cache_log none
cache_store_log none
# Sem log de acesso
cache_access_log /var/log/squid/access.log
cache_access_log /var/log/squid/cache.log
# Setar TOS 8 em pacotes IP de arquivos em cache
zph_mode tos
zph_local 0x08
zph_parent 0
zph_option 136
visible_hostname localhost
cache_mgr localhost
mime_table /etc/squid/mime.conf
pid_filename /var/run/proxy.pid
cache_effective_user squid
cache_effective_group squid
#USER:Fernando
acl u_fernando proxy_auth fernando
logo o cominho do meu pid é:
pid_filename /var/run/proxy.pid
mas o arquivo não está lá.Criei e deixei o usuário squid como dono:
#chown -R squid /var/run/proxy.pid
#chmod -R 775 /var/run/proxy.pid
reiniciei a máquina e nada continua do mesmo jeito.
testando depois de criado o proxy.pid:
[root@samba ~]# service squid start
Starting Lusca..
[root@samba ~]# squid -k reconfigure
squid: ERROR: Could not send signal 1 to process 2942: (3) No such process
[root@samba ~]# tail /var/run/proxy.pid
3012
[root@samba ~]# ps aux |grep squid
root 3037 0.0 0.0 63268 788 pts/0 S+ 07:07 0:00 grep squid
root@samba ~]# service squid stop
Stopping Lusca..
squid: ERROR: Could not send signal 15 to process 3012: (3) No such process
Re: Lusca cache com autenticação
o arquivo com o pid do processo não é você que cria, é o próprio processo.
pra que serve? para algum gerenciador do processo verificar se o mesmo está ou não ativo, e no caso de ter que reiniciar ou parar o processo ele ter o PID.
a maneira mais fácil de você encontrar as configurações adequadas para sua distribuição é instalando o pacote dela, aí você copia o /etc/init.d/squid e o squid.conf, depois você desinstala o pacote e usa o do lusca com o mesmo arquivo do init, só adaptando aos novos caminhos, se preciso.