[squid-users] Problem with 'delay_access' using acl external

Alex Rousskov rousskov at measurement-factory.com
Tue Sep 10 21:11:15 UTC 2024


On 2024-09-10 13:54, Carlos André wrote:

> My "delay_class" simple DON'T with if I use a acl external (helper - 
> LDAP or winbind [ext_wbinfo_group_acl], same problem), delay_class work 
> ok using a acl proxy_auth or acl src.... but nothing with a external.

I believe your configuration is suffering from two semi-independent 
problems:


Problem A:

External ACLs are so called "slow" or "asynchronous" ACLs. They should 
not be used together with directives that do not support "slow" ACLs. It 
is not explicitly documented, but delay_access directive does _not_ 
support slow ACLs AFAICT. It only supports "fast" ACLs.

N.B. Due to ACL caching side effects, using slow ACLs with directives 
that do not support them may appear to "work" in certain cases, but it 
is not supported and should not be relied upon.


> I need to use external bcoz I use groups to specify Internet 
> speed/policy per user.

I recommend checking your Group_Internet ACL at http_access time instead 
of delay_access time; http_access directive supports slow ACLs and 
should be evaluated before delay_access is.

Use annotate_transaction or annotate_client ACLs to remember whether 
Group_Internet ACL has matched at http_access evaluation time. Use a 
"note" ACL to check whether those annotations have been set. The "note" 
ACL is a "fast" ACL. annotate_transaction documentation in 
squid.conf.documented has a relevant example. There are also potentially 
relevant examples in bug #4993 report (among others):
https://bugs.squid-cache.org/show_bug.cgi?id=4993


Problem B:

> 2024/09/10 14:30:28 kid1| WARNING: Group_Internet ACL is used in context 
> without an ALE state. Assuming mismatch.

I have not checked carefully, but this could be a bug fixed in v6. The 
corresponding commit says "delay_pool_access lacked ... details beyond 
src/dst addresses".

Upgrade to v6+. If you are still getting a similar runtime WARNING, then 
there is another Squid bug that needs to be fixed.


HTH,

Alex.


> Bellow there my sample squid.conf:
> ================================================================
> 
> acl SSL_ports port 443 6443 8443 8080 8008
> acl Safe_ports port 80          # http
> acl Safe_ports port 21          # ftp
> acl Safe_ports port 443         # https
> 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
> 
> http_access deny !Safe_ports
> http_access deny CONNECT !SSL_ports
> http_access allow localhost manager
> http_access deny manager
> http_access deny to_localhost
> 
> http_port 8080
> 
> cache_dir ufs /var/spool/squid 8192 32 128
> 
> coredump_dir /var/spool/squid
> 
> auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth -k 
> /etc/squid/HTTP.keytab -s HTTP/SERVER at REALM.LAN
> auth_param negotiate children 20 startup=2 idle=2
> 
> external_acl_type AD ttl=360 children-startup=2 children-max=20 
> children-idle=2 %LOGIN /usr/lib64/squid/ext_ldap_group_acl -Z -K -R -d 
> -h 192.168.0.10 -b "dc=realm,dc=lan" -D 
> "cn=squid,cn=Users,dc=realm,dc=lan" -w password1234 -f 
> "(&(cn=%u)(memberof=cn=%g,cn=Users,dc=realm,dc=lan))"
> 
> acl kerb-auth proxy_auth REQUIRED
> 
> acl Group_Internet external AD Internet_Access
> acl User proxy_auth carlos at REALM.LAN
> acl src_carlos_ip src 192.168.0.100
> 
> http_access allow Group_Internet # work!
> http_access deny all
> 
> 
> delay_pools 2
> delay_class 1 2
> delay_class 2 2
> 
> delay_parameters 1   4096000/4096000  2048000/2048000
> delay_parameters 2   2048000/2048000   512000/512000
> 
> delay_access 1 allow Group_Internet  # won't work (Squid ignore it and 
> pass to next delay_access)
> #delay_access 1 allow User           # work!
> #delay_access 1 allow src_carlos_ip  # work!
> delay_access 1 deny all
> 
> delay_access 2 allow all
> ###############################################################
> 
> #
> delay_access 1 allow Group_Internet  # won't work (Squid ignore it and 
> pass to next delay_access)
> #delay_access 1 allow User           # work!
> #delay_access 1 allow src_carlos_ip  # work!
> delay_access 1 deny all
> 
> #
> delay_access 2 allow all
> ================================================================
> 
> 
> 
> 
> 
> _______________________________________________
> squid-users mailing list
> squid-users at lists.squid-cache.org
> https://lists.squid-cache.org/listinfo/squid-users



More information about the squid-users mailing list