I solved the problem . I have installed 

aptitude install libcap2 libcap2-dev

and then recompiled squid and tproxy problem solved.
Thank you Amos for http://wiki.squid-cache.org/Features/Tproxy4  . please
also edit troubleshooting section for Ubuntu 9.04 (Jaunty) users to install
libcap2 libcap2-dev before compiling squid . 
AFAIK the simplest way to running the TPROXY is in Ubuntu 9.04 (Jaunty) .


Amos Jeffries-2 wrote:
> 
>>
>> Another thing maybe helpful
>> when i enable
>> http_port 3128 intercept
>> in squid.conf , following message appears in cache.log
>>
>> cache squid[14701]: IpIntercept.cc(132) NetfilterInterception:  NF
>> getsockopt(SO_ORIGINAL_DST) failed on FD 24: (11) Resource temporarily
>> unavailable
>>
> 
> I'm aware of that. 'intercept' is a NAT lookup, will throw up errors on
> any non-NAT input. 'tproxy' is a spoofed SOCKET lookup.
> 
> I don't think any of the basic Ubuntu kernels have the TPROXY options set
> yet. That would account for your custom ones working but the general
> kernels not.
> 
> Amos
> 
>>
>>
>> Omid Kosari wrote:
>>>
>>> I have Ubuntu 9.04 (Jaunty)  but also squid->client spoofing does not
>>> work
>>> . it shows squid's ip in tproxy mode .
>>>
>>> dmesg shows
>>> [   21.186636] ip_tables: (C) 2000-2006 Netfilter Core Team
>>> [   21.319881] NF_TPROXY: Transparent proxy support initialized, version
>>> 4.1.0
>>> [   21.319884] NF_TPROXY: Copyright (c) 2006-2007 BalaBit IT Ltd.
>>>
>>> and squid.conf has
>>>
>>> http_port 3128
>>> http_port 3129 tproxy
>>>
>>> i have compiled squid with these settings
>>> ./configure --datadir=/usr/share/squid3 --sysconfdir=/etc/squid3
>>> --mandir=/usr/share/man --localstatedir=/var
>>> --with-logdir=/var/log/squid
>>> --prefix=/usr --enable-inline --enable-async-io=8
>>> --enable-storeio="ufs,aufs" --enable-removal-policies="lru,heap"
>>> --enable-delay-pools --enable-cache-digests --enable-underscores
>>> --enable-icap-client --enable-follow-x-forwarded-for
>>> --with-filedescriptors=65536 --with-default-user=proxy
>>> --enable-large-files --enable-linux-netfilter
>>> and squid is 3.1.0.7
>>>
>>> the debug_options ALL,1 89,6 output is like when we have not
>>> debug_options
>>> at all !!
>>>
>>> i had tproxy with my custom kernels but upgraded to Ubuntu 9.04 (Jaunty)
>>> to prevent custom compiling of kernel and iptables but it does not work
>>>
>>>
>>>
>>> Amos Jeffries-2 wrote:
>>>>
>>>> rihad wrote:
>>>>> Looks like I'm the only one trying to use TProxy? Somebody else,
>>>>> please?
>>>>> To summarize: Squid does NOT spoof client's IP address when initiating
>>>>> connections on its own. Just as if there weren't a thing named
>>>>> "TProxy".
>>>>
>>>> We have had a fair few trying it with complete success when its the
>>>> only
>>>> thing used. This kind of thing seems to crop up with WCCP, for you and
>>>> one other.
>>>>
>>>> I'm not sure yet what the problem seems to be. Can you check your
>>>> cache.log for messages about "Stopping full transparency", the rest of
>>>> the message says why. I've updated the wiki troubleshooting section to
>>>> list the messages that appear when tproxy is turned off automatically
>>>> and what needs to be done to fix it.
>>>>
>>>> If you can't see any of those please can you set:
>>>>    debug_options ALL,1 89,6
>>>>
>>>> to see whats going on?
>>>>
>>>> I know the squid->client link should be 100% spoofed.  I'm not fully
>>>> certain the quid->server link is actually spoofed in all cases. Though
>>>> one report indicates it may be, I have not been able to test it locally
>>>> yet.
>>>>
>>>>
>>>> Amos
>>>>
>>>>
>>>>>
>>>>> Original message follows (not to be confused with top-posting):
>>>>>
>>>>>> Hello, I'm trying to get TProxy 4.1 to work as outlined here:
>>>>>> http://wiki.squid-cache.org/Features/Tproxy4
>>>>>> namely under Ubuntu 9.04 stable/testing mix with the following:
>>>>>> linux-image-2.6.28-11-server 2.6.28-11.42
>>>>>> iptables 1.4.3.2-2ubuntu1
>>>>>> squid-3.1.0.7.tar.bz2 from original sources
>>>>>>
>>>>>> Squid has been built this way:
>>>>>> $ /usr/local/squid/sbin/squid -v
>>>>>> Squid Cache: Version 3.1.0.7
>>>>>> configure options:  '--enable-linux-netfilter'
>>>>>> --with-squid=/home/guessed/squid-3.1.0.7 --enable-ltdl-convenience
>>>>>> (myself I only gave it --enable-linux-netfilter)
>>>>>>
>>>>>> squid.conf is pretty much whatever 'make install' created, with my
>>>>>> changes given at the end, after the blank line:
>>>>>>
>>>>>> acl manager proto cache_object
>>>>>> acl localhost src 127.0.0.1/32
>>>>>> acl to_localhost dst 127.0.0.0/8
>>>>>> acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
>>>>>> acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
>>>>>> acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
>>>>>> acl SSL_ports port 443
>>>>>> 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
>>>>>> acl CONNECT method CONNECT
>>>>>> http_access allow manager localhost
>>>>>> http_access deny manager
>>>>>> http_access deny !Safe_ports
>>>>>> http_access deny CONNECT !SSL_ports
>>>>>> http_access allow localnet
>>>>>> http_access deny all
>>>>>> http_port 3128
>>>>>> hierarchy_stoplist cgi-bin ?
>>>>>> refresh_pattern ^ftp:           1440    20%     10080
>>>>>> refresh_pattern ^gopher:        1440    0%      1440
>>>>>> refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
>>>>>> refresh_pattern .               0       20%     4320
>>>>>> coredump_dir /usr/local/squid/var/cache
>>>>>>
>>>>>> cache_dir ufs /usr/local/squid/var/cache 100 16 256
>>>>>> cache_mem 16 MB
>>>>>> http_port 3129 tproxy
>>>>>> visible_hostname tproxy
>>>>>>
>>>>>> Then I did:
>>>>>> iptables -t mangle -N DIVERT
>>>>>> iptables -t mangle -A DIVERT -j MARK --set-mark 1
>>>>>> iptables -t mangle -A DIVERT -j ACCEPT
>>>>>>
>>>>>> #Use DIVERT to prevent existing connections going through TPROXY
>>>>>> twice:
>>>>>>
>>>>>> iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
>>>>>>
>>>>>> #Mark all other (new) packets and use TPROXY to pass into Squid:
>>>>>>
>>>>>> iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY
>>>>>> --tproxy-mark 0x1/0x1 --on-port 3129
>>>>>>
>>>>>>
>>>>>> ip rule add fwmark 1 lookup 100
>>>>>> ip route add local 0.0.0.0/0 dev lo table 100
>>>>>>
>>>>>> #On each boot startup set:
>>>>>>
>>>>>> echo 1 > /proc/sys/net/ipv4/ip_forward
>>>>>>
>>>>>> ran squid -z and launched squid.
>>>>>>
>>>>>> My topology:
>>>>>> desktop where I sit: one link has address 192.168.0.1/24, the other
>>>>>> to
>>>>>> the Internet
>>>>>> Squid box: one link: 192.168.0.184/24 (bridged VMware interface on
>>>>>> the
>>>>>> same box as desktop), the other link is custom VMware interface
>>>>>> 192.168.1.1/24
>>>>>> The "client" box: single interface 192.168.1.2/24
>>>>>>
>>>>>> So, the squid box is directly connected to the outside on the one
>>>>>> side,
>>>>>> and to the client on the other. My desktop's routing knows to reach
>>>>>> the
>>>>>> client through the Squid box, and vice versa, so the port 80 traffic
>>>>>> under consideration flows through the Squid box in both ways.
>>>>>>
>>>>>> Now, after I do this on the "client":
>>>>>> $ telnet 192.168.0.1 80
>>>>>> GET / HTTP/1.0
>>>>>>
>>>>>> (correct webpage output)
>>>>>> Connection closed by foreign host.
>>>>>>
>>>>>> Nevertheless, in 192.168.0.1's webserver's logs I can see
>>>>>> 192.168.0.184
>>>>>> connecting, not the TProxied 192.168.1.2, as if working under the
>>>>>> plain
>>>>>> ole interception proxying I've been trying to get rid of!
>>>>>>
>>>>>> Why?! Counters on the Squid box do get bumped:
>>>>>>
>>>>>> $ sudo iptables -t mangle -L -v -n
>>>>>> Chain PREROUTING (policy ACCEPT 163 packets, 21851 bytes)
>>>>>>  pkts bytes target     prot opt in     out     source
>>>>>> destination
>>>>>>  2274  214K DIVERT     tcp  --  *      *       0.0.0.0/0
>>>>>> 0.0.0.0/0           socket
>>>>>>    16   920 TPROXY     tcp  --  *      *       0.0.0.0/0
>>>>>> 0.0.0.0/0           tcp dpt:80 TPROXY redirect 0.0.0.0:3129 mark
>>>>>> 0x1/0x1
>>>>>>
>>>>>> ...
>>>>>>
>>>>>> Chain DIVERT (1 references)
>>>>>>  pkts bytes target     prot opt in     out     source
>>>>>> destination
>>>>>>  2274  214K MARK       all  --  *      *       0.0.0.0/0
>>>>>> 0.0.0.0/0           MARK xset 0x1/0xffffffff
>>>>>>  2274  214K ACCEPT     all  --  *      *       0.0.0.0/0
>>>>>> 0.0.0.0/0
>>>>>>
>>>>>>
>>>>>> Thanks for any tips.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Please be using
>>>>    Current Stable Squid 2.7.STABLE6 or 3.0.STABLE15
>>>>    Current Beta Squid 3.1.0.7
>>>>
>>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/TProxy-not-faking-source-address.-tp23544464p23586637.html
>> Sent from the Squid - Users mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/TProxy-not-faking-source-address.-tp23544464p23591654.html
Sent from the Squid - Users mailing list archive at Nabble.com.

Reply via email to