<div dir="ltr"><div>Hi Jonathan,</div><div><br></div><div>>>
Have you attempted to enable debugging ??</div><div>Yes, debugging was enabled but as I have pointed out, unfortunately it didn't give any information about the issue.</div><div>Maybe I was missing something? I don't know. debug_options was ALL in my squid.conf.</div><div><br></div><div>Thanks<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Jonathan Lee <<a href="mailto:jonathanlee571@gmail.com">jonathanlee571@gmail.com</a>>, 3 May 2024 Cum, 23:00 tarihinde şunu yazdı:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Have you attempted to enable debugging ??<div><br></div><div>Researching debug_options I found you can control detailed messages in the cache.log</div><div><div dir="ltr">Sent from my iPhone</div><div dir="ltr"><br><blockquote type="cite">On May 3, 2024, at 10:37, Emre Oksum <<a href="mailto:emreoksum@gmail.com" target="_blank">emreoksum@gmail.com</a>> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hi Amos, thank you for your reply.</div><div><br></div><div>>What your "for example,..." describes is Transparent Proxy (TPROXY).<br>>However, what you have in the config below is very different. The IP the<br>>client is connected **to** (not "from") is being pinned on outgoing<br>>connections.</div><div><br></div><div>Sorry for the misunderstanding. Maybe I wasn't clear with my wording. I only need to create a proxy instance where the IPv6 address that client uses to connect to Squid, is used by Squid to connect to remote locations. In this setup, server running Squid has around 50k IPv6 addresses assigned to it and client is expected to connect to Squid proxy with 50k different IPv6 addresses of the Squid and Squid should always use the IP address client connects to it as outgoing address. I'm not sure if I explained that well.</div><div><br></div><div>So if client connects to Squid proxy by the address of Squid let's say is feef:1234::1, Squid should use that IP for outgoing connections. That's not transparent proxy TPROXY because client and proxy is on different networks in this setup. Just like ordinary HTTP proxies.</div><div><br></div><div>>The FLOW_CONTROL_ERROR is not something produced by Squid. Likely it<br>>comes from the TCP stack and/or OS routing system.<br></div><div>Client connects to Squid by a script written in Golang. Thats where they get that error. On the Squid's access.log, I can see that error as TCP_TUNNEL_ABORTED/200</div><div><br></div><div>>Some improvements highlighted inline below.<br>>Nothing stands out to me as being related to your issues.</div><div>Thank you, I'll fix them however I don't think this issue is any related to the config.</div><div><br></div><div>>Any particular reason not to use the registered port 3128 ?<br>>(Not important, just wondering.)</div><div>My client wants to prevent proxies from being detected by bots so we picked a different port number but it's not the one I shared here. I edited numbers and addresses from the config before sharing it here.</div><div><br></div><div>>I/we will need to see the PCAP trace along with a cache.log generated<br>>using "debug_options ALL,6" to confirm a bug or identify other breakage<br>>though.</div><div>Interestingly, debug_options ALL does not log anything related to this issue to cache.log. That left me very confused about this problem.<br></div></div><div>I'm currently sending you the PCAP file. It's being uploaded. I would be appreciated if you can take a look at it.</div><div><br></div><div>Thanks<br></div><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Amos Jeffries <<a href="mailto:squid3@treenet.co.nz" target="_blank">squid3@treenet.co.nz</a>>, 3 May 2024 Cum, 19:31 tarihinde şunu yazdı:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 4/05/24 02:29, Emre Oksum wrote:<br>
> Hi everyone,<br>
> <br>
> I'm having a issue with Squid Cache 4.10 which I cannot fix for weeks <br>
> now and kinda lost at the moment. I will be appreciated if someone can <br>
> guide me through the issue I'm having.<br>
> I need to create a IPv6 HTTP proxy which should match the entry address <br>
> to outgoing TCP address. For example, if user is connecting from <br>
> fe80:abcd::1 it should exit the HTTP proxy from the same address. We got <br>
> like 50k addresses like this at the moment.<br>
<br>
What your "for example,..." describes is Transparent Proxy (TPROXY).<br>
<br>
<br>
However, what you have in the config below is very different. The IP the <br>
client is connected **to** (not "from") is being pinned on outgoing <br>
connections.<br>
<br>
<br>
> The issue is, client connecting to the proxy is receiving "EOF" or <br>
> "FLOW_CONTROL_ERROR" on their side.<br>
<br>
The FLOW_CONTROL_ERROR is not something produced by Squid. Likely it <br>
comes from the TCP stack and/or OS routing system.<br>
<br>
The EOF may be coming from either Squid or the OS. It also may be <br>
perfectly normal for the circumstances, or a side effect of an error <br>
elsewhere.<br>
<br>
<br>
To solve will require identifying exactly what is sending those signals, <br>
and why. Since they are signals going to the client, focus on the <br>
client->Squid connections (not the Squid->server ones you talk about <br>
testing below).<br>
<br>
<br>
<br>
> When I test connection by connecting <br>
> to <a href="http://whatismyip.com" rel="noreferrer" target="_blank">whatismyip.com</a> <<a href="http://whatismyip.com" rel="noreferrer" target="_blank">http://whatismyip.com</a>> everything works fine and <br>
> entry IP always matches with outgoing IP for each of the 50k addresses. <br>
> Client tells me this problem occurs both at GET and POST requests with <br>
> around 10 MB of data.<br>
<br>
Well, you are trying to manually force certain flow patterns that <br>
prohibit or break some major HTTP performance features. Some problems <br>
are to be expected.<br>
<br>
The issues which I expect to occur in your proxy would not show up in a <br>
trivial outgoing-IP or connectivity test.<br>
<br>
<br>
> I initially thought that could be related to server resources being <br>
> drained but upon inspecting server resource usage, Squid isn't even <br>
> topping at 100% CPU or RAM anytime so not that.<br>
> <br>
<br>
IMO, "FLOW_CONTROL_ERROR" is likely related to quantity of traffic <br>
flooding through the proxy to specific origin servers.<br>
<br>
The concept you are implementing of the outgoing TCP connection having <br>
the same IP as the incoming connection reduces the available TCP sockets <br>
by 25%. Prohibiting the OS from allocating ports on otherwise unused <br>
outgoing addresses when<br>
<br>
<br>
<br>
> My Squid.conf is like this at the moment:<br>
<br>
Some improvements highlighted inline below.<br>
Nothing stands out to me as being related to your issues.<br>
<br>
> <br>
> auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd<br>
> acl auth_users proxy_auth REQUIRED<br>
> http_access allow auth_users<br>
> http_access deny !auth_users<br>
<br>
Above two lines are backwards. Deny first, then allow.<br>
<br>
<br>
> cache deny all<br>
> dns_nameservers <nameservers here><br>
> dns_v4_first off<br>
> via off<br>
> forwarded_for delete<br>
> follow_x_forwarded_for deny all<br>
> server_persistent_connections off<br>
<br>
*If* the issue turns out to be congestion on Squid->server connections<br>
enabling this might be worthwhile. Otherwise it should be fine.<br>
<br>
<br>
> max_filedesc 1048576<br>
<br>
You can remove that line. "max_filedesc" was a RedHat hack from 20+ <br>
years ago when the feature was experimental.<br>
<br>
Any value you set on the line above, will be erased and replaced by the <br>
line below:<br>
<br>
<br>
> max_filedescriptors 1048576<br>
> workers 8<br>
> http_port [::0]:1182<br>
<br>
Above is just a complicated way to write:<br>
<br>
  http_port 1182<br>
<br>
<br>
Any particular reason not to use the registered port 3128 ?<br>
(Not important, just wondering.)<br>
<br>
<br>
> acl binding1 myip fe80:abcd::1<br>
> tcp_outgoing_address fe80:abcd::1 binding1<br>
> acl binding2 myip fe80:abcd::2<br>
> tcp_outgoing_address fe80:abcd::2 binding2<br>
> acl binding3 myip fe80:abcd::3<br>
> tcp_outgoing_address fe80:abcd::3 binding3<br>
> ...<br>
> ...<br>
> ...<br>
> access_log /var/log/squid/access.log squid<br>
<br>
> cache_store_log none<br>
<br>
You can erase this line.<br>
This is default setting. No need to manually set it.<br>
<br>
<br>
> cache deny all<br>
<br>
You can erase this line.<br>
This "cache deny all" exists earlier in the config.<br>
<br>
<br>
> <br>
> I've tried to get a PCAP file and realized when client tries to connect <br>
> with a new IPv6 address, Squid is not trying to open a new connection <br>
> instead tries to resume a previously opened one on a different outgoing <br>
> IPv6 address.<br>
<br>
Can you provide the trace demonstrating that issue?<br>
<br>
Although, as noted earlier your problems are apparently on the client <br>
connections. This is about server connections behaviour.<br>
<br>
<br>
> I set server_persistent_connections off which should have <br>
> disabled this behavior but it's still the same.<br>
<br>
Nod. Yes that should forbid re-use of connections.<br>
<br>
I/we will need to see the PCAP trace along with a cache.log generated <br>
using "debug_options ALL,6" to confirm a bug or identify other breakage <br>
though.<br>
<br>
<br>
<br>
> I tried using a newer <br>
> version of Squid but it behaved differently and did not follow my <br>
> outgoing address specifications and kept connecting on IPv4.<br>
<br>
That would seem to indicate that your IPv4 connectivity is better than <br>
your IPv6 connectivity. Later Squid use various "Happy Eyeballs" <br>
implementations for the server selection.<br>
<br>
You can usually work around this by configuring the DNS server specified <br>
by dns_nameservers to only deliver IPv6 results when a mixed set are <br>
available.<br>
<br>
<br>
HTH<br>
Amos<br>
_______________________________________________<br>
squid-users mailing list<br>
<a href="mailto:squid-users@lists.squid-cache.org" target="_blank">squid-users@lists.squid-cache.org</a><br>
<a href="https://lists.squid-cache.org/listinfo/squid-users" rel="noreferrer" target="_blank">https://lists.squid-cache.org/listinfo/squid-users</a><br>
</blockquote></div></div></div>
<span>_______________________________________________</span><br><span>squid-users mailing list</span><br><span><a href="mailto:squid-users@lists.squid-cache.org" target="_blank">squid-users@lists.squid-cache.org</a></span><br><span><a href="https://lists.squid-cache.org/listinfo/squid-users" target="_blank">https://lists.squid-cache.org/listinfo/squid-users</a></span><br></div></blockquote></div></div></blockquote></div>