On 10/08/2013 3:42 a.m., Michael Graham wrote:
Hi all,

I've had a look at this issue and I believe I have found the problem.
Just to recap I have:

follow_x_forwarded_for allow localhost
acl forwardTrafficSubnet1 src 172.21.120.0/24
cache_peer 172.21.120.24 parent 8881 0 proxy-only no-query
cache_peer_access 172.21.120.24 deny forwardTrafficSubnet1
never_direct deny forwardTrafficSubnet1
cache_peer_access 172.21.120.24 allow all
never_direct allow all

In the squid.conf but all traffic forwarded for 172.21.120.0/24
addresses get sent to the upstream proxy.

I found that this patch resolves the issue:

=== modified file 'src/neighbors.cc'
--- src/neighbors.cc    2013-06-07 04:35:25 +0000
+++ src/neighbors.cc    2013-08-09 15:25:57 +0000
@@ -204,7 +204,11 @@
          return do_ping;
ACLFilledChecklist checklist(p->access, request, NULL);
+#ifdef FOLLOW_X_FORWARDED_FOR
+    checklist.src_addr = request->indirect_client_addr;
+#else
      checklist.src_addr = request->client_addr;
+#endif
      checklist.my_addr = request->my_addr;
return (checklist.fastCheck() == ACCESS_ALLOWED);

Cheers,

Er. What Squid version are you using?

The checklist() constructor pulls those details out of the request object itself in the current Squid versions.

And the correct patch is to add:

#if FOLLOW_X_FORWARDED_FOR
        if (Config.onoff.acl_uses_indirect_client)
            src_addr = request->indirect_client_addr;
        else
#endif /* FOLLOW_X_FORWARDED_FOR */
            src_addr = request->client_addr;

Amos

Reply via email to