Hi, <br><br>Here is my situation : <br><br><ul><li>CentOS 5.2 ( my own built kernel 2.6.25.11-TProxy-ReiserFS with this patch : <a href="http://www.balabit.com/downloads/files/tproxy/tproxy-kernel-2.6.25-20080519-165031-1211208631.tar.bz2">http://www.balabit.com/downloads/files/tproxy/tproxy-kernel-2.6.25-20080519-165031-1211208631.tar.bz2</a>)</li>
<li>iptables v1.4.3-rc1( <a href="ftp://ftp.netfilter.org/pub/iptables/snapshot/iptables-20090206.tar.bz2">ftp://ftp.netfilter.org/pub/iptables/snapshot/iptables-20090206.tar.bz2</a> )</li><li>squid 3.1.0.5 RC ( <a href="http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.0.5.tar.bz2">http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.0.5.tar.bz2</a> ) and compiled with these options : &quot;&#39;--enable-poll&#39; &#39;--enable-storeio=aufs,diskd,ufs&#39; &#39;--with-pthreads&#39; &#39;--enable-removal-policies=heap,lru&#39; &#39;--enable-<br>
linux-netfilter&#39; &#39;--enable-useragent-log&#39; &#39;--enable-referer-log&#39; &#39;--enable-underscores&#39; &#39;--disable-dependency-tracking&#39; &#39;--disable-ident-lookups&#39; &#39;--with-large-files&#39; &#39;--enable-follow-x-forwarded-for&#39; &#39;--enable-cache-digests&#39; &#39;--enable-delay-pools&#39; &#39;--enable-truncate&#39; &#39;--prefix=/usr&#39; &#39;--localstatedir=/var&#39; &#39;--sysconfdir=/etc/squid&#39; &#39;--with-logdir=/var/log/squid&#39; &#39;--enable-wccpv2&#39; &#39;--enable-wccp&#39; &#39;--exec_prefix=/usr&#39; &#39;--bindir=/usr/sbin&#39; &#39;--libexecdir=/usr/lib/squid&#39; &#39;--with-filedescriptors=8192&#39; --with-squid=/usr/src/squid-3.1.0.5 --enable-ltdl-convenience\&quot;</li>
<li>with following iptables rules : <br>[root@CACHE1 squid-3.1.0.5]# service iptables status<br>Table: filter<br>Chain INPUT (policy ACCEPT)<br>num&nbsp; target&nbsp;&nbsp;&nbsp;&nbsp; prot opt source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br><br>Chain FORWARD (policy ACCEPT)<br>
num&nbsp; target&nbsp;&nbsp;&nbsp;&nbsp; prot opt source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br><br>Chain OUTPUT (policy ACCEPT)<br>num&nbsp; target&nbsp;&nbsp;&nbsp;&nbsp; prot opt source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br><br>Table: mangle<br>Chain PREROUTING (policy ACCEPT)<br>
num&nbsp; target&nbsp;&nbsp;&nbsp;&nbsp; prot opt source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>1&nbsp;&nbsp;&nbsp; DIVERT&nbsp;&nbsp;&nbsp;&nbsp; tcp&nbsp; --&nbsp; <a href="http://0.0.0.0/0">0.0.0.0/0</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://0.0.0.0/0">0.0.0.0/0</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; socket <br>2&nbsp;&nbsp;&nbsp; TPROXY&nbsp;&nbsp;&nbsp;&nbsp; tcp&nbsp; --&nbsp; <a href="http://0.0.0.0/0">0.0.0.0/0</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://0.0.0.0/0">0.0.0.0/0</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcp dpt:80 TPROXY redirect <a href="http://0.0.0.0:3129">0.0.0.0:3129</a> mark 0x1/0x1<br>
<br>Chain INPUT (policy ACCEPT)<br>num&nbsp; target&nbsp;&nbsp;&nbsp;&nbsp; prot opt source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br><br>Chain FORWARD (policy ACCEPT)<br>num&nbsp; target&nbsp;&nbsp;&nbsp;&nbsp; prot opt source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br><br>Chain OUTPUT (policy ACCEPT)<br>
num&nbsp; target&nbsp;&nbsp;&nbsp;&nbsp; prot opt source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br><br>Chain POSTROUTING (policy ACCEPT)<br>num&nbsp; target&nbsp;&nbsp;&nbsp;&nbsp; prot opt source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br><br>Chain DIVERT (1 references)<br>num&nbsp; target&nbsp;&nbsp;&nbsp;&nbsp; prot opt source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
1&nbsp;&nbsp;&nbsp; MARK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp; --&nbsp; <a href="http://0.0.0.0/0">0.0.0.0/0</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://0.0.0.0/0">0.0.0.0/0</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MARK xset 0x1/0xffffffff <br>2&nbsp;&nbsp;&nbsp; ACCEPT&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp; --&nbsp; <a href="http://0.0.0.0/0">0.0.0.0/0</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://0.0.0.0/0">0.0.0.0/0</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
<br>[root@CACHE1 squid-3.1.0.5]#&nbsp;</li><li>With following iproute2 rules : [root@CACHE1 squid-3.1.0.5]# ip ru list<br>0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from all lookup 255 <br>32765:&nbsp; from all fwmark 0x1 lookup 100 <br>32766:&nbsp; from all lookup main <br>
32767:&nbsp; from all lookup default <br>[root@CACHE1 squid-3.1.0.5]# ip ro list table 100<br>local default dev lo&nbsp; scope host <br>[root@CACHE1 squid-3.1.0.5]# <br></li><li>with following http_port line in squid : http_port 3129 tproxy</li>
</ul>everything seems to be working and squid run with these messages in cache.log : <br>2009/02/07 22:22:43| Accepting&nbsp; spoofing HTTP connections at <a href="http://0.0.0.0:3129">0.0.0.0:3129</a>, FD 16.<br><br>my requests seems to be redirected to port 3129 as I expected and the pages are loading propertly. But the problem is that when I go to site <a href="http://myipaddress.co.uk/">http://myipaddress.co.uk/</a> it gives me the cache ip address instead of my own client ip address. here is the tethereal output for one of my requests : <br>
<br>[root@CACHE1 squid-3.1.0.5]# tethereal host 85.247.162.18 -n <br>Running as user &quot;root&quot; and group &quot;root&quot;. This could be dangerous.<br>Capturing on eth1<br>&nbsp; 0.000000 85.247.162.18 -&gt; 213.171.218.15 TCP 57226 &gt; 80 [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=1969980 TSER=0 WS=2<br>
&nbsp; 0.000024 213.171.218.15 -&gt; 85.247.162.18 TCP 80 &gt; 57226 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=10639608 TSER=1969980 WS=7<br>&nbsp; 0.002265 85.247.162.18 -&gt; 213.171.218.15 TCP 57226 &gt; 80 [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=1969981 TSER=10639608<br>
&nbsp; 0.004521 85.247.162.18 -&gt; 213.171.218.15 HTTP GET / HTTP/1.1 <br>&nbsp; 0.004529 213.171.218.15 -&gt; 85.247.162.18 TCP 80 &gt; 57226 [ACK] Seq=1 Ack=386 Win=6912 Len=0 TSV=10639612 TSER=1969981<br>&nbsp; 0.402945 213.171.218.15 -&gt; 85.247.162.18 HTTP HTTP/1.0 200 OK&nbsp; (text/html)<br>
&nbsp; 0.402950 213.171.218.15 -&gt; 85.247.162.18 HTTP Continuation or non-HTTP traffic<br>&nbsp; 0.412859 85.247.162.18 -&gt; 213.171.218.15 TCP 57226 &gt; 80 [ACK] Seq=386 Ack=1449 Win=8736 Len=0 TSV=1970084 TSER=10640007<br>&nbsp; 0.412867 213.171.218.15 -&gt; 85.247.162.18 HTTP Continuation or non-HTTP traffic<br>
&nbsp; 0.413273 85.247.162.18 -&gt; 213.171.218.15 TCP 57226 &gt; 80 [ACK] Seq=386 Ack=1579 Win=8736 Len=0 TSV=1970084 TSER=10640007<br>&nbsp; 0.418901 85.247.162.18 -&gt; 213.171.218.15 TCP 57226 &gt; 80 [ACK] Seq=386 Ack=2213 Win=11632 Len=0 TSV=1970085 TSER=10640017<br>
<br>Where my client ip address is 85.247.162.18 and my cache server ip address is 85.247.162.2. This means that the client ip spoofing is not working with tproxy4. Can any guide me ?<br><br>-- <br>Regards<br>Hamid Hashemi<br>