Search squid archive

Re: OpenBSD + PF + Squid: forwarding loop

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2013-06-01 2:51, Amos Jeffries wrote:
On 1/06/2013 6:13 p.m., Rob Sheldon wrote:

Can you explain a little more about "non-intercept traffic" vs. "intercept traffic"? I thought the only difference was whether the browser sent an absolute URL in the GET request ("non-intercept") or a pathname + "Host:" header in the GET request ("intercept"). Am I missing something?

That is pretty much the HTTP level difference. However the TCP/IP
level also has its own differences. When acccept() happens PF hands
Squid its own listening IP:port details on direct traffic, and the
clients original IP:port details on intercepted traffic.

That difference affects the Squid security systems which for
intercept ports check those IP:port against the HTTP level Host:
header detail of the clients destination. If they match Squid can use
DNS to try and locate better origin servers. If they dont match Squid
does the safe things and transparently relays it to that same IP:port
the client was apparently contacting. So if you configure a browser to
use a intercept port directly the IP:port received will be Squid's
ones, the security checks guaranteed to fail, and a loop begins as
Squid contacts itself.

OK, that makes sense, thanks.

Hmmm ... but, I'm pretty sure that rdr-to rewrites the destination address in the packet. From http://www.openbsd.org/faq/pf/rdr.html: "The redirection rule does apply and the destination address gets replaced with that of the internal server."

So an rdr-to rule should cause Squid to be seeing itself as the destination address...

If you set debug_options 11,2 you can get IP:port details on each
connection Squid is using to correlate with those traces and see if
anything unexpected is showing up.

Thanks! This is something I've been looking for. (I did find http://wiki.squid-cache.org/KnowledgeBase/DebugSections but couldn't quickly make heads or tails out of it.)

Here's where the loop is happening (192.168.10.164 is the test machine):

2013/06/01 03:02:20.447| src/client_side.cc(2298) parseHttpRequest: HTTP Client local=192.168.0.1:3129 remote=192.168.10.164:36365 FD 9 flags=33 2013/06/01 03:02:20.447| src/client_side.cc(2299) parseHttpRequest: HTTP Client REQUEST:
---------
GET / HTTP/1.0^M
Host: www.associatedtechs.com^M
^M

----------
2013/06/01 03:02:22.586| src/http.cc(2177) sendRequest: HTTP Server local=192.168.0.1:25276 remote=192.168.0.1:3129 FD 12 flags=1

...That sort of does look to me like Squid's confused about the destination address.

Here's the rest of that log up until the forwarding loop warning:

2013/06/01 03:02:22.587| src/http.cc(2178) sendRequest: HTTP Server REQUEST:
---------
GET / HTTP/1.1^M
Host: www.associatedtechs.com^M
Via: 1.0 firewall.local (squid/3.2.7)^M
X-Forwarded-For: 192.168.10.164^M
Cache-Control: max-age=259200^M
Connection: keep-alive^M
^M

----------
2013/06/01 03:02:22.587| src/client_side.cc(2298) parseHttpRequest: HTTP Client local=192.168.0.1:3129 remote=192.168.0.1:25276 FD 13 flags=33 2013/06/01 03:02:22.587| src/client_side.cc(2299) parseHttpRequest: HTTP Client REQUEST:
---------
GET / HTTP/1.1^M
Host: www.associatedtechs.com^M
Via: 1.0 firewall.local (squid/3.2.7)^M
X-Forwarded-For: 192.168.10.164^M
Cache-Control: max-age=259200^M
Connection: keep-alive^M
^M

----------
2013/06/01 03:02:22.587| WARNING: Forwarding loop detected for:...


- R.

--
[__ Robert Sheldon
[__ No Problem
[__ Information technology support and services
[__ (530) 575-0278




[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux